From 81f80d8c1c9898ae1c26534a3287a47220390f5c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 5 May 2010 04:00:24 -0400 Subject: [PATCH] more ices --- .gitignore | 10 + 130161/reduce-ice | 2 +- 131566/reduce-ice | 2 +- 133948/reduce-ice | 2 +- 134547/reduce-ice | 2 +- 136309/reduce-ice | 2 +- 137054/reduce-ice | 2 +- 137062/reduce-ice | 2 +- 137376/reduce-ice | 2 +- 137526/reduce-ice | 2 +- 137799/reduce-ice | 2 +- 137999/reduce-ice | 2 +- 138209/reduce-ice | 2 +- 138653/reduce-ice | 2 +- 147345/reduce-ice | 2 +- 147533/reduce-ice | 2 +- 147739/reduce-ice | 2 +- 148285/reduce-ice | 2 +- 151832/reduce-ice | 2 +- 152043/reduce-ice | 2 +- 152840/reduce-ice | 2 +- 153708/reduce-ice | 2 +- 157395/reduce-ice | 2 +- 169513/reduce-ice | 2 +- 179353/reduce-ice | 2 +- 182374/reduce-ice | 2 +- 195695/reduce-ice | 2 +- 198528/reduce-ice | 2 +- 200089/reduce-ice | 2 +- 201605/reduce-ice | 2 +- 209253/reduce-ice | 2 +- 210125/reduce-ice | 2 +- 218158/reduce-ice | 2 +- 218508/reduce-ice | 2 +- 225977/reduce-ice | 2 +- 228889/reduce-ice | 2 +- 264653/parse_.i | 13723 +++++ 264653/parse_.i.0 | 19585 +++++++ 264653/parse_.i.1 | 13723 +++++ 287391/reduce-ice | 13 + 287391/svolume_mmx.i | 9 + 287391/svolume_mmx.i.0 | 8804 +++ 287391/svolume_mmx.i.1 | 3785 ++ 287391/svolume_mmx.i.2 | 130 + 287391/svolume_mmx.i.3 | 102 + 287391/svolume_mmx.i.4 | 75 + 290097/reduce-ice | 13 + 290097/test.c | 29 + 290097/test.i.0 | 20 + 318007/buf0buf.i | 7 + 318007/buf0buf.i.0 | 38166 +++++++++++++ 318007/buf0buf.i.1 | 46 + 318007/buf0buf.i.2 | 9 + 318007/reduce-ice | 13 + PR31899/reduce-ice | 2 +- bfin-1400/reduce-ice | 2 +- bfin-2598/reduce-ice | 2 +- bfin-2599/reduce-ice | 2 +- bfin-2625/reduce-ice | 2 +- bfin-2630/reduce-ice | 2 +- bfin-3510/reduce-ice | 2 +- bfin-4444/reduce-ice | 2 +- bfin-5624/qfontengine.i | 14 + bfin-5624/qfontengine.i.0 | 59075 ++++++++++++++++++++ bfin-5624/qfontengine.i.1 | 37400 +++++++++++++ bfin-5624/qfontengine.i.2 | 44 + bfin-5624/qfontengine.i.3 | 15 + bfin-5624/qfontengine.i.tar.gz | Bin 0 -> 269595 bytes bfin-5624/reduce-ice | 13 + bfin-asm-math/reduce-ice | 2 +- bfin-boost-sync-fetch/reduce-ice | 2 +- bfin-gc-sections/reduce-ice | 2 +- bfin-get-user/reduce-ice | 2 +- bfin-rets-insn/reduce-ice | 2 +- bfin-ssize/reduce-ice | 2 +- bfin-strcmp/reduce-ice | 2 +- hppa-ICE-insn-constraints/reduce-ice | 2 +- hppa-O1/reduce-ice | 2 +- not-unused/reduce-ice | 2 +- reduce-ice | 2 +- register-spill-fschedule-insns/reduce-ice | 2 +- s390x/reduce-ice | 2 +- sb-bigloo/bigloo.c | 11 + sb-bigloo/bigloo.i | 8 + sb-bigloo/bigloo.i.0 | 25822 +++++++++ sb-bigloo/bigloo.i.1 | 15839 ++++++ sb-bigloo/bigloo.i.2 | 41 + sb-bigloo/bigloo.i.3 | 7 + sb-bigloo/reduce-ice | 14 + sh-ghostscript/gdevifno.i | 41 + sh-ghostscript/gdevifno.i.0 | 3442 ++ sh-ghostscript/gdevifno.i.1 | 101 + sh-ghostscript/gdevifno.i.2 | 75 + sh-ghostscript/gdevifno.i.orig.bz2 | Bin 0 -> 29540 bytes sh-ghostscript/reduce-ice | 13 + 95 files changed, 240293 insertions(+), 56 deletions(-) create mode 100644 .gitignore create mode 100644 264653/parse_.i create mode 100644 264653/parse_.i.0 create mode 100644 264653/parse_.i.1 create mode 100755 287391/reduce-ice create mode 100644 287391/svolume_mmx.i create mode 100644 287391/svolume_mmx.i.0 create mode 100644 287391/svolume_mmx.i.1 create mode 100644 287391/svolume_mmx.i.2 create mode 100644 287391/svolume_mmx.i.3 create mode 100644 287391/svolume_mmx.i.4 create mode 100755 290097/reduce-ice create mode 100644 290097/test.c create mode 100644 290097/test.i.0 create mode 100644 318007/buf0buf.i create mode 100644 318007/buf0buf.i.0 create mode 100644 318007/buf0buf.i.1 create mode 100644 318007/buf0buf.i.2 create mode 100755 318007/reduce-ice create mode 100644 bfin-5624/qfontengine.i create mode 100644 bfin-5624/qfontengine.i.0 create mode 100644 bfin-5624/qfontengine.i.1 create mode 100644 bfin-5624/qfontengine.i.2 create mode 100644 bfin-5624/qfontengine.i.3 create mode 100644 bfin-5624/qfontengine.i.tar.gz create mode 100755 bfin-5624/reduce-ice create mode 100644 sb-bigloo/bigloo.c create mode 100644 sb-bigloo/bigloo.i create mode 100644 sb-bigloo/bigloo.i.0 create mode 100644 sb-bigloo/bigloo.i.1 create mode 100644 sb-bigloo/bigloo.i.2 create mode 100644 sb-bigloo/bigloo.i.3 create mode 100755 sb-bigloo/reduce-ice create mode 100644 sh-ghostscript/gdevifno.i create mode 100644 sh-ghostscript/gdevifno.i.0 create mode 100644 sh-ghostscript/gdevifno.i.1 create mode 100644 sh-ghostscript/gdevifno.i.2 create mode 100644 sh-ghostscript/gdevifno.i.orig.bz2 create mode 100755 sh-ghostscript/reduce-ice diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..06c72be --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +log +*.log +*.o +*~ +*.bak +*.ok +.gdb_history +core +a.out +*.unfiltered diff --git a/130161/reduce-ice b/130161/reduce-ice index fd99279..33cefdb 100755 --- a/130161/reduce-ice +++ b/130161/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.i CC=gcc diff --git a/131566/reduce-ice b/131566/reduce-ice index 840b3ab..e105f0b 100755 --- a/131566/reduce-ice +++ b/131566/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.i CC=gcc-4.1.1 diff --git a/133948/reduce-ice b/133948/reduce-ice index 80368ca..6f6c76c 100755 --- a/133948/reduce-ice +++ b/133948/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/134547/reduce-ice b/134547/reduce-ice index a500053..32da57e 100755 --- a/134547/reduce-ice +++ b/134547/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/136309/reduce-ice b/136309/reduce-ice index 7c2e35e..8f6e825 100755 --- a/136309/reduce-ice +++ b/136309/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++ diff --git a/137054/reduce-ice b/137054/reduce-ice index 2a4baf3..01c9004 100755 --- a/137054/reduce-ice +++ b/137054/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++-3.4.6 diff --git a/137062/reduce-ice b/137062/reduce-ice index 2a4baf3..01c9004 100755 --- a/137062/reduce-ice +++ b/137062/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++-3.4.6 diff --git a/137376/reduce-ice b/137376/reduce-ice index 4fb09cb..6431d2f 100755 --- a/137376/reduce-ice +++ b/137376/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++ diff --git a/137526/reduce-ice b/137526/reduce-ice index a423905..bd071b7 100755 --- a/137526/reduce-ice +++ b/137526/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=jsmath.i CC=gcc diff --git a/137799/reduce-ice b/137799/reduce-ice index 80c183d..8f4f59c 100755 --- a/137799/reduce-ice +++ b/137799/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++ diff --git a/137999/reduce-ice b/137999/reduce-ice index b673baf..f955c52 100755 --- a/137999/reduce-ice +++ b/137999/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.i CC=gcc-3.4.6 diff --git a/138209/reduce-ice b/138209/reduce-ice index 516a675..80b7daf 100755 --- a/138209/reduce-ice +++ b/138209/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.i CC=gcc-3.4.6 diff --git a/138653/reduce-ice b/138653/reduce-ice index fbd364e..e6da28a 100755 --- a/138653/reduce-ice +++ b/138653/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++ diff --git a/147345/reduce-ice b/147345/reduce-ice index 74541bf..3454293 100755 --- a/147345/reduce-ice +++ b/147345/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.i CC=gcc diff --git a/147533/reduce-ice b/147533/reduce-ice index bee24ac..7f9e196 100755 --- a/147533/reduce-ice +++ b/147533/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=vartest.i CC=gcc diff --git a/147739/reduce-ice b/147739/reduce-ice index 26e2e59..17882e0 100755 --- a/147739/reduce-ice +++ b/147739/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=gconf.i CC=gcc diff --git a/148285/reduce-ice b/148285/reduce-ice index a189314..05b32ba 100755 --- a/148285/reduce-ice +++ b/148285/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=gdevpdfe.i CC=${CC:-gcc} diff --git a/151832/reduce-ice b/151832/reduce-ice index 790a98a..285f102 100755 --- a/151832/reduce-ice +++ b/151832/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=pic.i CC=gcc diff --git a/152043/reduce-ice b/152043/reduce-ice index 0660580..a026fab 100755 --- a/152043/reduce-ice +++ b/152043/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=fp_mul_comba.c CC=gcc diff --git a/152840/reduce-ice b/152840/reduce-ice index f937acc..d78954f 100755 --- a/152840/reduce-ice +++ b/152840/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/153708/reduce-ice b/153708/reduce-ice index ff49bba..d69477e 100755 --- a/153708/reduce-ice +++ b/153708/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/157395/reduce-ice b/157395/reduce-ice index b31c7d0..99cb381 100755 --- a/157395/reduce-ice +++ b/157395/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/169513/reduce-ice b/169513/reduce-ice index 544fe63..2beed44 100755 --- a/169513/reduce-ice +++ b/169513/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=video_out_dfb.i CC=gcc diff --git a/179353/reduce-ice b/179353/reduce-ice index f2769b2..e157445 100755 --- a/179353/reduce-ice +++ b/179353/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/182374/reduce-ice b/182374/reduce-ice index 6480e7f..cc7bcf1 100755 --- a/182374/reduce-ice +++ b/182374/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=test.i CC=gcc diff --git a/195695/reduce-ice b/195695/reduce-ice index b59b769..7daebdb 100755 --- a/195695/reduce-ice +++ b/195695/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=xorg.i CC=gcc-4.2.2 diff --git a/198528/reduce-ice b/198528/reduce-ice index 813e241..26a55b2 100755 --- a/198528/reduce-ice +++ b/198528/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++ diff --git a/200089/reduce-ice b/200089/reduce-ice index 32fedff..e526586 100755 --- a/200089/reduce-ice +++ b/200089/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=mandel.i CC=gcc diff --git a/201605/reduce-ice b/201605/reduce-ice index 7544f04..b7d08b8 100755 --- a/201605/reduce-ice +++ b/201605/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++-4.1.2 diff --git a/209253/reduce-ice b/209253/reduce-ice index e51b3d6..00f1fea 100755 --- a/209253/reduce-ice +++ b/209253/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ice.ii CC=g++ diff --git a/210125/reduce-ice b/210125/reduce-ice index 3725b0a..d80c27b 100755 --- a/210125/reduce-ice +++ b/210125/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/218158/reduce-ice b/218158/reduce-ice index 426c799..eefe102 100755 --- a/218158/reduce-ice +++ b/218158/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=af_volnorm.i CC=gcc diff --git a/218508/reduce-ice b/218508/reduce-ice index a4708c2..55e5abc 100755 --- a/218508/reduce-ice +++ b/218508/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=test.mi CC=gcc diff --git a/225977/reduce-ice b/225977/reduce-ice index 019d316..99eedc8 100755 --- a/225977/reduce-ice +++ b/225977/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=texenvprogram.i CC=gcc diff --git a/228889/reduce-ice b/228889/reduce-ice index 3640cca..20cb270 100755 --- a/228889/reduce-ice +++ b/228889/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=test.i CC=gcc diff --git a/264653/parse_.i b/264653/parse_.i new file mode 100644 index 0000000..2e24a58 --- /dev/null +++ b/264653/parse_.i @@ -0,0 +1,13723 @@ + 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<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<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, "", strlen(""), enc), + register_symid(368, "", strlen(""), 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))<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))<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)("")))<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))<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))<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 . 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)<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)<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); +} diff --git a/264653/parse_.i.0 b/264653/parse_.i.0 new file mode 100644 index 0000000..830a4fc --- /dev/null +++ b/264653/parse_.i.0 @@ -0,0 +1,19585 @@ +# 1 "parse.c" +# 1 "/home/hramrach/ruby-1.9.1-rc1//" +# 1 "" +# 1 "" +# 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<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<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, "", strlen(""), enc), + register_symid(368, "", strlen(""), 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))<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))<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)("")))<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))<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))<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 . 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)<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)<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); +} diff --git a/264653/parse_.i.1 b/264653/parse_.i.1 new file mode 100644 index 0000000..2e24a58 --- /dev/null +++ b/264653/parse_.i.1 @@ -0,0 +1,13723 @@ + 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<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<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, "", strlen(""), enc), + register_symid(368, "", strlen(""), 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))<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))<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)("")))<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))<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))<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 . 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)<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)<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); +} diff --git a/287391/reduce-ice b/287391/reduce-ice new file mode 100755 index 0000000..38f03fe --- /dev/null +++ b/287391/reduce-ice @@ -0,0 +1,13 @@ +#!/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 ] diff --git a/287391/svolume_mmx.i b/287391/svolume_mmx.i new file mode 100644 index 0000000..786f006 --- /dev/null +++ b/287391/svolume_mmx.i @@ -0,0 +1,9 @@ +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"); +} diff --git a/287391/svolume_mmx.i.0 b/287391/svolume_mmx.i.0 new file mode 100644 index 0000000..cfe2624 --- /dev/null +++ b/287391/svolume_mmx.i.0 @@ -0,0 +1,8804 @@ +# 1 "pulsecore/svolume_mmx.c" +# 1 "" +# 1 "" +# 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); + } + +} diff --git a/287391/svolume_mmx.i.1 b/287391/svolume_mmx.i.1 new file mode 100644 index 0000000..f0e7b16 --- /dev/null +++ b/287391/svolume_mmx.i.1 @@ -0,0 +1,3785 @@ +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); + } +} diff --git a/287391/svolume_mmx.i.2 b/287391/svolume_mmx.i.2 new file mode 100644 index 0000000..39c6252 --- /dev/null +++ b/287391/svolume_mmx.i.2 @@ -0,0 +1,130 @@ +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); + } +} diff --git a/287391/svolume_mmx.i.3 b/287391/svolume_mmx.i.3 new file mode 100644 index 0000000..e2de434 --- /dev/null +++ b/287391/svolume_mmx.i.3 @@ -0,0 +1,102 @@ +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"); +} diff --git a/287391/svolume_mmx.i.4 b/287391/svolume_mmx.i.4 new file mode 100644 index 0000000..08c8465 --- /dev/null +++ b/287391/svolume_mmx.i.4 @@ -0,0 +1,75 @@ +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"); +} diff --git a/290097/reduce-ice b/290097/reduce-ice new file mode 100755 index 0000000..45d8763 --- /dev/null +++ b/290097/reduce-ice @@ -0,0 +1,13 @@ +#!/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" diff --git a/290097/test.c b/290097/test.c new file mode 100644 index 0000000..5b5af72 --- /dev/null +++ b/290097/test.c @@ -0,0 +1,29 @@ +#include + +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; +} diff --git a/290097/test.i.0 b/290097/test.i.0 new file mode 100644 index 0000000..d490ce6 --- /dev/null +++ b/290097/test.i.0 @@ -0,0 +1,20 @@ +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); +} diff --git a/318007/buf0buf.i b/318007/buf0buf.i new file mode 100644 index 0000000..e5b8f19 --- /dev/null +++ b/318007/buf0buf.i @@ -0,0 +1,7 @@ +foo() +{ + volatile long int lock; + retry: + if (__sync_fetch_and_add(&lock, 0x00100000)) + goto retry; +} diff --git a/318007/buf0buf.i.0 b/318007/buf0buf.i.0 new file mode 100644 index 0000000..85d492a --- /dev/null +++ b/318007/buf0buf.i.0 @@ -0,0 +1,38166 @@ +# 1 "buf/buf0buf.c" +# 1 "" +# 1 "" +# 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)); +} diff --git a/318007/buf0buf.i.1 b/318007/buf0buf.i.1 new file mode 100644 index 0000000..7ed48b5 --- /dev/null +++ b/318007/buf0buf.i.1 @@ -0,0 +1,46 @@ +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); + } + } +} diff --git a/318007/buf0buf.i.2 b/318007/buf0buf.i.2 new file mode 100644 index 0000000..9f8c069 --- /dev/null +++ b/318007/buf0buf.i.2 @@ -0,0 +1,9 @@ +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; +} diff --git a/318007/reduce-ice b/318007/reduce-ice new file mode 100755 index 0000000..769125b --- /dev/null +++ b/318007/reduce-ice @@ -0,0 +1,13 @@ +#!/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" diff --git a/PR31899/reduce-ice b/PR31899/reduce-ice index 54dbe8d..48204a8 100755 --- a/PR31899/reduce-ice +++ b/PR31899/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=enblend.ii CC=g++ diff --git a/bfin-1400/reduce-ice b/bfin-1400/reduce-ice index e541eb9..16b85e3 100755 --- a/bfin-1400/reduce-ice +++ b/bfin-1400/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=fe_TestDsp.ii CC=bfin-uclinux-gcc diff --git a/bfin-2598/reduce-ice b/bfin-2598/reduce-ice index 985d0cc..35eb4d1 100755 --- a/bfin-2598/reduce-ice +++ b/bfin-2598/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=test.i CC=bfin-uclinux-gcc diff --git a/bfin-2599/reduce-ice b/bfin-2599/reduce-ice index 65758e0..e7b1f1d 100755 --- a/bfin-2599/reduce-ice +++ b/bfin-2599/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# echo "set FILE, CC, CFLAGS, STRING" exit 1 diff --git a/bfin-2625/reduce-ice b/bfin-2625/reduce-ice index a36530f..5a6dd42 100755 --- a/bfin-2625/reduce-ice +++ b/bfin-2625/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=netlib.i CC=bfin-uclinux-gcc diff --git a/bfin-2630/reduce-ice b/bfin-2630/reduce-ice index 577ccc5..08761ee 100755 --- a/bfin-2630/reduce-ice +++ b/bfin-2630/reduce-ice @@ -3,7 +3,7 @@ # Run like: # multidelta -level=# ./reduce-ice $FILE # levels: 0 0 1 1 2 2 10 10 -# +# FILE=ip_output.i CC=bfin-uclinux-gcc diff --git a/bfin-3510/reduce-ice b/bfin-3510/reduce-ice index 7eef97a..10cb8f4 100755 --- a/bfin-3510/reduce-ice +++ b/bfin-3510/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/bfin-4444/reduce-ice b/bfin-4444/reduce-ice index 9c35e46..d7774fd 100755 --- a/bfin-4444/reduce-ice +++ b/bfin-4444/reduce-ice @@ -3,7 +3,7 @@ # 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 diff --git a/bfin-5624/qfontengine.i b/bfin-5624/qfontengine.i new file mode 100644 index 0000000..f3d873a --- /dev/null +++ b/bfin-5624/qfontengine.i @@ -0,0 +1,14 @@ +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; + } + } +} diff --git a/bfin-5624/qfontengine.i.0 b/bfin-5624/qfontengine.i.0 new file mode 100644 index 0000000..199d103 --- /dev/null +++ b/bfin-5624/qfontengine.i.0 @@ -0,0 +1,59075 @@ +# 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 "" +#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 "" +#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(c ## LL) +#define Q_UINT64_C(c) static_cast(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 class QUintForSize { private: typedef void Type; }; +template <> class QUintForSize<4> { public: typedef quint32 Type; }; +template <> class QUintForSize<8> { public: typedef quint64 Type; }; +template class QUintForType : public QUintForSize { }; +typedef QUintForType::Type quintptr; + +template class QIntForSize { private: typedef void Type; }; +template <> class QIntForSize<4> { public: typedef qint32 Type; }; +template <> class QIntForSize<8> { public: typedef qint64 Type; }; +template class QIntForType : public QIntForSize { }; +typedef QIntForType::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 +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 +inline const T &qMin(const T &a, const T &b) { if (a < b) return a; return b; } +template +inline const T &qMax(const T &a, const T &b) { if (a < b) return b; return a; } +template +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 class QBasicAtomicPointer; + + +template +class QGlobalStatic +{ +public: + QBasicAtomicPointer pointer; + bool destroyed; +}; + + +template +class QGlobalStaticDeleter +{ +public: + QGlobalStatic &globalStatic; + QGlobalStaticDeleter(QGlobalStatic &_globalStatic) + : globalStatic(_globalStatic) + { } + + inline ~QGlobalStaticDeleter() + { + delete globalStatic.pointer; + globalStatic.pointer = 0; + globalStatic.destroyed = true; + } +}; + +#define Q_GLOBAL_STATIC_INIT(TYPE,NAME) static QGlobalStatic 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 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 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 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(this) : static_cast(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 inline bool qIsDetached(T &) { return true; } + +template +class QTypeInfo +{ +public: + enum { + isPointer = false, + isComplex = true, + isStatic = true, + isLarge = (sizeof(T)>sizeof(void*)), + isDummy = false + }; +}; + +template +class QTypeInfo +{ +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 { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 +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 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 operator|(Flags::enum_type f1, Flags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Flags::enum_type f1, QFlags 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 +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(d_ptr); } inline const Class ##Private* d_func() const { return reinterpret_cast(d_ptr); } friend class Class ##Private; + + + + +#define Q_DECLARE_PRIVATE_D(Dptr,Class) inline Class ##Private* d_func() { return reinterpret_cast(Dptr); } inline const Class ##Private* d_func() const { return reinterpret_cast(Dptr); } friend class Class ##Private; + + + + +#define Q_DECLARE_PUBLIC(Class) inline Class* q_func() { return static_cast(q_ptr); } inline const Class* q_func() const { return static_cast(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 + void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); +template +inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy); + +template + void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); +template +inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &); + +template + RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +template + RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); +template + RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); + +} + +template +inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest) +{ + while (begin != end) + *dest++ = *begin++; + return dest; +} + +template +inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest) +{ + while (begin != end) + *--dest = *--end; + return dest; +} + +template +inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2) +{ + for (; first1 != last1; ++first1, ++first2) + if (!(*first1 == *first2)) + return false; + return true; +} + +template +inline void qFill(ForwardIterator first, ForwardIterator last, const T &val) +{ + for (; first != last; ++first) + *first = val; +} + +template +inline void qFill(Container &container, const T &val) +{ + qFill(container.begin(), container.end(), val); +} + +template +inline InputIterator qFind(InputIterator first, InputIterator last, const T &val) +{ + while (first != last && !(*first == val)) + ++first; + return first; +} + +template +inline typename Container::const_iterator qFind(const Container &container, const T &val) +{ + return qFind(container.constBegin(), container.constEnd(), val); +} + +template +inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n) +{ + for (; first != last; ++first) + if (*first == value) + ++n; +} + +template +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 +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 +class qLess +{ +public: + inline bool operator()(const T &t1, const T &t2) const + { + return (t1 < t2); + } +}; + +template +class qGreater +{ +public: + inline bool operator()(const T &t1, const T &t2) const + { + return (t2 < t1); + } +}; + + +template +inline void qSort(RandomAccessIterator start, RandomAccessIterator end) +{ + if (start != end) + QAlgorithmsPrivate::qSortHelper(start, end, *start); +} + +template +inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) +{ + if (start != end) + QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan); +} + +template +inline void qSort(Container &c) +{ + + + + + if (!c.empty()) + QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin()); +} + +template +inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end) +{ + if (start != end) + QAlgorithmsPrivate::qStableSortHelper(start, end, *start); +} + +template +inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) +{ + if (start != end) + QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan); +} + +template +inline void qStableSort(Container &c) +{ + + + + + if (!c.empty()) + QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin()); +} + +template + 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 + RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan); +} + +template + typename Container::const_iterator qLowerBound(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); +} + +template + 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 + RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan); +} + +template + typename Container::const_iterator qUpperBound(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); +} + +template + 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 + RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) +{ + return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan); +} + +template + typename Container::const_iterator qBinaryFind(const Container &container, const T &value) +{ + return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess()); +} + +template + void qDeleteAll(ForwardIterator begin, ForwardIterator end) +{ + while (begin != end) { + delete *begin; + ++begin; + } +} + +template +inline void qDeleteAll(const Container &c) +{ + qDeleteAll(c.begin(), c.end()); +} + + + + + +namespace QAlgorithmsPrivate { + +template + 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 +inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) +{ + qSortHelper(begin, end, dummy, qLess()); +} + +template + void qReverse(RandomAccessIterator begin, RandomAccessIterator end) +{ + --end; + while (begin < end) + qSwap(*begin++, *end--); +} + +template + void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end) +{ + qReverse(begin, middle); + qReverse(middle, end); + qReverse(begin, end); +} + +template + 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 + 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 +inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) +{ + qStableSortHelper(begin, end, dummy, qLess()); +} + +template + 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 + 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 + 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 +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 &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 +inline bool QBasicAtomicPointer::isTestAndSetNative() +{ return false; } +template +inline bool QBasicAtomicPointer::isTestAndSetWaitFree() +{ return false; } + +#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE + +template +inline bool QBasicAtomicPointer::isFetchAndStoreNative() +{ return false; } +template +inline bool QBasicAtomicPointer::isFetchAndStoreWaitFree() +{ return false; } + +#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE + +template +inline bool QBasicAtomicPointer::isFetchAndAddNative() +{ return false; } +template +inline bool QBasicAtomicPointer::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 +inline bool QBasicAtomicPointer::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 +inline bool QBasicAtomicPointer::testAndSetRelaxed(T *expectedValue, T *newValue) +{ + return testAndSetOrdered(expectedValue, newValue); +} + +template +inline bool QBasicAtomicPointer::testAndSetAcquire(T *expectedValue, T *newValue) +{ + return testAndSetOrdered(expectedValue, newValue); +} + +template +inline bool QBasicAtomicPointer::testAndSetRelease(T *expectedValue, T *newValue) +{ + return testAndSetOrdered(expectedValue, newValue); +} + + + +template +inline T *QBasicAtomicPointer::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 +inline T *QBasicAtomicPointer::fetchAndStoreRelaxed(T *newValue) +{ + return fetchAndStoreOrdered(newValue); +} + +template +inline T *QBasicAtomicPointer::fetchAndStoreAcquire(T *newValue) +{ + return fetchAndStoreOrdered(newValue); +} + +template +inline T *QBasicAtomicPointer::fetchAndStoreRelease(T *newValue) +{ + return fetchAndStoreOrdered(newValue); +} + + + +template +inline T *QBasicAtomicPointer::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 +inline T *QBasicAtomicPointer::fetchAndAddRelaxed(qptrdiff valueToAdd) +{ + return fetchAndAddOrdered(valueToAdd); +} + +template +inline T *QBasicAtomicPointer::fetchAndAddAcquire(qptrdiff valueToAdd) +{ + return fetchAndAddOrdered(valueToAdd); +} + +template +inline T *QBasicAtomicPointer::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 +class QAtomicPointer : public QBasicAtomicPointer +{ +public: + inline QAtomicPointer(T *value = 0) + { + + + + QBasicAtomicPointer::_q_value = value; + } + inline QAtomicPointer(const QAtomicPointer &other) + { + + + + QBasicAtomicPointer::_q_value = other._q_value; + } + + inline QAtomicPointer &operator=(T *value) + { + (void) QBasicAtomicPointer::operator=(value); + return *this; + } + + inline QAtomicPointer &operator=(const QAtomicPointer &other) + { + (void) QBasicAtomicPointer::operator=(other); + return *this; + } +# 186 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h" +}; + + + + + + + +template +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 +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(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 { 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 Q ##C ##Iterator { typedef typename Q ##C::const_iterator const_iterator; Q ##C c; const_iterator i; public: inline Q ##C ##Iterator(const Q ##C &container) : c(container), i(c.constBegin()) {} inline Q ##C ##Iterator &operator=(const Q ##C &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 QMutable ##C ##Iterator { typedef typename Q ##C::iterator iterator; typedef typename Q ##C::const_iterator const_iterator; Q ##C *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutable ##C ##Iterator(Q ##C &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 &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 Q ##C ##Iterator { typedef typename Q ##C::const_iterator const_iterator; typedef const_iterator Item; Q ##C c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline Q ##C ##Iterator(const Q ##C &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline Q ##C ##Iterator &operator=(const Q ##C &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 QMutable ##C ##Iterator { typedef typename Q ##C::iterator iterator; typedef typename Q ##C::const_iterator const_iterator; typedef iterator Item; Q ##C *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutable ##C ##Iterator(Q ##C &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 &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 + struct iterator + { + + typedef _Category iterator_category; + + typedef _Tp value_type; + + typedef _Distance difference_type; + + typedef _Pointer pointer; + + typedef _Reference reference; + }; + + + + + + + + template + 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 + 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 + struct iterator_traits + { + 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 + 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 + 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 + 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 + inline typename iterator_traits<_InputIterator>::difference_type + distance(_InputIterator __first, _InputIterator __last) + { + + return std::__distance(__first, __last, + std::__iterator_category(__first)); + } + + template + inline void + __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) + { + + + while (__n--) + ++__i; + } + + template + inline void + __advance(_BidirectionalIterator& __i, _Distance __n, + bidirectional_iterator_tag) + { + + + + if (__n > 0) + while (__n--) + ++__i; + else + while (__n++) + --__i; + } + + template + 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 + 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 + class __normal_iterator; + +} + +namespace std __attribute__ ((__visibility__ ("default"))) { + + struct __true_type { }; + struct __false_type { }; + + template + struct __truth_type + { typedef __false_type __type; }; + + template<> + struct __truth_type + { typedef __true_type __type; }; + + + + template + struct __traitor + { + enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; + typedef typename __truth_type<__value>::__type __type; + }; + + + + template + struct __traitand + { + enum { __value = bool(_Sp::__value) && bool(_Tp::__value) }; + typedef typename __truth_type<__value>::__type __type; + }; + + + template + struct __are_same + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __are_same<_Tp, _Tp> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + template + struct __is_void + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_void + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_integer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + 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 + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_floating + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_floating + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_pointer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __is_pointer<_Tp*> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_normal_iterator + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator, + _Container> > + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + struct __is_arithmetic + : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > + { }; + + + + + template + struct __is_fundamental + : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> > + { }; + + + + + template + struct __is_scalar + : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > + { }; + + + + + template + struct __is_char + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_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 + struct __is_byte + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + + + + template + 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 + struct __enable_if + { }; + + template + struct __enable_if + { typedef _Tp __type; }; + + + + template + struct __conditional_type + { typedef _Iftrue __type; }; + + template + struct __conditional_type + { typedef _Iffalse __type; }; + + + + template + struct __add_unsigned + { + private: + typedef __enable_if::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __add_unsigned + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned + { typedef unsigned char __type; }; + + template<> + struct __add_unsigned + { typedef unsigned short __type; }; + + template<> + struct __add_unsigned + { typedef unsigned int __type; }; + + template<> + struct __add_unsigned + { typedef unsigned long __type; }; + + template<> + struct __add_unsigned + { typedef unsigned long long __type; }; + + + template<> + struct __add_unsigned; + + template<> + struct __add_unsigned; + + + + template + struct __remove_unsigned + { + private: + typedef __enable_if::__value, _Tp> __if_type; + + public: + typedef typename __if_type::__type __type; + }; + + template<> + struct __remove_unsigned + { typedef signed char __type; }; + + template<> + struct __remove_unsigned + { typedef signed char __type; }; + + template<> + struct __remove_unsigned + { typedef short __type; }; + + template<> + struct __remove_unsigned + { typedef int __type; }; + + template<> + struct __remove_unsigned + { typedef long __type; }; + + template<> + struct __remove_unsigned + { typedef long long __type; }; + + + template<> + struct __remove_unsigned; + + template<> + struct __remove_unsigned; + + + + template + inline bool + __is_null_pointer(_Type* __ptr) + { return __ptr == 0; } + + template + inline bool + __is_null_pointer(_Type) + { return false; } + + + + template::__value> + struct __promote + { typedef double __type; }; + + template + struct __promote<_Tp, false> + { typedef _Tp __type; }; + + template + struct __promote_2 + { + private: + typedef typename __promote<_Tp>::__type __type1; + typedef typename __promote<_Up>::__type __type2; + + public: + typedef __typeof__(__type1() + __type2()) __type; + }; + + template + 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 + 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 + 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 + class reverse_iterator + : public 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 + 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 + inline bool + operator==(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __x.base() == __y.base(); } + + template + inline bool + operator<(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y.base() < __x.base(); } + + template + inline bool + operator!=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__x == __y); } + + template + inline bool + operator>(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y < __x; } + + template + inline bool + operator<=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__y < __x); } + + template + inline bool + operator>=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__x < __y); } + + template + inline typename reverse_iterator<_Iterator>::difference_type + operator-(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y.base() - __x.base(); } + + template + 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 + inline bool + operator==(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __x.base() == __y.base(); } + + template + inline bool + operator<(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y.base() < __x.base(); } + + template + inline bool + operator!=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__x == __y); } + + template + inline bool + operator>(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y < __x; } + + template + inline bool + operator<=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__y < __x); } + + template + inline bool + operator>=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__x < __y); } + + template + 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 + class back_insert_iterator + : public iterator + { + 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 + 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 + class front_insert_iterator + : public iterator + { + 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 + 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 + class insert_iterator + : public iterator + { + 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 + 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 + 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 + __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 + inline bool + operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { return __lhs.base() == __rhs.base(); } + + template + inline bool + operator==(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { return __lhs.base() == __rhs.base(); } + + template + inline bool + operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { return __lhs.base() != __rhs.base(); } + + template + inline bool + operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { return __lhs.base() != __rhs.base(); } + + + template + inline bool + operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { return __lhs.base() < __rhs.base(); } + + template + inline bool + operator<(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { return __lhs.base() < __rhs.base(); } + + template + inline bool + operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { return __lhs.base() > __rhs.base(); } + + template + inline bool + operator>(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { return __lhs.base() > __rhs.base(); } + + template + inline bool + operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { return __lhs.base() <= __rhs.base(); } + + template + inline bool + operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { return __lhs.base() <= __rhs.base(); } + + template + inline bool + operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { return __lhs.base() >= __rhs.base(); } + + template + inline bool + operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { return __lhs.base() >= __rhs.base(); } + + + + + + template + 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 + 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 + 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 + class allocator; + + template + struct char_traits; + + template, + typename _Alloc = allocator<_CharT> > + class basic_string; + + template<> struct char_traits; + + typedef basic_string 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 + 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 + inline bool + operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) + { return streamoff(__lhs) == streamoff(__rhs); } + + template + inline bool + operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) + { return streamoff(__lhs) != streamoff(__rhs); } + + + + + + typedef fpos streampos; + + typedef fpos 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 > + class basic_ios; + + template > + class basic_streambuf; + + template > + class basic_istream; + + template > + class basic_ostream; + + template > + class basic_iostream; + + template, + typename _Alloc = allocator<_CharT> > + class basic_stringbuf; + + template, + typename _Alloc = allocator<_CharT> > + class basic_istringstream; + + template, + typename _Alloc = allocator<_CharT> > + class basic_ostringstream; + + template, + typename _Alloc = allocator<_CharT> > + class basic_stringstream; + + template > + class basic_filebuf; + + template > + class basic_ifstream; + + template > + class basic_ofstream; + + template > + class basic_fstream; + + template > + class istreambuf_iterator; + + template > + 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 ios; + typedef basic_streambuf streambuf; + typedef basic_istream istream; + typedef basic_ostream ostream; + typedef basic_iostream iostream; + typedef basic_stringbuf stringbuf; + typedef basic_istringstream istringstream; + typedef basic_ostringstream ostringstream; + typedef basic_stringstream stringstream; + typedef basic_filebuf filebuf; + typedef basic_ifstream ifstream; + typedef basic_ofstream ofstream; + typedef basic_fstream 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 + 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 + const _Value __numeric_traits_integer<_Value>::__min; + + template + const _Value __numeric_traits_integer<_Value>::__max; + + template + const bool __numeric_traits_integer<_Value>::__is_signed; + + template + 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 + 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 + const int __numeric_traits_floating<_Value>::__max_digits10; + + template + const bool __numeric_traits_floating<_Value>::__is_signed; + + template + const int __numeric_traits_floating<_Value>::__digits10; + + template + const int __numeric_traits_floating<_Value>::__max_exponent10; + + template + struct __numeric_traits + : public __conditional_type::__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 + 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 + 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 + inline bool + operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __x.first == __y.first && __x.second == __y.second; } + + + template + 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 + inline bool + operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__x == __y); } + + + template + inline bool + operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __y < __x; } + + + template + inline bool + operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__y < __x); } + + + template + 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 + 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 + struct __iter_swap + { + template + 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 + { + template + 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 + 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 + _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 + 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 + 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 + 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 + inline const _Tp& + max(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + + if (__comp(__a, __b)) + return __b; + return __a; + } + + + + + template::__value> + struct __niter_base + { + static _Iterator + __b(_Iterator __it) + { return __it; } + }; + + template + struct __niter_base<_Iterator, true> + { + static typename _Iterator::iterator_type + __b(_Iterator __it) + { return __it.base(); } + }; + + + template::__value> + struct __miter_base + { + static _Iterator + __b(_Iterator __it) + { return __it; } + }; + + template + struct __miter_base<_Iterator, true> + { + static typename _Iterator::iterator_type + __b(_Iterator __it) + { return __it.base(); } + }; + + + + + + + + template + struct __copy_move + { + template + 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 + { + template + 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 + struct __copy_move<_IsMove, true, random_access_iterator_tag> + { + template + 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 + 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 + struct char_traits; + + template + class istreambuf_iterator; + + template + class ostreambuf_iterator; + + template + 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 + 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 + 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 + 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 + 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 + struct __copy_move_backward + { + template + 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 + { + template + 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 + struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> + { + template + 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 + 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 + 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 + 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 + inline typename + __gnu_cxx::__enable_if::__value, void>::__type + __fill_a(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __value) + { + for (; __first != __last; ++__first) + *__first = __value; + } + + template + 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 + 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(__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 + 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 + inline typename + __gnu_cxx::__enable_if::__value, _OutputIterator>::__type + __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) + { + for (; __n > 0; --__n, ++__first) + *__first = __value; + return __first; + } + + template + 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 + 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 + 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 + struct __equal + { + template + static bool + equal(_II1 __first1, _II1 __last1, _II2 __first2) + { + for (; __first1 != __last1; ++__first1, ++__first2) + if (!(*__first1 == *__first2)) + return false; + return true; + } + }; + + template<> + struct __equal + { + template + static bool + equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) + { + return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) + * (__last1 - __first1)); + } + }; + + template + 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 + struct __lc_rai + { + template + static _II1 + __newlast1(_II1, _II1 __last1, _II2, _II2) + { return __last1; } + + template + static bool + __cnd2(_II __first, _II __last) + { return __first != __last; } + }; + + template<> + struct __lc_rai + { + template + 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 + static bool + __cnd2(_RAI, _RAI) + { return true; } + }; + + template + struct __lexicographical_compare + { + template + static bool __lc(_II1, _II1, _II2, _II2); + }; + + template + template + 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 + { + template + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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(__c); } + + static int_type + to_int_type(const char_type& __c) + { return static_cast(__c); } + + static bool + eq_int_type(const int_type& __c1, const int_type& __c2) + { return __c1 == __c2; } + + static int_type + eof() + { return static_cast((-1)); } + + static int_type + not_eof(const int_type& __c) + { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } + }; + + template + 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 + 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 + 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 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 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 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 + struct char_traits : public __gnu_cxx::char_traits<_CharT> + { }; + + + + template<> + struct char_traits + { + 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(__builtin_memchr(__s, __a, __n)); } + + static char_type* + move(char_type* __s1, const char_type* __s2, size_t __n) + { return static_cast(__builtin_memmove(__s1, __s2, __n)); } + + static char_type* + copy(char_type* __s1, const char_type* __s2, size_t __n) + { return static_cast(__builtin_memcpy(__s1, __s2, __n)); } + + static char_type* + assign(char_type* __s, size_t __n, char_type __a) + { return static_cast(__builtin_memset(__s, __a, __n)); } + + static char_type + to_char_type(const int_type& __c) + { return static_cast(__c); } + + + + static int_type + to_int_type(const char_type& __c) + { return static_cast(static_cast(__c)); } + + static bool + eq_int_type(const int_type& __c1, const int_type& __c2) + { return __c1 == __c2; } + + static int_type + eof() { return static_cast((-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 + bool + has_facet(const locale&) throw(); + + template + const _Facet& + use_facet(const locale&); + + + template + bool + isspace(_CharT, const locale&); + + template + bool + isprint(_CharT, const locale&); + + template + bool + iscntrl(_CharT, const locale&); + + template + bool + isupper(_CharT, const locale&); + + template + bool + islower(_CharT, const locale&); + + template + bool + isalpha(_CharT, const locale&); + + template + bool + isdigit(_CharT, const locale&); + + template + bool + ispunct(_CharT, const locale&); + + template + bool + isxdigit(_CharT, const locale&); + + template + bool + isalnum(_CharT, const locale&); + + template + bool + isgraph(_CharT, const locale&); + + template + _CharT + toupper(_CharT, const locale&); + + template + _CharT + tolower(_CharT, const locale&); + + + class ctype_base; + template + class ctype; + template<> class ctype; + + + + template + class ctype_byname; + + + class codecvt_base; + template + class codecvt; + template<> class codecvt; + + + + template + class codecvt_byname; + + + + template > + class num_get; + template > + class num_put; + + template class numpunct; + template class numpunct_byname; + + + template + class collate; + template class + collate_byname; + + + class time_base; + template > + class time_get; + template > + class time_get_byname; + template > + class time_put; + template > + class time_put_byname; + + + class money_base; + + template > + class money_get; + template > + class money_put; + + template + class moneypunct; + template + class moneypunct_byname; + + + class messages_base; + template + class messages; + template + 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 + 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 + struct rebind + { typedef new_allocator<_Tp1> other; }; + + new_allocator() throw() { } + + new_allocator(const new_allocator&) throw() { } + + template + 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 + inline bool + operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) + { return true; } + + template + 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 + class allocator; + + + template<> + class allocator + { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef void* pointer; + typedef const void* const_pointer; + typedef void value_type; + + template + struct rebind + { typedef allocator<_Tp1> other; }; + }; + + + + + + + + template + 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 + struct rebind + { typedef allocator<_Tp1> other; }; + + allocator() throw() { } + + allocator(const allocator& __a) throw() + : __gnu_cxx::new_allocator<_Tp>(__a) { } + + template + allocator(const allocator<_Tp1>&) throw() { } + + ~allocator() throw() { } + + + }; + + template + inline bool + operator==(const allocator<_T1>&, const allocator<_T2>&) + { return true; } + + template + inline bool + operator==(const allocator<_Tp>&, const allocator<_Tp>&) + { return true; } + + template + inline bool + operator!=(const allocator<_T1>&, const allocator<_T2>&) + { return false; } + + template + inline bool + operator!=(const allocator<_Tp>&, const allocator<_Tp>&) + { return false; } + + + + + + extern template class allocator; + extern template class allocator; + + + +#undef __glibcxx_base_allocator + + + template + struct __alloc_swap + { static void _S_do_it(_Alloc&, _Alloc&) { } }; + + template + struct __alloc_swap<_Alloc, false> + { + static void + _S_do_it(_Alloc& __one, _Alloc& __two) + { + + if (__one != __two) + swap(__one, __two); + } + }; + + + template + struct __alloc_neq + { + static bool + _S_do_it(const _Alloc&, const _Alloc&) + { return false; } + }; + + template + 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 + 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 + 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 + 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 + struct unary_function + { + typedef _Arg argument_type; + + + typedef _Result result_type; + }; + + + + + template + 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 + struct plus : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x + __y; } + }; + + + template + struct minus : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x - __y; } + }; + + + template + struct multiplies : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x * __y; } + }; + + + template + struct divides : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x / __y; } + }; + + + template + struct modulus : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x % __y; } + }; + + + template + 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 + struct equal_to : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x == __y; } + }; + + + template + struct not_equal_to : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x != __y; } + }; + + + template + struct greater : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x > __y; } + }; + + + template + struct less : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x < __y; } + }; + + + template + struct greater_equal : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x >= __y; } + }; + + + template + 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 + struct logical_and : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x && __y; } + }; + + + template + struct logical_or : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x || __y; } + }; + + + template + struct logical_not : public unary_function<_Tp, bool> + { + bool + operator()(const _Tp& __x) const + { return !__x; } + }; + + + + + template + struct bit_and : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x & __y; } + }; + + template + struct bit_or : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x | __y; } + }; + + template + 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 + class unary_negate + : public unary_function + { + 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 + inline unary_negate<_Predicate> + not1(const _Predicate& __pred) + { return unary_negate<_Predicate>(__pred); } + + + template + class binary_negate + : public binary_function + { + 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 + 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 + 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 + inline pointer_to_unary_function<_Arg, _Result> + ptr_fun(_Result (*__x)(_Arg)) + { return pointer_to_unary_function<_Arg, _Result>(__x); } + + + template + 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 + inline pointer_to_binary_function<_Arg1, _Arg2, _Result> + ptr_fun(_Result (*__x)(_Arg1, _Arg2)) + { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } + + + template + struct _Identity : public unary_function<_Tp,_Tp> + { + _Tp& + operator()(_Tp& __x) const + { return __x; } + + const _Tp& + operator()(const _Tp& __x) const + { return __x; } + }; + + template + 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 + 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 + 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 + class const_mem_fun_t : public unary_function + { + 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 + 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 + 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 + 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 + class const_mem_fun1_t : public binary_function + { + 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 + 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 + 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 + inline mem_fun_t<_Ret, _Tp> + mem_fun(_Ret (_Tp::*__f)()) + { return mem_fun_t<_Ret, _Tp>(__f); } + + template + inline const_mem_fun_t<_Ret, _Tp> + mem_fun(_Ret (_Tp::*__f)() const) + { return const_mem_fun_t<_Ret, _Tp>(__f); } + + template + inline mem_fun_ref_t<_Ret, _Tp> + mem_fun_ref(_Ret (_Tp::*__f)()) + { return mem_fun_ref_t<_Ret, _Tp>(__f); } + + template + 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 + inline mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template + 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 + 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 + 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 + class binder1st + : public unary_function + { + 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 + 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 + class binder2nd + : public unary_function + { + 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 + 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 + 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 iterator; + typedef __gnu_cxx::__normal_iterator + const_iterator; + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_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::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(&_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(-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()(__s, _M_data()) + || less()(_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 + 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::__max) + return __gnu_cxx::__numeric_traits::__max; + else if (__d < __gnu_cxx::__numeric_traits::__min) + return __gnu_cxx::__numeric_traits::__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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + static _CharT* + _S_construct_aux(_Integer __beg, _Integer __end, + const _Alloc& __a, __true_type) + { return _S_construct(static_cast(__beg), __end, __a); } + + template + 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 + static _CharT* + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, + input_iterator_tag); + + + + template + 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 + 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 + 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 + basic_string<_CharT,_Traits,_Alloc> + operator+(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Alloc>& __rhs); + + + + + + + + template + basic_string<_CharT,_Traits,_Alloc> + operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); + + + + + + + + template + 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 + 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 + inline bool + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) == 0; } + + template + 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 + inline bool + operator==(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) == 0; } + + + + + + + + template + 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 + inline bool + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return !(__lhs == __rhs); } + + + + + + + + template + inline bool + operator!=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return !(__lhs == __rhs); } + + + + + + + + template + 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 + inline bool + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) < 0; } + + + + + + + + template + inline bool + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) < 0; } + + + + + + + + template + 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 + inline bool + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) > 0; } + + + + + + + + template + inline bool + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) > 0; } + + + + + + + + template + 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 + inline bool + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) <= 0; } + + + + + + + + template + inline bool + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) <= 0; } + + + + + + + + template + 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 + inline bool + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) >= 0; } + + + + + + + + template + inline bool + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) >= 0; } + + + + + + + + template + 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 + 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 + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, + basic_string<_CharT, _Traits, _Alloc>& __str); + + template<> + basic_istream& + operator>>(basic_istream& __is, basic_string& __str); +# 2418 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3 + template + 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 + 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 + 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& + getline(basic_istream& __in, basic_string& __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 + 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 + const _CharT + basic_string<_CharT, _Traits, _Alloc>:: + _Rep::_S_terminal = _CharT(); + + template + const typename basic_string<_CharT, _Traits, _Alloc>::size_type + basic_string<_CharT, _Traits, _Alloc>::npos; + + + + template + 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 + template + _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 + template + _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(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 + _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 + 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 + basic_string<_CharT, _Traits, _Alloc>:: + basic_string(const _Alloc& __a) + : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) + { } + + template + 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 + 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 + 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 + 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 + basic_string<_CharT, _Traits, _Alloc>:: + basic_string(size_type __n, _CharT __c, const _Alloc& __a) + : _M_dataplus(_S_construct(__n, __c, __a), __a) + { } + + + template + template + basic_string<_CharT, _Traits, _Alloc>:: + basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) + : _M_dataplus(_S_construct(__beg, __end, __a), __a) + { } + + template + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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(this), __size); + } + + template + 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 + 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 + 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 + 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 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 + _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 + 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 + template + 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 + 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 + 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 + 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 + 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 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 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 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 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 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 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 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 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 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 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 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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; + extern template + basic_istream& + operator>>(basic_istream&, string&); + extern template + basic_ostream& + operator<<(basic_ostream&, const string&); + extern template + basic_istream& + getline(basic_istream&, string&, char); + extern template + basic_istream& + getline(basic_istream&, 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 + friend bool + has_facet(const locale&) throw(); + + template + friend const _Facet& + use_facet(const locale&); + + template + 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 + 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 + 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 + 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 + friend const _Facet& + use_facet(const locale&); + + template + 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 + friend bool + has_facet(const locale&) throw(); + + template + friend const _Facet& + use_facet(const locale&); + + template + 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 + 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 + 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 + 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 + 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 + locale::id collate<_CharT>::id; + + + template<> + int + collate::_M_compare(const char*, const char*) const; + + template<> + size_t + collate::_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 + 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 + 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 + 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 + 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 + 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(__facets[__i])); + + + + } + + template + 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(*__facets[__i]); + + + + } + + + + template + int + collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const + { return 0; } + + + template + size_t + collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const + { return 0; } + + template + 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 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 + 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:: + __digits - 7))); + return static_cast(__val); + } + + + + + + extern template class collate; + extern template class collate_byname; + + extern template + const collate& + use_facet >(const locale&); + + extern template + bool + has_facet >(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(__a) & static_cast(__b)); } + + inline _Ios_Fmtflags + operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } + + inline _Ios_Fmtflags + operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__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(__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(__a) & static_cast(__b)); } + + inline _Ios_Openmode + operator|(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } + + inline _Ios_Openmode + operator^(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast(__a) ^ static_cast(__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(__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(__a) & static_cast(__b)); } + + inline _Ios_Iostate + operator|(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } + + inline _Ios_Iostate + operator^(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast(__a) ^ static_cast(__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(__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 + 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 + 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 __streambuf_type; + + + friend class basic_ios; + friend class basic_istream; + friend class basic_ostream; + friend class istreambuf_iterator; + friend class ostreambuf_iterator; + + friend streamsize + __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&); + + template + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + _CharT2*>::__type + __copy_move_a2(istreambuf_iterator<_CharT2>, + istreambuf_iterator<_CharT2>, _CharT2*); + + template + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + istreambuf_iterator<_CharT2> >::__type + find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, + const _CharT2&); + + template + friend basic_istream<_CharT2, _Traits2>& + operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); + + template + friend basic_istream<_CharT2, _Traits2>& + operator>>(basic_istream<_CharT2, _Traits2>&, + basic_string<_CharT2, _Traits2, _Alloc>&); + + template + 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* + 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* __sbin, + basic_streambuf* __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 + 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 + 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 + 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 + 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; + extern template + streamsize + __copy_streambufs(basic_streambuf*, + basic_streambuf*); + extern template + streamsize + __copy_streambufs_eof(basic_streambuf*, + basic_streambuf*, 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 + class istreambuf_iterator + : public iterator + { + 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 + 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 + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + _CharT2*>::__type + __copy_move_a2(istreambuf_iterator<_CharT2>, + istreambuf_iterator<_CharT2>, _CharT2*); + + template + 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 + inline bool + operator==(const istreambuf_iterator<_CharT, _Traits>& __a, + const istreambuf_iterator<_CharT, _Traits>& __b) + { return __a.equal(__b); } + + template + inline bool + operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, + const istreambuf_iterator<_CharT, _Traits>& __b) + { return !__a.equal(__b); } + + + template + class ostreambuf_iterator + : public iterator + { + public: + + + + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_streambuf<_CharT, _Traits> streambuf_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; + + + template + 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 __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 + 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 + 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 + 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 __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 + 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 + struct __pad + { + static void + _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, + const _CharT* __olds, const streamsize __newlen, + const streamsize __oldlen); + }; + + + + + + + template + _CharT* + __add_grouping(_CharT* __s, _CharT __sep, + const char* __gbeg, size_t __gsize, + const _CharT* __first, const _CharT* __last); + + + + + template + inline + ostreambuf_iterator<_CharT> + __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) + { + __s._M_put(__ws, __len); + return __s; + } + + + template + 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 + 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 + 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 + 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 : 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(-1)]; + mutable char _M_narrow[1 + static_cast(-1)]; + mutable char _M_narrow_ok; + + + public: + + static locale::id id; + + static const size_t table_size = 1 + static_cast(-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(__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(__c)]) + return _M_narrow[static_cast(__c)]; + const char __t = do_narrow(__c, __dfault); + if (__t != __dfault) + _M_narrow[static_cast(__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& + use_facet >(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 + 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 : public ctype + { + 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:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && !(_M_table[static_cast(*__low)] & __m)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && (_M_table[static_cast(*__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 + 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 + __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 + 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 + locale::id numpunct<_CharT>::id; + + template<> + numpunct::~numpunct(); + + template<> + void + numpunct::_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 + 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 + 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 + iter_type + _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, + _ValueT& __v) const; + + template + 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 __gnu_cxx::__enable_if::__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 + 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 + 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 + 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 + 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 + locale::id num_put<_CharT, _OutIter>::id; + + + + + + + + + + template + inline bool + isspace(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::space, __c); } + + + template + inline bool + isprint(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::print, __c); } + + + template + inline bool + iscntrl(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::cntrl, __c); } + + + template + inline bool + isupper(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::upper, __c); } + + + template + inline bool + islower(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::lower, __c); } + + + template + inline bool + isalpha(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::alpha, __c); } + + + template + inline bool + isdigit(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::digit, __c); } + + + template + inline bool + ispunct(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::punct, __c); } + + + template + inline bool + isxdigit(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::xdigit, __c); } + + + template + inline bool + isalnum(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::alnum, __c); } + + + template + inline bool + isgraph(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::graph, __c); } + + + template + inline _CharT + toupper(_CharT __c, const locale& __loc) + { return use_facet >(__loc).toupper(__c); } + + + template + inline _CharT + tolower(_CharT __c, const locale& __loc) + { return use_facet >(__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 + struct __use_cache + { + const _Facet* + operator() (const locale& __loc) const; + }; + + + template + 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*>(__caches[__i]); + } + }; + + template + void + __numpunct_cache<_CharT>::_M_cache(const locale& __loc) + { + _M_allocated = true; + + const numpunct<_CharT>& __np = use_facet >(__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(__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 >(__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 + _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(__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(__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(__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(__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 + template + _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(__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(__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 + _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 + _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 + _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 + _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 + _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 + _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 + _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 + _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 + _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 + _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 + _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(__ul); + return __beg; + } + + + + template + 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(__w); + } + + + + template + 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 + 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 + template + _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(__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 + 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 + template + _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(__builtin_alloca(__cs_size)); + __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf, + __prec, __v); + + + + + const ctype<_CharT>& __ctype = use_facet >(__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::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(__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 + _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(__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 + _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 + _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 + _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 + _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 + _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 + _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 + _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 + 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(__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 >(__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 + _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(__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; + extern template class numpunct_byname; + extern template class num_get; + extern template class num_put; + extern template class ctype_byname; + + extern template + const numpunct& + use_facet >(const locale&); + + extern template + const num_put& + use_facet >(const locale&); + + extern template + const num_get& + use_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(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 + 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 + 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(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 + 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 + 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 + 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 + 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 + 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 + 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; + + + + + + +} +# 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 + 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(__n)); + } + + __ostream_type& + operator<<(int __n); + + __ostream_type& + operator<<(unsigned int __n) + { + + + return _M_insert(static_cast(__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(__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 + __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 + 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 + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) + { return __ostream_insert(__out, &__c, 1); } + + template + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) + { return (__out << __out.widen(__c)); } + + + template + inline basic_ostream& + operator<<(basic_ostream& __out, char __c) + { return __ostream_insert(__out, &__c, 1); } + + + template + inline basic_ostream& + operator<<(basic_ostream& __out, signed char __c) + { return (__out << static_cast(__c)); } + + template + inline basic_ostream& + operator<<(basic_ostream& __out, unsigned char __c) + { return (__out << static_cast(__c)); } +# 490 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3 + template + 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(_Traits::length(__s))); + return __out; + } + + template + basic_ostream<_CharT, _Traits> & + operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); + + + template + inline basic_ostream& + operator<<(basic_ostream& __out, const char* __s) + { + if (!__s) + __out.setstate(ios_base::badbit); + else + __ostream_insert(__out, __s, + static_cast(_Traits::length(__s))); + return __out; + } + + + template + inline basic_ostream& + operator<<(basic_ostream& __out, const signed char* __s) + { return (__out << reinterpret_cast(__s)); } + + template + inline basic_ostream & + operator<<(basic_ostream& __out, const unsigned char* __s) + { return (__out << reinterpret_cast(__s)); } +# 540 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3 + template + inline basic_ostream<_CharT, _Traits>& + endl(basic_ostream<_CharT, _Traits>& __os) + { return flush(__os.put(__os.widen('\n'))); } + + + + + + + + template + inline basic_ostream<_CharT, _Traits>& + ends(basic_ostream<_CharT, _Traits>& __os) + { return __os.put(_CharT()); } + + + + + + + template + 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 + 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 + template + 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 + 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(static_cast(__n))); + else + return _M_insert(static_cast(__n)); + } + + template + 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(static_cast(__n))); + else + return _M_insert(static_cast(__n)); + } + + template + 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 + 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 + 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 + 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 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 + 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 + 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 + 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::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; + 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 + 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 + __istream_type& + _M_extract(_ValueT& __v); + }; + + + template<> + basic_istream& + basic_istream:: + getline(char_type* __s, streamsize __n, char_type __delim); + + template<> + basic_istream& + basic_istream:: + ignore(streamsize __n); + + template<> + basic_istream& + basic_istream:: + 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 + 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 + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); + + template + inline basic_istream& + operator>>(basic_istream& __in, unsigned char& __c) + { return (__in >> reinterpret_cast(__c)); } + + template + inline basic_istream& + operator>>(basic_istream& __in, signed char& __c) + { return (__in >> reinterpret_cast(__c)); } +# 738 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3 + template + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); + + + template<> + basic_istream& + operator>>(basic_istream& __in, char* __s); + + template + inline basic_istream& + operator>>(basic_istream& __in, unsigned char* __s) + { return (__in >> reinterpret_cast(__s)); } + + template + inline basic_istream& + operator>>(basic_istream& __in, signed char* __s) + { return (__in >> reinterpret_cast(__s)); } +# 765 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3 + template + 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 + 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 + 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 + template + 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 + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + operator>>(short& __n) + { + + + long __l; + _M_extract(__l); + if (!this->fail()) + { + if (__gnu_cxx::__numeric_traits::__min <= __l + && __l <= __gnu_cxx::__numeric_traits::__max) + __n = short(__l); + else + this->setstate(ios_base::failbit); + } + return *this; + } + + template + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + operator>>(int& __n) + { + + + long __l; + _M_extract(__l); + if (!this->fail()) + { + if (__gnu_cxx::__numeric_traits::__min <= __l + && __l <= __gnu_cxx::__numeric_traits::__max) + __n = int(__l); + else + this->setstate(ios_base::failbit); + } + return *this; + } + + template + 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 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 + 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 + 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 + 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 + 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 + 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 + 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::__max + && !traits_type::eq_int_type(__c, __eof)) + { + _M_gcount = + __gnu_cxx::__numeric_traits::__min; + __large_ignore = true; + } + else + break; + } + + if (__large_ignore) + _M_gcount = __gnu_cxx::__numeric_traits::__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 + 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::__max + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __delim)) + { + _M_gcount = + __gnu_cxx::__numeric_traits::__min; + __large_ignore = true; + } + else + break; + } + + if (__large_ignore) + _M_gcount = __gnu_cxx::__numeric_traits::__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::__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 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 + 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 + 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 + 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 + 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 + 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 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 + 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 + 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 + 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 + 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::__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 + 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; + 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; +# 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 _Dist = ptrdiff_t> + class istream_iterator + : public iterator + { + 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 + 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 + 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 > + class ostream_iterator + : public iterator + { + 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 + struct _List_node : public _List_node_base + { + + _Tp _M_data; + }; + + + + + + + template + 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 + 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 + inline bool + operator==(const _List_iterator<_Val>& __x, + const _List_const_iterator<_Val>& __y) + { return __x._M_node == __y._M_node; } + + template + inline bool + operator!=(const _List_iterator<_Val>& __x, + const _List_const_iterator<_Val>& __y) + { return __x._M_node != __y._M_node; } + + + + template + 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(&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 > + 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_reverse_iterator; + typedef std::reverse_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 + 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 + 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 + 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:: + _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 + 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 + 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 + void + + + + merge(list&, _StrictWeakOrdering); + + + + + + + + void + reverse() + { this->_M_impl._M_node.reverse(); } + + + + + + + + void + sort(); + + + + + + + + template + void + sort(_StrictWeakOrdering); + + protected: + + + + + + + template + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { _M_fill_initialize(static_cast(__n), __x); } + + + template + 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 + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + + template + 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:: + _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 + 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 + 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 + inline bool + operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + + template + inline bool + operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return __y < __x; } + + + template + inline bool + operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + + template + inline bool + operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + + template + 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 + 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 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 list<_Tp, _Alloc>::iterator + list<_Tp, _Alloc>:: + erase(iterator __position) + { + iterator __ret = iterator(__position._M_node->_M_next); + _M_erase(__position); + return __ret; + } + + template + 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 + 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 + 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 + template + 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 + 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 + 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 + 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 + template + 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 + 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 + template + 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 + template + 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 + template + 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 class QVector; +template 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 +class QList +{ + struct Node { void *v; + + + + inline T &t() + { return *reinterpret_cast(QTypeInfo::isLarge || QTypeInfo::isStatic + ? v : this); } + + }; + + union { QListData p; QListData::Data *d; }; + +public: + inline QList() : d(&QListData::shared_null) { d->ref.ref(); } + inline QList(const QList &l) : d(l.d) { d->ref.ref(); if (!d->sharable) detach_helper(); } + ~QList(); + QList &operator=(const QList &l); + bool operator==(const QList &l) const; + inline bool operator!=(const QList &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); + 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(p.begin()); } + inline const_iterator begin() const { return reinterpret_cast(p.begin()); } + inline const_iterator constBegin() const { return reinterpret_cast(p.begin()); } + inline iterator end() { detach(); return reinterpret_cast(p.end()); } + inline const_iterator end() const { return reinterpret_cast(p.end()); } + inline const_iterator constEnd() const { return reinterpret_cast(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 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 &operator+=(const QList &l); + inline QList operator+(const QList &l) const + { QList n = *this; n += l; return n; } + inline QList &operator+=(const T &t) + { append(t); return *this; } + inline QList &operator<< (const T &t) + { append(t); return *this; } + inline QList &operator<<(const QList &l) + { *this += l; return *this; } + + QVector toVector() const; + QSet toSet() const; + + static QList fromVector(const QVector &vector); + static QList fromSet(const QSet &set); + + + static inline QList fromStdList(const std::list &list) + { QList tmp; qCopy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; } + inline std::list toStdList() const + { std::list 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 +inline void QList::node_construct(Node *n, const T &t) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) n->v = new T(t); + else if (QTypeInfo::isComplex) new (n) T(t); + else *reinterpret_cast(n) = t; +} + +template +inline void QList::node_destruct(Node *n) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) delete reinterpret_cast(n->v); + else if (QTypeInfo::isComplex) reinterpret_cast(n)->~T(); +} + +template +inline void QList::node_copy(Node *from, Node *to, Node *src) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) + while(from != to) + (from++)->v = new T(*reinterpret_cast((src++)->v)); + else if (QTypeInfo::isComplex) + while(from != to) + new (from++) T(*reinterpret_cast(src++)); +} + +template +inline void QList::node_destruct(Node *from, Node *to) +{ + if (QTypeInfo::isLarge || QTypeInfo::isStatic) + while(from != to) --to, delete reinterpret_cast(to->v); + else if (QTypeInfo::isComplex) + while (from != to) --to, reinterpret_cast(to)->~T(); +} + +template +inline QList &QList::operator=(const QList &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 +inline typename QList::iterator QList::insert(iterator before, const T &t) +{ Node *n = reinterpret_cast(p.insert(before.i-reinterpret_cast(p.begin()))); + node_construct(n,t); return n; } +template +inline typename QList::iterator QList::erase(iterator it) +{ node_destruct(it.i); + return reinterpret_cast(p.erase(reinterpret_cast(it.i))); } +template +inline const T &QList::at(int i) const +{ qt_noop(); + return reinterpret_cast(p.at(i))->t(); } +template +inline const T &QList::operator[](int i) const +{ qt_noop(); + return reinterpret_cast(p.at(i))->t(); } +template +inline T &QList::operator[](int i) +{ qt_noop(); + detach(); return reinterpret_cast(p.at(i))->t(); } +template +inline void QList::removeAt(int i) +{ if(i >= 0 && i < p.size()) { detach(); + node_destruct(reinterpret_cast(p.at(i))); p.remove(i); } } +template +inline T QList::takeAt(int i) +{ qt_noop(); + detach(); Node *n = reinterpret_cast(p.at(i)); T t = n->t(); node_destruct(n); + p.remove(i); return t; } +template +inline T QList::takeFirst() +{ T t = first(); removeFirst(); return t; } +template +inline T QList::takeLast() +{ T t = last(); removeLast(); return t; } + +template + void QList::append(const T &t) +{ + detach(); + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + node_construct(reinterpret_cast(p.append()), t); + } else { + const T cpy(t); + node_construct(reinterpret_cast(p.append()), cpy); + } +} + +template +inline void QList::prepend(const T &t) +{ + detach(); + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + node_construct(reinterpret_cast(p.prepend()), t); + } else { + const T cpy(t); + node_construct(reinterpret_cast(p.prepend()), cpy); + } +} + +template +inline void QList::insert(int i, const T &t) +{ + detach(); + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + node_construct(reinterpret_cast(p.insert(i)), t); + } else { + const T cpy(t); + node_construct(reinterpret_cast(p.insert(i)), cpy); + } +} + +template +inline void QList::replace(int i, const T &t) +{ + qt_noop(); + detach(); + if (QTypeInfo::isLarge || QTypeInfo::isStatic) { + reinterpret_cast(p.at(i))->t() = t; + } else { + const T cpy(t); + reinterpret_cast(p.at(i))->t() = cpy; + } +} + +template +inline void QList::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 +inline void QList::move(int from, int to) +{ + qt_noop(); + + detach(); + p.move(from, to); +} + +template + QList QList::mid(int pos, int alength) const +{ + if (alength < 0) + alength = size() - pos; + if (pos == 0 && alength == size()) + return *this; + QList cpy; + if (pos + alength > size()) + alength = size() - pos; + for (int i = pos; i < pos + alength; ++i) + cpy += at(i); + return cpy; +} + +template + T QList::value(int i) const +{ + if (i < 0 || i >= p.size()) { + return T(); + } + return reinterpret_cast(p.at(i))->t(); +} + +template + T QList::value(int i, const T& defaultValue) const +{ + return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast(p.at(i))->t()); +} + +template + void QList::detach_helper() +{ + Node *n = reinterpret_cast(p.begin()); + QListData::Data *x = p.detach2(); + node_copy(reinterpret_cast(p.begin()), reinterpret_cast(p.end()), n); + if (!x->ref.deref()) + free(x); +} + +template + QList::~QList() +{ + if (d && !d->ref.deref()) + free(d); +} + +template + bool QList::operator==(const QList &l) const +{ + if (p.size() != l.p.size()) + return false; + if (d == l.d) + return true; + Node *i = reinterpret_cast(p.end()); + Node *b = reinterpret_cast(p.begin()); + Node *li = reinterpret_cast(l.p.end()); + while (i != b) { + --i; --li; + if (!(i->t() == li->t())) + return false; + } + return true; +} + + +template + void QList::free(QListData::Data *data) +{ + node_destruct(reinterpret_cast(data->array + data->begin), + reinterpret_cast(data->array + data->end)); + if (data->ref == 0) + qFree(data); +} + + +template + void QList::clear() +{ + *this = QList(); +} + +template + int QList::removeAll(const T &_t) +{ + detach(); + const T t = _t; + int removedCount=0, i=0; + Node *n; + while (i < p.size()) + if ((n = reinterpret_cast(p.at(i)))->t() == t) { + node_destruct(n); + p.remove(i); + ++removedCount; + } else { + ++i; + } + return removedCount; +} + +template + bool QList::removeOne(const T &_t) +{ + detach(); + int index = indexOf(_t); + if (index != -1) { + removeAt(index); + return true; + } + return false; +} + +template + typename QList::iterator QList::erase(typename QList::iterator afirst, + typename QList::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 + QList &QList::operator+=(const QList &l) +{ + detach(); + Node *n = reinterpret_cast(p.append(l.p)); + node_copy(n, reinterpret_cast(p.end()), reinterpret_cast(l.p.begin())); + return *this; +} + +template +inline void QList::append(const QList &t) +{ + *this += t; +} + +template + int QList::indexOf(const T &t, int from) const +{ + if (from < 0) + from = qMax(from + p.size(), 0); + if (from < p.size()) { + Node *n = reinterpret_cast(p.at(from -1)); + Node *e = reinterpret_cast(p.end()); + while (++n != e) + if (n->t() == t) + return n - reinterpret_cast(p.begin()); + } + return -1; +} + +template + int QList::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(p.begin()); + Node *n = reinterpret_cast(p.at(from + 1)); + while (n-- != b) { + if (n->t() == t) + return n - b; + } + } + return -1; +} + +template + QBool QList::contains(const T &t) const +{ + Node *b = reinterpret_cast(p.begin()); + Node *i = reinterpret_cast(p.end()); + while (i-- != b) + if (i->t() == t) + return QBool(true); + return QBool(false); +} + +template + int QList::count(const T &t) const +{ + int c = 0; + Node *b = reinterpret_cast(p.begin()); + Node *i = reinterpret_cast(p.end()); + while (i-- != b) + if (i->t() == t) + ++c; + return c; +} + +template class QListIterator { typedef typename QList::const_iterator const_iterator; QList c; const_iterator i; public: inline QListIterator(const QList &container) : c(container), i(c.constBegin()) {} inline QListIterator &operator=(const QList &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 QMutableListIterator { typedef typename QList::iterator iterator; typedef typename QList::const_iterator const_iterator; QList *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableListIterator(QList &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableListIterator() { c->setSharable(true); } inline QMutableListIterator &operator=(QList &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 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 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 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 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 WindowFlags; + + enum WindowState { + WindowNoState = 0x00000000, + WindowMinimized = 0x00000001, + WindowMaximized = 0x00000002, + WindowFullScreen = 0x00000004, + WindowActive = 0x00000008 + }; + + typedef QFlags 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 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 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 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 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 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 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 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 operator|(Qt::MouseButtons::enum_type f1, Qt::MouseButtons::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::MouseButtons::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::MouseButtons::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::Orientations::enum_type f1, Qt::Orientations::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::Orientations::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::Orientations::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::KeyboardModifiers::enum_type f1, Qt::KeyboardModifiers::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::KeyboardModifiers::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::KeyboardModifiers::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::WindowFlags::enum_type f1, Qt::WindowFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::WindowFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::WindowFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::Alignment::enum_type f1, Qt::Alignment::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::Alignment::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::Alignment::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::ImageConversionFlags::enum_type f1, Qt::ImageConversionFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::ImageConversionFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ImageConversionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::DockWidgetAreas::enum_type f1, Qt::DockWidgetAreas::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::DockWidgetAreas::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::DockWidgetAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::ToolBarAreas::enum_type f1, Qt::ToolBarAreas::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::ToolBarAreas::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ToolBarAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::WindowStates::enum_type f1, Qt::WindowStates::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::WindowStates::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::WindowStates::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::DropActions::enum_type f1, Qt::DropActions::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::DropActions::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::DropActions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::ItemFlags::enum_type f1, Qt::ItemFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::ItemFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ItemFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::MatchFlags::enum_type f1, Qt::MatchFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::MatchFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::MatchFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); } +inline QFlags operator|(Qt::TextInteractionFlags::enum_type f1, Qt::TextInteractionFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::TextInteractionFlags::enum_type f1, QFlags 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 inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } + + + +template +inline int qYouForgotTheQ_OBJECT_Macro(T, T) { return 0; } + +template +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, data) +#define Q_RETURN_ARG(type,data) QReturnArgument(#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(_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 QArgument: public QGenericArgument +{ +public: + inline QArgument(const char *aName, const T &aData) + : QGenericArgument(aName, static_cast(&aData)) + {} +}; + + +template +class QReturnArgument: public QGenericReturnArgument +{ +public: + inline QReturnArgument(const char *aName, T &aData) + : QGenericReturnArgument(aName, static_cast(&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 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 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(data.constData()), data.size(), compressionLevel); } +inline QByteArray qUncompress(const QByteArray& data) +{ return qUncompress(reinterpret_cast(data.constData()), data.size()); } + + +template <> class QTypeInfo { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(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 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 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 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 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(d->data); } +inline const QChar *QString::data() const +{ return reinterpret_cast(d->data); } +inline QChar *QString::data() +{ detach(); return reinterpret_cast(d->data); } +inline const QChar *QString::constData() const +{ return reinterpret_cast(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(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(d->data); } +inline QString::const_iterator QString::begin() const +{ return reinterpret_cast(d->data); } +inline QString::const_iterator QString::constBegin() const +{ return reinterpret_cast(d->data); } +inline QString::iterator QString::end() +{ detach(); return reinterpret_cast(d->data + d->size); } +inline QString::const_iterator QString::end() const +{ return reinterpret_cast(d->data + d->size); } +inline QString::const_iterator QString::constEnd() const +{ return reinterpret_cast(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 { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(QString &value1, QString &value2) { const QString::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; } +inline QFlags operator|(QString::SectionFlags::enum_type f1, QString::SectionFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QString::SectionFlags::enum_type f1, QFlags 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(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 QObjectList; +# 86 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h" +template inline T qFindChild(const QObject *, const QString & = QString()); +template inline QList qFindChildren(const QObject *, const QString & = QString()); + +template inline QList 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 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(d_ptr); } inline const QObjectPrivate* d_func() const { return reinterpret_cast(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 + inline T findChild(const QString &aName = QString()) const + { return qFindChild(this, aName); } + + template + inline QList findChildren(const QString &aName = QString()) const + { return qFindChildren(this, aName); } + + + template + inline QList findChildren(const QRegExp &re) const + { return qFindChildren(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 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(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 *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 +inline T qFindChild(const QObject *o, const QString &name) +{ return static_cast(qt_qFindChild_helper(o, name, reinterpret_cast(0)->staticMetaObject)); } + +template +inline QList qFindChildren(const QObject *o, const QString &name) +{ + QList list; + union { + QList *typedList; + QList *voidList; + } u; + u.typedList = &list; + qt_qFindChildren_helper(o, name, 0, reinterpret_cast(0)->staticMetaObject, u.voidList); + return list; +} + + +template +inline QList qFindChildren(const QObject *o, const QRegExp &re) +{ + QList list; + union { + QList *typedList; + QList *voidList; + } u; + u.typedList = &list; + qt_qFindChildren_helper(o, QString(), &re, reinterpret_cast(0)->staticMetaObject, u.voidList); + return list; +} + + +template +inline T qobject_cast(QObject *object) +{ + + reinterpret_cast(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast(object)); + + return static_cast(reinterpret_cast(0)->staticMetaObject.cast(object)); +} + +template +inline T qobject_cast(const QObject *object) +{ + + register T ptr = static_cast(object); + (void)ptr;; + + + reinterpret_cast(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast(const_cast(object))); + + return static_cast(const_cast(reinterpret_cast(0)->staticMetaObject.cast(const_cast(object)))); +} + + + +#define Q_DECLARE_INTERFACE(IFace,IId) template <> inline IFace *qobject_cast(QObject *object) { return reinterpret_cast((object ? object->qt_metacast(IId) : 0)); } template <> inline IFace *qobject_cast(const QObject *object) { return reinterpret_cast((object ? const_cast(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 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 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(d_ptr); } inline const QIODevicePrivate* d_func() const { return reinterpret_cast(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 operator|(QIODevice::OpenMode::enum_type f1, QIODevice::OpenMode::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QIODevice::OpenMode::enum_type f1, QFlags 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 class QList; +template class QLinkedList; +template class QVector; +template class QSet; +template class QHash; +template 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(i); } + +inline QDataStream &QDataStream::operator>>(quint16 &i) +{ return *this >> reinterpret_cast(i); } + +inline QDataStream &QDataStream::operator>>(quint32 &i) +{ return *this >> reinterpret_cast(i); } + +inline QDataStream &QDataStream::operator>>(quint64 &i) +{ return *this >> reinterpret_cast(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 +QDataStream& operator>>(QDataStream& s, QList& 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 +QDataStream& operator<<(QDataStream& s, const QList& l) +{ + s << quint32(l.size()); + for (int i = 0; i < l.size(); ++i) + s << l.at(i); + return s; +} + +template +QDataStream& operator>>(QDataStream& s, QLinkedList& 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 +QDataStream& operator<<(QDataStream& s, const QLinkedList& l) +{ + s << quint32(l.size()); + typename QLinkedList::ConstIterator it = l.constBegin(); + for(; it != l.constEnd(); ++it) + s << *it; + return s; +} + +template +QDataStream& operator>>(QDataStream& s, QVector& 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 +QDataStream& operator<<(QDataStream& s, const QVector& v) +{ + s << quint32(v.size()); + for (typename QVector::const_iterator it = v.begin(); it != v.end(); ++it) + s << *it; + return s; +} + +template +QDataStream &operator>>(QDataStream &in, QSet &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 +QDataStream& operator<<(QDataStream &out, const QSet &set) +{ + out << quint32(set.size()); + typename QSet::const_iterator i = set.constBegin(); + while (i != set.constEnd()) { + out << *i; + ++i; + } + return out; +} + +template + QDataStream &operator>>(QDataStream &in, QHash &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 + QDataStream &operator<<(QDataStream &out, const QHash& hash) +{ + out << quint32(hash.size()); + typename QHash::ConstIterator it = hash.end(); + typename QHash::ConstIterator begin = hash.begin(); + while (it != begin) { + --it; + out << it.key() << it.value(); + } + return out; +} + + + + +template + QDataStream &operator>>(QDataStream &in, QMap &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 + QDataStream &operator<<(QDataStream &out, const QMap &map) +{ + out << quint32(map.size()); + typename QMap::ConstIterator it = map.end(); + typename QMap::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 +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 &operator=(const QPair &other) + { first = other.first; second = other.second; return *this; } + + T1 first; + T2 second; +}; + +template +inline bool operator==(const QPair &p1, const QPair &p2) +{ return p1.first == p2.first && p1.second == p2.second; } + +template +inline bool operator!=(const QPair &p1, const QPair &p2) +{ return !(p1 == p2); } + +template +inline bool operator<(const QPair &p1, const QPair &p2) +{ + return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second); +} + +template +inline bool operator>(const QPair &p1, const QPair &p2) +{ + return p2 < p1; +} + +template +inline bool operator<=(const QPair &p1, const QPair &p2) +{ + return !(p2 < p1); +} + +template +inline bool operator>=(const QPair &p1, const QPair &p2) +{ + return !(p1 < p2); +} + +template + QPair qMakePair(const T1 &x, const T2 &y) +{ + return QPair(x, y); +} + + +template +inline QDataStream& operator>>(QDataStream& s, QPair& p) +{ + s >> p.first >> p.second; + return s; +} + +template +inline QDataStream& operator<<(QDataStream& s, const QPair& 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 inline uint qHash(const T *key) +{ + if (sizeof(const T *) > sizeof(uint)) + return qHash(reinterpret_cast(key)); + else + return uint(reinterpret_cast(key)); +} + + + + +template inline uint qHash(const QPair &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(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 { 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 +struct QHashDummyNode +{ + QHashDummyNode *next; + uint h; + Key key; + + inline QHashDummyNode(const Key &key0) : key(key0) {} +}; + +template +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 struct QHashDummyNode { QHashDummyNode *next; union { uint h; key_type key; }; inline QHashDummyNode(key_type ) {} }; template struct QHashNode { 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 struct QHashDummyNode { QHashDummyNode *next; union { uint h; short key; }; inline QHashDummyNode(short ) {} }; template struct QHashNode { 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 struct QHashDummyNode { QHashDummyNode *next; union { uint h; ushort key; }; inline QHashDummyNode(ushort ) {} }; template struct QHashNode { 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 struct QHashDummyNode { QHashDummyNode *next; union { uint h; int key; }; inline QHashDummyNode(int ) {} }; template struct QHashNode { 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 struct QHashDummyNode { QHashDummyNode *next; union { uint h; uint key; }; inline QHashDummyNode(uint ) {} }; template struct QHashNode { 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 QHash +{ + typedef QHashDummyNode DummyNode; + typedef QHashNode Node; + + union { + QHashData *d; + QHashNode *e; + }; + + static inline Node *concrete(QHashData::Node *node) { + return reinterpret_cast(node); + } + +public: + inline QHash() : d(&QHashData::shared_null) { d->ref.ref(); } + inline QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } + inline ~QHash() { if (!d->ref.deref()) freeData(d); } + + QHash &operator=(const QHash &other); + + bool operator==(const QHash &other) const; + inline bool operator!=(const QHash &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 uniqueKeys() const; + QList keys() const; + QList keys(const T &value) const; + QList values() const; + QList 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(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(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 &unite(const QHash &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 +inline void QHash::deleteNode(Node *node) +{ + + + + + + node->~Node(); + + d->freeNode(node); +} + +template +inline void QHash::duplicateNode(QHashData::Node *node, void *newNode) +{ + Node *concreteNode = concrete(node); + if (QTypeInfo::isDummy) { + (void) new (newNode) DummyNode(concreteNode->key); + } else { + (void) new (newNode) Node(concreteNode->key, concreteNode->value); + } +} + +template +inline typename QHash::Node * +QHash::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode) +{ + Node *node; + + if (QTypeInfo::isDummy) { + node = reinterpret_cast(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 +inline QHash &QHash::unite(const QHash &other) +{ + QHash copy(other); + const_iterator it = copy.constEnd(); + while (it != copy.constBegin()) { + --it; + insertMulti(it.key(), it.value()); + } + return *this; +} + +template + void QHash::freeData(QHashData *x) +{ + Node *e_for_x = reinterpret_cast(x); + Node **bucket = reinterpret_cast(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 +inline void QHash::clear() +{ + *this = QHash(); +} + +template + void QHash::detach_helper() +{ + QHashData *x = d->detach_helper(duplicateNode, + QTypeInfo::isDummy ? sizeof(DummyNode) : sizeof(Node)); + if (!d->ref.deref()) + freeData(d); + d = x; +} + +template +inline QHash &QHash::operator=(const QHash &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 +inline const T QHash::value(const Key &akey) const +{ + Node *node; + if (d->size == 0 || (node = *findNode(akey)) == e) { + return T(); + } else { + return node->value; + } +} + +template +inline const T QHash::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 + QList QHash::uniqueKeys() const +{ + QList 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 + QList QHash::keys() const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + res.append(i.key()); + ++i; + } + return res; +} + +template + QList QHash::keys(const T &avalue) const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + res.append(i.key()); + ++i; + } + return res; +} + +template + const Key QHash::key(const T &avalue) const +{ + return key(avalue, Key()); +} + +template + const Key QHash::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 + QList QHash::values() const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + res.append(i.value()); + ++i; + } + return res; +} + +template + QList QHash::values(const Key &akey) const +{ + QList res; + Node *node = *findNode(akey); + if (node != e) { + do { + res.append(node->value); + } while ((node = node->next) != e && node->key == akey); + } + return res; +} + +template + int QHash::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 +inline const T QHash::operator[](const Key &akey) const +{ + return value(akey); +} + +template +inline T &QHash::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 +inline typename QHash::iterator QHash::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::isDummy) + (*node)->value = avalue; + return iterator(*node); +} + +template +inline typename QHash::iterator QHash::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 + int QHash::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 + T QHash::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 + typename QHash::iterator QHash::erase(iterator it) +{ + if (it == iterator(e)) + return it; + + iterator ret = it; + ++ret; + + Node *node = it; + Node **node_ptr = reinterpret_cast(&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 +inline void QHash::reserve(int asize) +{ + detach(); + d->rehash(-qMax(asize, 1)); +} + +template +inline typename QHash::const_iterator QHash::find(const Key &akey) const +{ + return const_iterator(*findNode(akey)); +} + +template +inline typename QHash::const_iterator QHash::constFind(const Key &akey) const +{ + return const_iterator(*findNode(akey)); +} + +template +inline typename QHash::iterator QHash::find(const Key &akey) +{ + detach(); + return iterator(*findNode(akey)); +} + +template +inline bool QHash::contains(const Key &akey) const +{ + return *findNode(akey) != e; +} + +template + typename QHash::Node **QHash::findNode(const Key &akey, + uint *ahp) const +{ + Node **node; + uint h = qHash(akey); + + if (d->numBuckets) { + node = reinterpret_cast(&d->buckets[h % d->numBuckets]); + qt_noop(); + while (*node != e && !(*node)->same_key(h, akey)) + node = &(*node)->next; + } else { + node = const_cast(reinterpret_cast(&e)); + } + if (ahp) + *ahp = h; + return node; +} + +template + bool QHash::operator==(const QHash &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::isDummy && !(it.value() == it2.value())) + return false; + ++it; + ++it2; + } while (it != end() && it.key() == akey); + } + return true; +} + +template +class QMultiHash : public QHash +{ +public: + QMultiHash() {} + QMultiHash(const QHash &other) : QHash(other) {} + + inline typename QHash::iterator replace(const Key &key, const T &value) + { return QHash::insert(key, value); } + + inline typename QHash::iterator insert(const Key &key, const T &value) + { return QHash::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::contains; + using QHash::remove; + using QHash::count; + using QHash::find; + using QHash::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::iterator find(const Key &key, const T &value) { + typename QHash::iterator i(find(key)); + typename QHash::iterator end(this->end()); + while (i != end && i.key() == key) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QHash::const_iterator find(const Key &key, const T &value) const { + typename QHash::const_iterator i(constFind(key)); + typename QHash::const_iterator end(QHash::constEnd()); + while (i != end && i.key() == key) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QHash::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 +inline bool QMultiHash::contains(const Key &key, const T &value) const +{ + return constFind(key, value) != QHash::constEnd(); +} + +template +inline int QMultiHash::remove(const Key &key, const T &value) +{ + int n = 0; + typename QHash::iterator i(find(key)); + typename QHash::iterator end(QHash::end()); + while (i != end && i.key() == key) { + if (i.value() == value) { + i = erase(i); + ++n; + } else { + ++i; + } + } + return n; +} + +template +inline int QMultiHash::count(const Key &key, const T &value) const +{ + int n = 0; + typename QHash::const_iterator i(constFind(key)); + typename QHash::const_iterator end(QHash::constEnd()); + while (i != end && i.key() == key) { + if (i.value() == value) + ++n; + ++i; + } + return n; +} + +template class QHashIterator { typedef typename QHash::const_iterator const_iterator; typedef const_iterator Item; QHash c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QHashIterator(const QHash &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QHashIterator &operator=(const QHash &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 QMutableHashIterator { typedef typename QHash::iterator iterator; typedef typename QHash::const_iterator const_iterator; typedef iterator Item; QHash *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableHashIterator(QHash &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableHashIterator() { c->setSharable(true); } inline QMutableHashIterator &operator=(QHash &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 + 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 + 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 + 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 + inline bool + operator==(const _Rb_tree_iterator<_Val>& __x, + const _Rb_tree_const_iterator<_Val>& __y) + { return __x._M_node == __y._M_node; } + + template + 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 > + 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(&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 + 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 iterator; + typedef _Rb_tree_const_iterator const_iterator; + + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_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 + _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 + void + _M_insert_unique(_InputIterator __first, _InputIterator __last); + + template + 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 + equal_range(const key_type& __k); + + pair + equal_range(const key_type& __k) const; + + + bool + __rb_verify() const; + }; + + template + 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 + 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 + 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 + 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 + 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 + 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 + 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 + _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 _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 _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 _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 _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 + 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 _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 _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 _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 _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 + pair::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(_M_lower_bound(__x, __y, __k), + _M_upper_bound(__xu, __yu, __k)); + } + } + return pair(iterator(__y), + iterator(__y)); + } + + template + pair::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(_M_lower_bound(__x, __y, __k), + _M_upper_bound(__xu, __yu, __k)); + } + } + return pair(const_iterator(__y), + const_iterator(__y)); + } + + template + 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 + pair::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(_M_insert_(__x, __y, __v), true); + else + --__j; + } + if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v))) + return pair(_M_insert_(__x, __y, __v), true); + return pair(__j, false); + } + + template + 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 _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 _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 + template + 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 + template + 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 + 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 + 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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + erase(const _Key& __x) + { + pair __p = equal_range(__x); + const size_type __old_size = size(); + erase(__p.first, __p.second); + return __old_size - size(); + } + + template + 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 + 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 + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + erase(const _Key* __first, const _Key* __last) + { + while (__first != __last) + erase(*__first++); + } + + template + 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 _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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + count(const _Key& __k) const + { + pair __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 + 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 _Alloc = std::allocator > > + class map + { + public: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair 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 + { + 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::other + _Pair_alloc_type; + + typedef _Rb_tree, + 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 + 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 + 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 + 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 + 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 + 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 + equal_range(const key_type& __x) const + { return _M_t.equal_range(__x); } + + template + friend bool + operator==(const map<_K1, _T1, _C1, _A1>&, + const map<_K1, _T1, _C1, _A1>&); + + template + 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 + 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 + 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 + inline bool + operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + + template + inline bool + operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return __y < __x; } + + + template + inline bool + operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + + template + inline bool + operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + + template + 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 _Alloc = std::allocator > > + class multimap + { + public: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair 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 + { + 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::other + _Pair_alloc_type; + + typedef _Rb_tree, + 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 + 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 + 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 + 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 + 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 + equal_range(const key_type& __x) const + { return _M_t.equal_range(__x); } + + template + friend bool + operator==(const multimap<_K1, _T1, _C1, _A1>&, + const multimap<_K1, _T1, _C1, _A1>&); + + template + 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 + 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 + 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 + inline bool + operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + + template + inline bool + operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return __y < __x; } + + + template + inline bool + operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + + template + inline bool + operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + + template + 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 inline bool qMapLessThanKey(const Key &key1, const Key &key2) +{ + return key1 < key2; +} + + +template inline bool qMapLessThanKey(Ptr *key1, Ptr *key2) +{ + qt_noop(); + return quintptr(key1) < quintptr(key2); +} + +template inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2) +{ + qt_noop(); + return quintptr(key1) < quintptr(key2); +} + + +template +struct QMapNode { + Key key; + T value; + QMapData::Node *backward; + QMapData::Node *forward[1]; +}; + +template +struct QMapPayloadNode +{ + Key key; + T value; + QMapData::Node *backward; +}; + +template +class QMap +{ + typedef QMapNode Node; + typedef QMapPayloadNode 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(reinterpret_cast(node) - payload()); + } + +public: + inline QMap() : d(&QMapData::shared_null) { d->ref.ref(); } + inline QMap(const QMap &other) : d(other.d) + { d->ref.ref(); if (!d->sharable) detach(); } + inline ~QMap() { if (!d) return; if (!d->ref.deref()) freeData(d); } + + QMap &operator=(const QMap &other); + + explicit QMap(const typename std::map &other); + std::map toStdMap() const; + + + bool operator==(const QMap &other) const; + inline bool operator!=(const QMap &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 uniqueKeys() const; + QList keys() const; + QList keys(const T &value) const; + QList values() const; + QList 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 &unite(const QMap &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 +inline QMap &QMap::operator=(const QMap &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 +inline void QMap::clear() +{ + *this = QMap(); +} + +template +inline typename QMapData::Node * +QMap::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 +inline QMapData::Node *QMap::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(concrete(next)->key, akey)) + cur = next; + } + + if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { + return next; + } else { + return e; + } +} + +template +inline const T QMap::value(const Key &akey) const +{ + QMapData::Node *node; + if (d->size == 0 || (node = findNode(akey)) == e) { + return T(); + } else { + return concrete(node)->value; + } +} + +template +inline const T QMap::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 +inline const T QMap::operator[](const Key &akey) const +{ + return value(akey); +} + +template +inline T &QMap::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 +inline int QMap::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(akey, concrete(node)->key)); + } + return cnt; +} + +template +inline bool QMap::contains(const Key &akey) const +{ + return findNode(akey) != e; +} + +template +inline typename QMap::iterator QMap::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 +inline typename QMap::iterator QMap::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 +inline typename QMap::const_iterator QMap::find(const Key &akey) const +{ + return const_iterator(findNode(akey)); +} + +template +inline typename QMap::const_iterator QMap::constFind(const Key &akey) const +{ + return const_iterator(findNode(akey)); +} + +template +inline typename QMap::iterator QMap::find(const Key &akey) +{ + detach(); + return iterator(findNode(akey)); +} + +template +inline QMap &QMap::unite(const QMap &other) +{ + QMap 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 + void QMap::freeData(QMapData *x) +{ + if (QTypeInfo::isComplex || QTypeInfo::isComplex) { + QMapData::Node *y = reinterpret_cast(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 + int QMap::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(concrete(next)->key, akey)) + cur = next; + update[i] = cur; + } + + if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { + bool deleteNext = true; + do { + cur = next; + next = cur->forward[0]; + deleteNext = (next != e && !qMapLessThanKey(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 + T QMap::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(concrete(next)->key, akey)) + cur = next; + update[i] = cur; + } + + if (next != e && !qMapLessThanKey(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 + typename QMap::iterator QMap::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(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 + void QMap::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 + QMapData::Node *QMap::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(concrete(next)->key, akey)) + cur = next; + aupdate[i] = cur; + } + if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { + return next; + } else { + return e; + } +} + +template + QList QMap::uniqueKeys() const +{ + QList 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 + QList QMap::keys() const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + res.append(i.key()); + ++i; + } + return res; +} + +template + QList QMap::keys(const T &avalue) const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + if (i.value() == avalue) + res.append(i.key()); + ++i; + } + return res; +} + +template + const Key QMap::key(const T &avalue) const +{ + return key(avalue, Key()); +} + +template + const Key QMap::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 + QList QMap::values() const +{ + QList res; + const_iterator i = begin(); + while (i != end()) { + res.append(i.value()); + ++i; + } + return res; +} + +template + QList QMap::values(const Key &akey) const +{ + QList res; + QMapData::Node *node = findNode(akey); + if (node != e) { + do { + res.append(concrete(node)->value); + node = node->forward[0]; + } while (node != e && !qMapLessThanKey(akey, concrete(node)->key)); + } + return res; +} + +template +inline typename QMap::const_iterator +QMap::lowerBound(const Key &akey) const +{ + QMapData::Node *update[QMapData::LastLevel + 1]; + mutableFindNode(update, akey); + return const_iterator(update[0]->forward[0]); +} + +template +inline typename QMap::iterator QMap::lowerBound(const Key &akey) +{ + detach(); + return static_cast(const_cast(this)->lowerBound(akey)); +} + +template +inline typename QMap::const_iterator +QMap::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(akey, concrete(node)->key)) + node = node->forward[0]; + return const_iterator(node); +} + +template +inline typename QMap::iterator QMap::upperBound(const Key &akey) +{ + detach(); + return static_cast(const_cast(this)->upperBound(akey)); +} + +template + bool QMap::operator==(const QMap &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 + QMap::QMap(const std::map &other) +{ + d = QMapData::createData(); + d->insertInOrder = true; + typename std::map::const_iterator it = other.end(); + while (it != other.begin()) { + --it; + insert((*it).first, (*it).second); + } + d->insertInOrder = false; +} + +template + std::map QMap::toStdMap() const +{ + std::map map; + const_iterator it = end(); + while (it != begin()) { + --it; + map.insert(std::pair(it.key(), it.value())); + } + return map; +} + + + +template +class QMultiMap : public QMap +{ +public: + QMultiMap() {} + QMultiMap(const QMap &other) : QMap(other) {} + + inline typename QMap::iterator replace(const Key &key, const T &value) + { return QMap::insert(key, value); } + inline typename QMap::iterator insert(const Key &key, const T &value) + { return QMap::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::contains; + using QMap::remove; + using QMap::count; + using QMap::find; + using QMap::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::iterator find(const Key &key, const T &value) { + typename QMap::iterator i(find(key)); + typename QMap::iterator end(this->end()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QMap::const_iterator find(const Key &key, const T &value) const { + typename QMap::const_iterator i(constFind(key)); + typename QMap::const_iterator end(QMap::constEnd()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) + return i; + ++i; + } + return end; + } + typename QMap::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 +inline bool QMultiMap::contains(const Key &key, const T &value) const +{ + return constFind(key, value) != QMap::constEnd(); +} + +template +inline int QMultiMap::remove(const Key &key, const T &value) +{ + int n = 0; + typename QMap::iterator i(find(key)); + typename QMap::const_iterator end(QMap::constEnd()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) { + i = erase(i); + ++n; + } else { + ++i; + } + } + return n; +} + +template +inline int QMultiMap::count(const Key &key, const T &value) const +{ + int n = 0; + typename QMap::const_iterator i(constFind(key)); + typename QMap::const_iterator end(QMap::constEnd()); + while (i != end && !qMapLessThanKey(key, i.key())) { + if (i.value() == value) + ++n; + ++i; + } + return n; +} + +template class QMapIterator { typedef typename QMap::const_iterator const_iterator; typedef const_iterator Item; QMap c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QMapIterator(const QMap &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QMapIterator &operator=(const QMap &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 QMutableMapIterator { typedef typename QMap::iterator iterator; typedef typename QMap::const_iterator const_iterator; typedef iterator Item; QMap *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableMapIterator(QMap &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableMapIterator() { c->setSharable(true); } inline QMutableMapIterator &operator=(QMap &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 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 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 { 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 operator|(QLocale::NumberOptions::enum_type f1, QLocale::NumberOptions::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QLocale::NumberOptions::enum_type f1, QFlags 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(d_ptr); } inline const QTextStreamPrivate* d_func() const { return reinterpret_cast(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 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 operator|(QTextStream::NumberFlags::enum_type f1, QTextStream::NumberFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QTextStream::NumberFlags::enum_type f1, QFlags 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 + inline void + _Construct(_T1* __p, const _T2& __value) + { + + + ::new(static_cast(__p)) _T1(__value); + } + + + + + template + inline void + _Destroy(_Tp* __pointer) + { __pointer->~_Tp(); } + + + + + + + template + 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 class allocator; + + template + void + _Destroy(_ForwardIterator __first, _ForwardIterator __last, + _Allocator& __alloc) + { + for (; __first != __last; ++__first) + __alloc.destroy(&*__first); + } + + template + 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 + struct __uninitialized_copy + { + template + static _ForwardIterator + uninitialized_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result) + { + _ForwardIterator __cur = __result; + try + { + for (; __first != __last; ++__first, ++__cur) + ::new(static_cast(&*__cur)) typename + iterator_traits<_ForwardIterator>::value_type(*__first); + return __cur; + } + catch(...) + { + std::_Destroy(__result, __cur); + throw; + } + } + }; + + template<> + struct __uninitialized_copy + { + template + 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 + 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 + struct __uninitialized_fill + { + template + 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 + { + template + 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 + 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 + struct __uninitialized_fill_n + { + template + 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 + { + template + 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 + 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 + _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 + inline _ForwardIterator + __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, allocator<_Tp>&) + { return std::uninitialized_copy(__first, __last, __result); } + + template + inline _ForwardIterator + __uninitialized_move_a(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, _Allocator& __alloc) + { + return std::__uninitialized_copy_a((__first), + (__last), + __result, __alloc); + } + + template + 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 + inline void + __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x, allocator<_Tp2>&) + { std::uninitialized_fill(__first, __last, __x); } + + template + 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 + 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 + 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 + 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 + 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 + 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 + 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(&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 > + 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 iterator; + typedef __gnu_cxx::__normal_iterator + const_iterator; + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_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 + 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 + 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 + 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 + 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 + void + _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) + { + this->_M_impl._M_start = _M_allocate(static_cast(__n)); + this->_M_impl._M_end_of_storage = + this->_M_impl._M_start + static_cast(__n); + _M_fill_initialize(static_cast(__n), __value); + } + + + template + 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 + void + _M_range_initialize(_InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + push_back(*__first); + } + + + template + 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 + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + + template + 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 + void + _M_assign_aux(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag); + + + template + 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 + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, + __true_type) + { _M_fill_insert(__pos, __n, __val); } + + + template + 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 + void + _M_range_insert(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag); + + + template + 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 + 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 + 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 + inline bool + operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + + template + inline bool + operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return __y < __x; } + + + template + inline bool + operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + + template + inline bool + operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + + template + 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 + { + _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(__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 + 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(&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 + class vector : 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_reverse_iterator; + typedef std::reverse_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 + 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 + 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::__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::_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:: + _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 + 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 + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { + _M_initialize(static_cast(__n)); + std::fill(this->_M_impl._M_start._M_p, + this->_M_impl._M_end_of_storage, __x ? ~0 : 0); + } + + template + void + _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { _M_initialize_range(__first, __last, + std::__iterator_category(__first)); } + + template + void + _M_initialize_range(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { + for (; __first != __last; ++__first) + push_back(*__first); + } + + template + 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 + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + template + 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 + 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 + 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 + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, + __true_type) + { _M_fill_insert(__pos, __n, __x); } + + template + 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 + void + _M_insert_range(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + { + __pos = insert(__pos, *__first); + ++__pos; + } + } + + template + 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 + 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 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 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 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 + 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 + 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 + template + 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 + template + 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 + 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 + 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 + template + 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 + template + 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 + void + vector:: + 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 + void + vector:: + _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::_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 + template + void + vector:: + _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::_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 + void + vector:: + _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::_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 +struct QVectorTypedData +{ + QBasicAtomicInt ref; + int alloc; + int size; + + + + + + uint sharable : 1; + uint capacity : 1; + + T array[1]; +}; + +class QRegion; + +template +class QVector +{ + typedef QVectorTypedData Data; + union { QVectorData *p; QVectorTypedData *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 &v) : d(v.d) { d->ref.ref(); if (!d->sharable) detach_helper(); } + inline ~QVector() { if (!d) return; if (!d->ref.deref()) free(d); } + QVector &operator=(const QVector &v); + bool operator==(const QVector &v) const; + inline bool operator!=(const QVector &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 &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 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 &operator+=(const QVector &l); + inline QVector operator+(const QVector &l) const + { QVector n = *this; n += l; return n; } + inline QVector &operator+=(const T &t) + { append(t); return *this; } + inline QVector &operator<< (const T &t) + { append(t); return *this; } + inline QVector &operator<<(const QVector &l) + { *this += l; return *this; } + + QList toList() const; + + static QVector fromList(const QList &list); + + + static inline QVector fromStdVector(const std::vector &vector) + { QVector tmp; qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; } + inline std::vector toStdVector() const + { std::vector 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(&(reinterpret_cast(this))->array[1]) - reinterpret_cast(this); + } +}; + +template +void QVector::detach_helper() +{ realloc(d->size, d->alloc); } +template +void QVector::reserve(int asize) +{ if (asize > d->alloc) realloc(d->size, asize); d->capacity = 1; } +template +void QVector::resize(int asize) +{ realloc(asize, (asize > d->alloc || (!d->capacity && asize < d->size && asize < (d->alloc >> 1))) ? + QVectorData::grow(sizeOfTypedData(), asize, sizeof(T), QTypeInfo::isStatic) + : d->alloc); } +template +inline void QVector::clear() +{ *this = QVector(); } +template +inline const T &QVector::at(int i) const +{ qt_noop(); + return d->array[i]; } +template +inline const T &QVector::operator[](int i) const +{ qt_noop(); + return d->array[i]; } +template +inline T &QVector::operator[](int i) +{ qt_noop(); + return data()[i]; } +template +inline void QVector::insert(int i, const T &t) +{ qt_noop(); + insert(begin() + i, 1, t); } +template +inline void QVector::insert(int i, int n, const T &t) +{ qt_noop(); + insert(begin() + i, n, t); } +template +inline void QVector::remove(int i, int n) +{ qt_noop(); + erase(begin() + i, begin() + i + n); } +template +inline void QVector::remove(int i) +{ qt_noop(); + erase(begin() + i, begin() + i + 1); } +template +inline void QVector::prepend(const T &t) +{ insert(begin(), 1, t); } + +template +inline void QVector::replace(int i, const T &t) +{ + qt_noop(); + const T copy(t); + data()[i] = copy; +} + +template +QVector &QVector::operator=(const QVector &v) +{ + v.d->ref.ref(); + if (!d->ref.deref()) + free(d); + d = v.d; + if (!d->sharable) + detach_helper(); + return *this; +} + +template +inline QVectorData *QVector::malloc(int aalloc) +{ + return static_cast(qMalloc(sizeOfTypedData() + (aalloc - 1) * sizeof(T))); +} + +template +QVector::QVector(int asize) +{ + p = malloc(asize); + d->ref = 1; + d->alloc = d->size = asize; + d->sharable = true; + d->capacity = false; + if (QTypeInfo::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 +QVector::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 +void QVector::free(Data *x) +{ + if (QTypeInfo::isComplex) { + T* b = x->array; + T* i = b + x->size; + while (i-- != b) + i->~T(); + } + qFree(x); +} + +template +void QVector::realloc(int asize, int aalloc) +{ + T *j, *i, *b; + union { QVectorData *p; Data *d; } x; + x.d = d; + + if (QTypeInfo::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::isStatic) { + x.p = malloc(aalloc); + } else if (d->ref != 1) { + x.p = QVectorData::malloc(sizeOfTypedData(), aalloc, sizeof(T), p); + } else { + if (QTypeInfo::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(qRealloc(p, sizeOfTypedData() + (aalloc - 1) * sizeof(T))); + } + x.d->ref = 1; + x.d->sharable = true; + x.d->capacity = d->capacity; + + } + if (QTypeInfo::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 + T QVector::value(int i) const +{ + if (i < 0 || i >= p->size) { + return T(); + } + return d->array[i]; +} +template + T QVector::value(int i, const T &defaultValue) const +{ + return ((i < 0 || i >= p->size) ? defaultValue : d->array[i]); +} + +template +void QVector::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::isStatic)); + if (QTypeInfo::isComplex) + new (d->array + d->size) T(copy); + else + d->array[d->size] = copy; + } else { + if (QTypeInfo::isComplex) + new (d->array + d->size) T(t); + else + d->array[d->size] = t; + } + ++d->size; +} + +template +typename QVector::iterator QVector::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::isStatic)); + if (QTypeInfo::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 QVector::iterator QVector::erase(iterator abegin, iterator aend) +{ + int f = abegin - d->array; + int l = aend - d->array; + int n = l - f; + detach(); + if (QTypeInfo::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 +bool QVector::operator==(const QVector &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 +QVector &QVector::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 +QVector &QVector::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::isComplex) + new (--w) T(*--i); + else + *--w = *--i; + } + d->size = newSize; + return *this; +} + +template +int QVector::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 +int QVector::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 +bool QVector::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 +int QVector::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 + QVector QVector::mid(int pos, int length) const +{ + if (length < 0) + length = size() - pos; + if (pos == 0 && length == size()) + return *this; + QVector copy; + if (pos + length > size()) + length = size() - pos; + for (int i = pos; i < pos + length; ++i) + copy += at(i); + return copy; +} + +template + QList QVector::toList() const +{ + QList result; + for (int i = 0; i < size(); ++i) + result.append(at(i)); + return result; +} + +template + QVector QList::toVector() const +{ + QVector result(size()); + for (int i = 0; i < size(); ++i) + result[i] = at(i); + return result; +} + +template +QVector QVector::fromList(const QList &list) +{ + return list.toVector(); +} + +template +QList QList::fromVector(const QVector &vector) +{ + return vector.toList(); +} + +template class QVectorIterator { typedef typename QVector::const_iterator const_iterator; QVector c; const_iterator i; public: inline QVectorIterator(const QVector &container) : c(container), i(c.constBegin()) {} inline QVectorIterator &operator=(const QVector &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 QMutableVectorIterator { typedef typename QVector::iterator iterator; typedef typename QVector::const_iterator const_iterator; QVector *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableVectorIterator(QVector &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableVectorIterator() { c->setSharable(true); } inline QMutableVectorIterator &operator=(QVector &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 QSet +{ + typedef QHash Hash; + +public: + inline QSet() {} + inline QSet(const QSet &other) : q_hash(other.q_hash) {} + + inline QSet &operator=(const QSet &other) + { q_hash = other.q_hash; return *this; } + + inline bool operator==(const QSet &other) const + { return q_hash == other.q_hash; } + inline bool operator!=(const QSet &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 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 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(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(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 &unite(const QSet &other); + QSet &intersect(const QSet &other); + QSet &subtract(const QSet &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 &operator<<(const T &value) { insert(value); return *this; } + inline QSet &operator|=(const QSet &other) { unite(other); return *this; } + inline QSet &operator|=(const T &value) { insert(value); return *this; } + inline QSet &operator&=(const QSet &other) { intersect(other); return *this; } + inline QSet &operator&=(const T &value) + { QSet result; if (contains(value)) result.insert(value); return (*this = result); } + inline QSet &operator+=(const QSet &other) { unite(other); return *this; } + inline QSet &operator+=(const T &value) { insert(value); return *this; } + inline QSet &operator-=(const QSet &other) { subtract(other); return *this; } + inline QSet &operator-=(const T &value) { remove(value); return *this; } + inline QSet operator|(const QSet &other) const + { QSet result = *this; result |= other; return result; } + inline QSet operator&(const QSet &other) const + { QSet result = *this; result &= other; return result; } + inline QSet operator+(const QSet &other) const + { QSet result = *this; result += other; return result; } + inline QSet operator-(const QSet &other) const + { QSet result = *this; result -= other; return result; } + + + inline QSet operator|(const QSet &other) + { QSet result = *this; result |= other; return result; } + inline QSet operator&(const QSet &other) + { QSet result = *this; result &= other; return result; } + inline QSet operator+(const QSet &other) + { QSet result = *this; result += other; return result; } + inline QSet operator-(const QSet &other) + { QSet result = *this; result -= other; return result; } + + + QList toList() const; + inline QList values() const { return toList(); } + + static QSet fromList(const QList &list); + +private: + Hash q_hash; +}; + +template +inline void QSet::reserve(int asize) { q_hash.reserve(asize); } + +template +inline QSet &QSet::unite(const QSet &other) +{ + QSet copy(other); + typename QSet::const_iterator i = copy.constEnd(); + while (i != copy.constBegin()) { + --i; + insert(*i); + } + return *this; +} + +template +inline QSet &QSet::intersect(const QSet &other) +{ + QSet copy1(*this); + QSet copy2(other); + typename QSet::const_iterator i = copy1.constEnd(); + while (i != copy1.constBegin()) { + --i; + if (!copy2.contains(*i)) + remove(*i); + } + return *this; +} + +template +inline QSet &QSet::subtract(const QSet &other) +{ + QSet copy1(*this); + QSet copy2(other); + typename QSet::const_iterator i = copy1.constEnd(); + while (i != copy1.constBegin()) { + --i; + if (copy2.contains(*i)) + remove(*i); + } + return *this; +} + +template + QList QSet::toList() const +{ + QList result; + typename QSet::const_iterator i = constBegin(); + while (i != constEnd()) { + result.append(*i); + ++i; + } + return result; +} + +template + QSet QList::toSet() const +{ + QSet result; + result.reserve(size()); + for (int i = 0; i < size(); ++i) + result.insert(at(i)); + return result; +} + +template +QSet QSet::fromList(const QList &list) +{ + return list.toSet(); +} + +template +QList QList::fromSet(const QSet &set) +{ + return set.toList(); +} + +template class QSetIterator { typedef typename QSet::const_iterator const_iterator; QSet c; const_iterator i; public: inline QSetIterator(const QSet &container) : c(container), i(c.constBegin()) {} inline QSetIterator &operator=(const QSet &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 QMutableSetIterator +{ + typedef typename QSet::iterator iterator; + QSet *c; + iterator i, n; + inline bool item_exists() const { return n != c->constEnd(); } + +public: + inline QMutableSetIterator(QSet &container) + : c(&container) + { c->setSharable(false); i = c->begin(); n = c->end(); } + inline ~QMutableSetIterator() + { c->setSharable(true); } + inline QMutableSetIterator &operator=(QSet &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 + 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 +inline QDebug operator<<(QDebug debug, const QList &list) + +{ + debug.nospace() << "("; + for (typename QList::size_type i = 0; i < list.count(); ++i) { + if (i) + debug << ", "; + debug << list.at(i); + } + debug << ")"; + return debug.space(); +} + + + + + +template +inline QDebug operator<<(QDebug debug, const QVector &vec) + +{ + debug.nospace() << "QVector"; + return operator<<(debug, vec.toList()); +} + + + + + +template +inline QDebug operator<<(QDebug debug, const QMap &map) + +{ + debug.nospace() << "QMap("; + for (typename QMap::const_iterator it = map.constBegin(); + it != map.constEnd(); ++it) { + debug << "(" << it.key() << ", " << it.value() << ")"; + } + debug << ")"; + return debug.space(); +} + + + + + +template +inline QDebug operator<<(QDebug debug, const QHash &hash) + +{ + debug.nospace() << "QHash("; + for (typename QHash::const_iterator it = hash.constBegin(); + it != hash.constEnd(); ++it) + debug << "(" << it.key() << ", " << it.value() << ")"; + debug << ")"; + return debug.space(); +} + + + + + +template +inline QDebug operator<<(QDebug debug, const QPair &pair) + +{ + debug.nospace() << "QPair(" << pair.first << "," << pair.second << ")"; + return debug.space(); +} + +template +inline QDebug operator<<(QDebug debug, const QSet &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 QCache; +template class QHash; +template class QLinkedList; +template class QList; +template class QMap; +template class QMultiHash; +template class QMultiMap; +template struct QPair; +template class QQueue; +template class QSet; +template class QStack; +template class QVarLengthArray; +template 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 QVarLengthArray +{ +public: + inline explicit QVarLengthArray(int size = 0); + + inline QVarLengthArray(const QVarLengthArray &other) + : a(Prealloc), s(0), ptr(reinterpret_cast(array)) + { + append(other.constData(), other.size()); + } + + inline ~QVarLengthArray() { + if (QTypeInfo::isComplex) { + T *i = ptr + s; + while (i-- != ptr) + i->~T(); + } + if (ptr != reinterpret_cast(array)) + qFree(ptr); + } + inline QVarLengthArray &operator=(const QVarLengthArray &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::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 +inline QVarLengthArray::QVarLengthArray(int asize) + : s(asize) { + if (s > Prealloc) { + ptr = reinterpret_cast(qMalloc(s * sizeof(T))); + a = s; + } else { + ptr = reinterpret_cast(array); + a = Prealloc; + } + if (QTypeInfo::isComplex) { + T *i = ptr + s; + while (i != ptr) + new (--i) T; + } +} + +template +inline void QVarLengthArray::resize(int asize) +{ realloc(asize, qMax(asize, a)); } + +template +inline void QVarLengthArray::reserve(int asize) +{ if (asize > a) realloc(s, asize); } + +template + void QVarLengthArray::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::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 + void QVarLengthArray::realloc(int asize, int aalloc) +{ + qt_noop(); + T *oldPtr = ptr; + int osize = s; + s = asize; + + if (aalloc != a) { + ptr = reinterpret_cast(qMalloc(aalloc * sizeof(T))); + if (ptr) { + a = aalloc; + + if (QTypeInfo::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::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(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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 QStringListIterator; +typedef QMutableListIterator QMutableStringListIterator; + +class QStringList : public QList +{ +public: + inline QStringList() { } + inline explicit QStringList(const QString &i) { append(i); } + inline QStringList(const QStringList &l) : QList(l) { } + inline QStringList(const QList &l) : QList(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::indexOf; + using QList::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 &>(list)); +} +inline QDataStream &operator<<(QDataStream &out, const QStringList &list) +{ + return operator<<(out, static_cast &>(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 class QList; +typedef QList 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 QHash; +typedef QHash QWidgetMapper; + +template class QSet; +typedef QSet 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 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 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 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 { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(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(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 +void qMetaTypeDeleteHelper(T *t) +{ + delete t; +} + +template +void *qMetaTypeConstructHelper(const T *t) +{ + if (!t) + return new T; + return new T(*static_cast(t)); +} + + +template +void qMetaTypeSaveHelper(QDataStream &stream, const T *t) +{ + stream << *t; +} + +template +void qMetaTypeLoadHelper(QDataStream &stream, T *t) +{ + stream >> *t; +} + + +template +int qRegisterMetaType(const char *typeName + + , T * = 0 + +) +{ + typedef void*(*ConstructPtr)(const T*); + ConstructPtr cptr = qMetaTypeConstructHelper; + typedef void(*DeletePtr)(T*); + DeletePtr dptr = qMetaTypeDeleteHelper; + + return QMetaType::registerType(typeName, reinterpret_cast(dptr), + reinterpret_cast(cptr)); +} + + +template +void qRegisterMetaTypeStreamOperators(const char *typeName + + , T * = 0 + +) +{ + typedef void(*SavePtr)(QDataStream &, const T *); + typedef void(*LoadPtr)(QDataStream &, T *); + SavePtr sptr = qMetaTypeSaveHelper; + LoadPtr lptr = qMetaTypeLoadHelper; + + qRegisterMetaType(typeName); + QMetaType::registerStreamOperators(typeName, reinterpret_cast(sptr), + reinterpret_cast(lptr)); +} + + +template +struct QMetaTypeId +{ + enum { Defined = 0 }; +}; + +template +struct QMetaTypeId2 +{ + enum { Defined = QMetaTypeId::Defined }; + static inline int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } +}; + +template +inline int qMetaTypeId( + + T * = 0 + +) +{ + return QMetaTypeId2::qt_metatype_id(); +} + +template +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 { 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 { enum { Defined = 1, MetaType = QMetaType::QString }; static inline int qt_metatype_id() { return QMetaType::QString; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Int }; static inline int qt_metatype_id() { return QMetaType::Int; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::UInt }; static inline int qt_metatype_id() { return QMetaType::UInt; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Bool }; static inline int qt_metatype_id() { return QMetaType::Bool; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Double }; static inline int qt_metatype_id() { return QMetaType::Double; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QByteArray }; static inline int qt_metatype_id() { return QMetaType::QByteArray; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QChar }; static inline int qt_metatype_id() { return QMetaType::QChar; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Long }; static inline int qt_metatype_id() { return QMetaType::Long; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Short }; static inline int qt_metatype_id() { return QMetaType::Short; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Char }; static inline int qt_metatype_id() { return QMetaType::Char; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::ULong }; static inline int qt_metatype_id() { return QMetaType::ULong; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::UShort }; static inline int qt_metatype_id() { return QMetaType::UShort; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::UChar }; static inline int qt_metatype_id() { return QMetaType::UChar; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::Float }; static inline int qt_metatype_id() { return QMetaType::Float; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QObjectStar }; static inline int qt_metatype_id() { return QMetaType::QObjectStar; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QWidgetStar }; static inline int qt_metatype_id() { return QMetaType::QWidgetStar; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::VoidStar }; static inline int qt_metatype_id() { return QMetaType::VoidStar; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::LongLong }; static inline int qt_metatype_id() { return QMetaType::LongLong; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::ULongLong }; static inline int qt_metatype_id() { return QMetaType::ULongLong; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QStringList }; static inline int qt_metatype_id() { return QMetaType::QStringList; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QBitArray }; static inline int qt_metatype_id() { return QMetaType::QBitArray; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QDate }; static inline int qt_metatype_id() { return QMetaType::QDate; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QTime }; static inline int qt_metatype_id() { return QMetaType::QTime; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QDateTime }; static inline int qt_metatype_id() { return QMetaType::QDateTime; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QUrl }; static inline int qt_metatype_id() { return QMetaType::QUrl; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QLocale }; static inline int qt_metatype_id() { return QMetaType::QLocale; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QRect }; static inline int qt_metatype_id() { return QMetaType::QRect; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QRectF }; static inline int qt_metatype_id() { return QMetaType::QRectF; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QSize }; static inline int qt_metatype_id() { return QMetaType::QSize; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QSizeF }; static inline int qt_metatype_id() { return QMetaType::QSizeF; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QLine }; static inline int qt_metatype_id() { return QMetaType::QLine; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QLineF }; static inline int qt_metatype_id() { return QMetaType::QLineF; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QPoint }; static inline int qt_metatype_id() { return QMetaType::QPoint; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QPointF }; static inline int qt_metatype_id() { return QMetaType::QPointF; } }; + + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QRegExp }; static inline int qt_metatype_id() { return QMetaType::QRegExp; } }; + + + + + + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QFont }; static inline int qt_metatype_id() { return QMetaType::QFont; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QPixmap }; static inline int qt_metatype_id() { return QMetaType::QPixmap; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QBrush }; static inline int qt_metatype_id() { return QMetaType::QBrush; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QColor }; static inline int qt_metatype_id() { return QMetaType::QColor; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QPalette }; static inline int qt_metatype_id() { return QMetaType::QPalette; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QIcon }; static inline int qt_metatype_id() { return QMetaType::QIcon; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QImage }; static inline int qt_metatype_id() { return QMetaType::QImage; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QPolygon }; static inline int qt_metatype_id() { return QMetaType::QPolygon; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QRegion }; static inline int qt_metatype_id() { return QMetaType::QRegion; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QBitmap }; static inline int qt_metatype_id() { return QMetaType::QBitmap; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QCursor }; static inline int qt_metatype_id() { return QMetaType::QCursor; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QSizePolicy }; static inline int qt_metatype_id() { return QMetaType::QSizePolicy; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QKeySequence }; static inline int qt_metatype_id() { return QMetaType::QKeySequence; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QPen }; static inline int qt_metatype_id() { return QMetaType::QPen; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QTextLength }; static inline int qt_metatype_id() { return QMetaType::QTextLength; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QTextFormat }; static inline int qt_metatype_id() { return QMetaType::QTextFormat; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QMatrix }; static inline int qt_metatype_id() { return QMetaType::QMatrix; } }; + template<> struct QMetaTypeId2 { 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 +inline QVariant qVariantFromValue(const T &); + +template +inline void qVariantSetValue(QVariant &, const T &); + +template +inline T qVariantValue(const QVariant &); + +template +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 &list); + QVariant(const QMap &map); + QVariant(const QHash &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 toList() const; + QMap toMap() const; + QHash 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 + inline void setValue(const T &value); + + template + inline T value() const + { return qVariantValue(*this); } + + template + static inline QVariant fromValue(const T &value) + { return qVariantFromValue(value); } + + template + bool canConvert() const + { return qVariantCanConvert(*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 QVariantList; +typedef QMap QVariantMap; +typedef QHash QVariantHash; + +inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr) +{ return QVariant::handler->convert(&v.d, tp, ptr, 0); } + +template +inline QVariant qVariantFromValue(const T &t) +{ + return QVariant(qMetaTypeId(reinterpret_cast(0)), &t); +} + +template <> +inline QVariant qVariantFromValue(const QVariant &t) { return t; } + +template +inline void qVariantSetValue(QVariant &v, const T &t) +{ + v = QVariant(qMetaTypeId(reinterpret_cast(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 +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 T qvariant_cast(const QVariant &v) +{ + const int vid = qMetaTypeId(static_cast(0)); + if (vid == v.userType()) + return *reinterpret_cast(v.constData()); + if (vid < int(QMetaType::User)) { + T t; + if (qvariant_cast_helper(v, QVariant::Type(vid), &t)) + return t; + } + return T(); +} + +template +inline T qVariantValue(const QVariant &variant) +{ return qvariant_cast(variant); } + +template +inline bool qVariantCanConvert(const QVariant &variant) +{ + return variant.canConvert(static_cast( + qMetaTypeId(static_cast(0)))); +} + + +template <> inline bool qIsDetached(QVariant &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(QVariant &value1, QVariant &value2) { const QVariant::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; } +template <> class QTypeInfo { 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 { enum { Defined = 1, MetaType = QMetaType::QVariantList }; static inline int qt_metatype_id() { return QMetaType::QVariantList; } }; + template<> struct QMetaTypeId2 { enum { Defined = 1, MetaType = QMetaType::QVariantMap }; static inline int qt_metatype_id() { return QMetaType::QVariantMap; } }; + template<> struct QMetaTypeId2 { 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 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 urls() const; + void setUrls(const QList &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(d_ptr); } inline const QMimeDataPrivate* d_func() const { return reinterpret_cast(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 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(d_ptr); } inline const QDragPrivate* d_func() const { return reinterpret_cast(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(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(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 &attributes); + void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0); + + inline const QList &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 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 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 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 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 &other) const { return d == other.d; } + inline bool operator!=(const QSharedDataPointer &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 &o) : d(o.d) { if (d) d->ref.ref(); } + inline QSharedDataPointer & operator=(const QSharedDataPointer &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 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 &other) const { return d == other.d; } + inline bool operator!=(const QExplicitlySharedDataPointer &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 &o) : d(o.d) { if (d) d->ref.ref(); } + + + template + inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) : d(static_cast(o.data())) + { + if(d) + d->ref.ref(); + } + + + inline QExplicitlySharedDataPointer & operator=(const QExplicitlySharedDataPointer &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 +inline QSharedDataPointer::QSharedDataPointer(T *adata) : d(adata) +{ if (d) d->ref.ref(); } + +template +inline T *QSharedDataPointer::clone() +{ + return new T(*d); +} + +template + void QSharedDataPointer::detach_helper() +{ + T *x = clone(); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +template +inline T *QExplicitlySharedDataPointer::clone() +{ + return new T(*d); +} + +template + void QExplicitlySharedDataPointer::detach_helper() +{ + T *x = clone(); + x->ref.ref(); + if (!d->ref.deref()) + delete d; + d = x; +} + +template +inline QExplicitlySharedDataPointer::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 +{ +public: + inline QPolygon() {} + inline ~QPolygon() {} + inline QPolygon(int size); + inline QPolygon(const QPolygon &a) : QVector(a) {} + inline QPolygon(const QVector &v) : QVector(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(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 +{ +public: + inline QPolygonF() {} + inline ~QPolygonF() {} + inline QPolygonF(int size); + inline QPolygonF(const QPolygonF &a) : QVector(a) {} + inline QPolygonF(const QVector &v) : QVector(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(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 { 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 { 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 { 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 toSubpathPolygons(const QMatrix &matrix = QMatrix()) const; + QList toFillPolygons(const QMatrix &matrix = QMatrix()) const; + QPolygonF toFillPolygon(const QMatrix &matrix = QMatrix()) const; + QList toSubpathPolygons(const QTransform &matrix) const; + QList 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(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 elements; +}; + +template <> class QTypeInfo { 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(d_ptr); } inline const QPainterPathStrokerPrivate* d_func() const { return reinterpret_cast(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 &dashPattern); + QVector 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 { 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 QList; +template 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 &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 colorTable() const; + void setColorTable(const QVector 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(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(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 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 *qt_image_colortable(const QImage &image); + +public: + typedef QImageData * DataPtr; + inline DataPtr &data_ptr() { return d; } +}; + +template <> inline bool qIsDetached(QImage &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(QImage &value1, QImage &value2) { const QImage::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; } +template <> class QTypeInfo { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(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(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 { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(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 QGradientStop; +typedef QVector 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 dashPattern() const; + void setDashPattern(const QVector &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 { 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 &t) { return t.isDetached(); } template inline void qSwap(T &, T &); template <> inline void qSwap(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 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(wordWrap); } + + enum Flag { + ShowTabsAndSpaces = 0x1, + ShowLineAndParagraphSeparators = 0x2, + AddSpaceForLineAndParagraphSeparators = 0x4, + SuppressColors = 0x8, + IncludeTrailingSpaces = 0x80000000 + }; + typedef QFlags 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 tabStops); + QList tabArray() const; + + void setTabs(QList tabStops); + QList 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 operator|(QTextOption::Flags::enum_type f1, QTextOption::Flags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QTextOption::Flags::enum_type f1, QFlags 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 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 lengthVectorProperty(int propertyId) const; + + void setProperty(int propertyId, const QVector &lengths); + + QMap 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 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 operator|(QTextFormat::PageBreakFlags::enum_type f1, QTextFormat::PageBreakFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QTextFormat::PageBreakFlags::enum_type f1, QFlags 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(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(intProperty(FontStyleHint)); } + QFont::StyleStrategy fontStyleStrategy() const + { return static_cast(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(intProperty(TextUnderlineStyle)); } + + inline void setVerticalAlignment(VerticalAlignment alignment) + { setProperty(TextVerticalAlignment, alignment); } + inline VerticalAlignment verticalAlignment() const + { return static_cast(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 &tabs); + QList 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