Login
Log in using an SSO provider:
Fedora Account System
Red Hat Associate
Red Hat Customer
Login using a Red Hat Bugzilla account
Forgot Password
Create an Account
Red Hat Bugzilla – Attachment 1650115 Details for
Bug 1788104
internal compiler error: in final_scan_insn when building MariaDB on aarch64
Home
New
Search
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh90 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
[?]
This site requires JavaScript to be enabled to function correctly, please enable it.
Preprocessed source
cc4FYZbl.out (text/x-csrc), 2.08 MB, created by
vladbogolin
on 2020-01-06 12:43:00 UTC
(
hide
)
Description:
Preprocessed source
Filename:
MIME Type:
Creator:
vladbogolin
Created:
2020-01-06 12:43:00 UTC
Size:
2.08 MB
patch
obsolete
>// /usr/libexec/gcc/aarch64-redhat-linux/4.8.5/cc1plus -fpreprocessed row0log.ii -quiet -dumpbase row0log.cc -auxbase-strip CMakeFiles/innobase.dir/row/row0log.cc.o -g -O2 -fPIC -fstack-protector -fno-rtti -fvisibility=hidden --param ssp-buffer-size=4 -o - -frandom-seed=0 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase//" ># 1 "<built-in>" ># 1 "<command-line>" ># 1 "/usr/include/stdc-predef.h" 1 3 4 ># 1 "<command-line>" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0types.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0types.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0types.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0types.h" >struct dfield_t; > > >struct dtuple_t; ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 1 ># 83 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" ># 1 "/buildbot/mariadb-10.2.31/include/my_global.h" 1 ># 75 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_config.h" 1 ># 76 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 280 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/pthread.h" 1 3 4 ># 21 "/usr/include/pthread.h" 3 4 ># 1 "/usr/include/features.h" 1 3 4 ># 375 "/usr/include/features.h" 3 4 ># 1 "/usr/include/sys/cdefs.h" 1 3 4 ># 392 "/usr/include/sys/cdefs.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 393 "/usr/include/sys/cdefs.h" 2 3 4 ># 376 "/usr/include/features.h" 2 3 4 ># 399 "/usr/include/features.h" 3 4 ># 1 "/usr/include/gnu/stubs.h" 1 3 4 ># 400 "/usr/include/features.h" 2 3 4 ># 22 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/endian.h" 1 3 4 ># 36 "/usr/include/endian.h" 3 4 ># 1 "/usr/include/bits/endian.h" 1 3 4 ># 37 "/usr/include/endian.h" 2 3 4 ># 60 "/usr/include/endian.h" 3 4 ># 1 "/usr/include/bits/byteswap.h" 1 3 4 ># 27 "/usr/include/bits/byteswap.h" 3 4 ># 1 "/usr/include/bits/types.h" 1 3 4 ># 27 "/usr/include/bits/types.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 28 "/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; ># 130 "/usr/include/bits/types.h" 3 4 ># 1 "/usr/include/bits/typesizes.h" 1 3 4 ># 131 "/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 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 int __key_t; > > >typedef int __clockid_t; > > >typedef void * __timer_t; > > >typedef 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 __fsword_t; > >typedef long int __ssize_t; > > >typedef long int __syscall_slong_t; > >typedef unsigned long int __syscall_ulong_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; ># 28 "/usr/include/bits/byteswap.h" 2 3 4 > > > > > > ># 1 "/usr/include/bits/byteswap-16.h" 1 3 4 ># 35 "/usr/include/bits/byteswap.h" 2 3 4 ># 43 "/usr/include/bits/byteswap.h" 3 4 >static __inline unsigned int >__bswap_32 (unsigned int __bsx) >{ > return __builtin_bswap32 (__bsx); >} ># 74 "/usr/include/bits/byteswap.h" 3 4 >static __inline __uint64_t >__bswap_64 (__uint64_t __bsx) >{ > return __builtin_bswap64 (__bsx); >} ># 61 "/usr/include/endian.h" 2 3 4 ># 23 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/sched.h" 1 3 4 ># 29 "/usr/include/sched.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 212 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/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 ># 73 "/usr/include/time.h" 3 4 > > >typedef __time_t time_t; ># 120 "/usr/include/time.h" 3 4 >struct timespec > { > __time_t tv_sec; > __syscall_slong_t tv_nsec; > }; ># 34 "/usr/include/sched.h" 2 3 4 > > >typedef __pid_t pid_t; > > > > > ># 1 "/usr/include/bits/sched.h" 1 3 4 ># 73 "/usr/include/bits/sched.h" 3 4 >struct sched_param > { > int __sched_priority; > }; > >extern "C" { > > > >extern int clone (int (*__fn) (void *__arg), void *__child_stack, > int __flags, void *__arg, ...) throw (); > > >extern int unshare (int __flags) throw (); > > >extern int sched_getcpu (void) throw (); > > >extern int setns (int __fd, int __nstype) throw (); > > > >} > > > > > > > >struct __sched_param > { > int __sched_priority; > }; ># 119 "/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; ># 202 "/usr/include/bits/sched.h" 3 4 >extern "C" { > >extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) > throw (); >extern cpu_set_t *__sched_cpualloc (size_t __count) throw () __attribute__ ((__warn_unused_result__)); >extern void __sched_cpufree (cpu_set_t *__set) throw (); > >} ># 43 "/usr/include/sched.h" 2 3 4 > > > > >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 (); ># 117 "/usr/include/sched.h" 3 4 >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 (); > > >} ># 24 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/time.h" 1 3 4 ># 29 "/usr/include/time.h" 3 4 >extern "C" { > > > > > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 38 "/usr/include/time.h" 2 3 4 > > > ># 1 "/usr/include/bits/time.h" 1 3 4 ># 30 "/usr/include/bits/time.h" 3 4 >struct timeval > { > __time_t tv_sec; > __suseconds_t tv_usec; > }; ># 88 "/usr/include/bits/time.h" 3 4 ># 1 "/usr/include/bits/timex.h" 1 3 4 ># 25 "/usr/include/bits/timex.h" 3 4 >struct timex >{ > unsigned int modes; > __syscall_slong_t offset; > __syscall_slong_t freq; > __syscall_slong_t maxerror; > __syscall_slong_t esterror; > int status; > __syscall_slong_t constant; > __syscall_slong_t precision; > __syscall_slong_t tolerance; > struct timeval time; > __syscall_slong_t tick; > __syscall_slong_t ppsfreq; > __syscall_slong_t jitter; > int shift; > __syscall_slong_t stabil; > __syscall_slong_t jitcnt; > __syscall_slong_t calcnt; > __syscall_slong_t errcnt; > __syscall_slong_t stbcnt; > > int tai; > > > int :32; int :32; int :32; int :32; > int :32; int :32; int :32; int :32; > int :32; int :32; int :32; >}; ># 89 "/usr/include/bits/time.h" 2 3 4 > >extern "C" { > > >extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw (); > >} ># 42 "/usr/include/time.h" 2 3 4 ># 57 "/usr/include/time.h" 3 4 > > >typedef __clock_t clock_t; ># 91 "/usr/include/time.h" 3 4 >typedef __clockid_t clockid_t; ># 103 "/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; > > > > >}; ># 161 "/usr/include/time.h" 3 4 >struct itimerspec > { > struct timespec it_interval; > struct timespec it_value; > }; > > >struct sigevent; ># 186 "/usr/include/time.h" 3 4 > > > >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 (); > > > > > ># 1 "/usr/include/xlocale.h" 1 3 4 ># 27 "/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; ># 222 "/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) throw (); > > > >extern char *strptime_l (const char *__restrict __s, > const char *__restrict __fmt, struct tm *__tp, > __locale_t __loc) throw (); > > > > > > >extern struct tm *gmtime (const time_t *__timer) throw (); > > > >extern struct tm *localtime (const time_t *__timer) throw (); > > > > > >extern struct tm *gmtime_r (const time_t *__restrict __timer, > struct tm *__restrict __tp) throw (); > > > >extern struct tm *localtime_r (const time_t *__restrict __timer, > struct tm *__restrict __tp) throw (); > > > > > >extern char *asctime (const struct tm *__tp) throw (); > > >extern char *ctime (const time_t *__timer) throw (); > > > > > > > >extern char *asctime_r (const struct tm *__restrict __tp, > char *__restrict __buf) throw (); > > >extern char *ctime_r (const time_t *__restrict __timer, > char *__restrict __buf) throw (); > > > > >extern char *__tzname[2]; >extern int __daylight; >extern long int __timezone; > > > > >extern char *tzname[2]; > > > >extern void tzset (void) throw (); > > > >extern int daylight; >extern long int timezone; > > > > > >extern int stime (const time_t *__when) throw (); ># 319 "/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__)); ># 334 "/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 (); > > > > > > >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) throw (); > > > > >extern int timer_create (clockid_t __clock_id, > struct sigevent *__restrict __evp, > timer_t *__restrict __timerid) throw (); > > >extern int timer_delete (timer_t __timerid) throw (); > > >extern int timer_settime (timer_t __timerid, int __flags, > const struct itimerspec *__restrict __value, > struct itimerspec *__restrict __ovalue) throw (); > > >extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) > throw (); > > >extern int timer_getoverrun (timer_t __timerid) throw (); > > > > > >extern int timespec_get (struct timespec *__ts, int __base) > throw () __attribute__ ((__nonnull__ (1))); ># 403 "/usr/include/time.h" 3 4 >extern int getdate_err; ># 412 "/usr/include/time.h" 3 4 >extern struct tm *getdate (const char *__string); ># 426 "/usr/include/time.h" 3 4 >extern int getdate_r (const char *__restrict __string, > struct tm *__restrict __resbufp); > > >} ># 25 "/usr/include/pthread.h" 2 3 4 > ># 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 ># 38 "/usr/include/bits/pthreadtypes.h" 3 4 >typedef unsigned long int pthread_t; > > >union pthread_attr_t >{ > char __size[64]; > long int __align; >}; > >typedef union pthread_attr_t 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[48]; > long int __align; >} pthread_mutex_t; > > > > >typedef union >{ > char __size[8]; > long int __align; >} pthread_mutexattr_t; > > > > >typedef union >{ > struct > { > int __lock; > unsigned int __futex; > __extension__ unsigned long long int __total_seq; > __extension__ unsigned long long int __wakeup_seq; > __extension__ unsigned long long int __woken_seq; > void *__mutex; > unsigned int __nwaiters; > unsigned int __broadcast_seq; > } __data; > char __size[48]; > long int __align; >} pthread_cond_t; > >typedef union >{ > char __size[8]; > 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[8]; > int __align; >} pthread_barrierattr_t; ># 27 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/bits/setjmp.h" 1 3 4 ># 30 "/usr/include/bits/setjmp.h" 3 4 >typedef unsigned long long __jmp_buf [22]; ># 28 "/usr/include/pthread.h" 2 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 29 "/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 >}; ># 116 "/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 >}; ># 157 "/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 > >}; ># 192 "/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 > >}; ># 230 "/usr/include/pthread.h" 3 4 >extern "C" { > > > > >extern int pthread_create (pthread_t *__restrict __newthread, > const pthread_attr_t *__restrict __attr, > void *(*__start_routine) (void *), > void *__restrict __arg) throw () __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) throw (); > > > > > > > >extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, > const struct timespec *__abstime); > > > > > > >extern int pthread_detach (pthread_t __th) throw (); > > > >extern pthread_t pthread_self (void) throw () __attribute__ ((__const__)); > > >extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) > throw () __attribute__ ((__const__)); > > > > > > > >extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_destroy (pthread_attr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, > int *__detachstate) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, > int __detachstate) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, > size_t *__guardsize) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setguardsize (pthread_attr_t *__attr, > size_t __guardsize) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, > struct sched_param *__restrict __param) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, > const struct sched_param *__restrict > __param) throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict > __attr, int *__restrict __policy) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict > __attr, int *__restrict __inherit) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, > int __inherit) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, > int *__restrict __scope) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict > __attr, void **__restrict __stackaddr) > throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); > > > > > >extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, > void *__stackaddr) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); > > >extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict > __attr, size_t *__restrict __stacksize) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int pthread_attr_setstacksize (pthread_attr_t *__attr, > size_t __stacksize) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, > void **__restrict __stackaddr, > size_t *__restrict __stacksize) > throw () __attribute__ ((__nonnull__ (1, 2, 3))); > > > > >extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, > size_t __stacksize) throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, > size_t __cpusetsize, > const cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > >extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, > size_t __cpusetsize, > cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > > > >extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) > throw () __attribute__ ((__nonnull__ (2))); > > > > > > > >extern int pthread_setschedparam (pthread_t __target_thread, int __policy, > const struct sched_param *__param) > throw () __attribute__ ((__nonnull__ (3))); > > >extern int pthread_getschedparam (pthread_t __target_thread, > int *__restrict __policy, > struct sched_param *__restrict __param) > throw () __attribute__ ((__nonnull__ (2, 3))); > > >extern int pthread_setschedprio (pthread_t __target_thread, int __prio) > throw (); > > > > >extern int pthread_getname_np (pthread_t __target_thread, char *__buf, > size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))); > > >extern int pthread_setname_np (pthread_t __target_thread, const char *__name) > throw () __attribute__ ((__nonnull__ (2))); > > > > > >extern int pthread_getconcurrency (void) throw (); > > >extern int pthread_setconcurrency (int __level) throw (); > > > > > > > >extern int pthread_yield (void) throw (); > > > > >extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, > const cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (3))); > > >extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, > cpu_set_t *__cpuset) > throw () __attribute__ ((__nonnull__ (3))); ># 488 "/usr/include/pthread.h" 3 4 >extern int pthread_once (pthread_once_t *__once_control, > void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); ># 500 "/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__)); ># 534 "/usr/include/pthread.h" 3 4 >struct __pthread_cleanup_frame >{ > void (*__cancel_routine) (void *); > void *__cancel_arg; > int __do_it; > int __cancel_type; >}; > > > > >class __pthread_cleanup_class >{ > void (*__cancel_routine) (void *); > void *__cancel_arg; > int __do_it; > int __cancel_type; > > public: > __pthread_cleanup_class (void (*__fct) (void *), void *__arg) > : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } > ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } > void __setdoit (int __newval) { __do_it = __newval; } > void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, > &__cancel_type); } > void __restore () const { pthread_setcanceltype (__cancel_type, 0); } >}; ># 736 "/usr/include/pthread.h" 3 4 >struct __jmp_buf_tag; >extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw (); > > > > > >extern int pthread_mutex_init (pthread_mutex_t *__mutex, > const pthread_mutexattr_t *__mutexattr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutex_lock (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, > const struct timespec *__restrict > __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutex_getprioceiling (const pthread_mutex_t * > __restrict __mutex, > int *__restrict __prioceiling) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, > int __prioceiling, > int *__restrict __old_ceiling) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > > >extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); > >extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) > throw () __attribute__ ((__nonnull__ (1))); ># 800 "/usr/include/pthread.h" 3 4 >extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, > int __pshared) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict > __attr, int *__restrict __kind) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __protocol) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, > int __protocol) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * > __restrict __attr, > int *__restrict __prioceiling) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, > int __prioceiling) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, > int *__robustness) > throw () __attribute__ ((__nonnull__ (1, 2))); > >extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr, > int *__robustness) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, > int __robustness) > throw () __attribute__ ((__nonnull__ (1))); > >extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, > int __robustness) > throw () __attribute__ ((__nonnull__ (1))); ># 882 "/usr/include/pthread.h" 3 4 >extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, > const pthread_rwlockattr_t *__restrict > __attr) throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, > const struct timespec *__restrict > __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, > const struct timespec *__restrict > __abstime) throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, > int __pshared) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * > __restrict __attr, > int *__restrict __pref) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, > int __pref) throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >extern int pthread_cond_init (pthread_cond_t *__restrict __cond, > const pthread_condattr_t *__restrict __cond_attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_cond_destroy (pthread_cond_t *__cond) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_cond_signal (pthread_cond_t *__cond) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_cond_broadcast (pthread_cond_t *__cond) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, > pthread_mutex_t *__restrict __mutex) > __attribute__ ((__nonnull__ (1, 2))); ># 994 "/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) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_condattr_destroy (pthread_condattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_condattr_getpshared (const pthread_condattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, > int __pshared) throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_condattr_getclock (const pthread_condattr_t * > __restrict __attr, > __clockid_t *__restrict __clock_id) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_condattr_setclock (pthread_condattr_t *__attr, > __clockid_t __clock_id) > throw () __attribute__ ((__nonnull__ (1))); ># 1038 "/usr/include/pthread.h" 3 4 >extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_destroy (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_lock (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_trylock (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_spin_unlock (pthread_spinlock_t *__lock) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, > const pthread_barrierattr_t *__restrict > __attr, unsigned int __count) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrier_wait (pthread_barrier_t *__barrier) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * > __restrict __attr, > int *__restrict __pshared) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, > int __pshared) > throw () __attribute__ ((__nonnull__ (1))); ># 1105 "/usr/include/pthread.h" 3 4 >extern int pthread_key_create (pthread_key_t *__key, > void (*__destr_function) (void *)) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int pthread_key_delete (pthread_key_t __key) throw (); > > >extern void *pthread_getspecific (pthread_key_t __key) throw (); > > >extern int pthread_setspecific (pthread_key_t __key, > const void *__pointer) throw () ; > > > > >extern int pthread_getcpuclockid (pthread_t __thread_id, > __clockid_t *__clock_id) > throw () __attribute__ ((__nonnull__ (2))); ># 1139 "/usr/include/pthread.h" 3 4 >extern int pthread_atfork (void (*__prepare) (void), > void (*__parent) (void), > void (*__child) (void)) throw (); > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () >{ > return __thread1 == __thread2; >} > > >} ># 281 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 324 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/stdio.h" 1 3 4 ># 29 "/usr/include/stdio.h" 3 4 >extern "C" { > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 34 "/usr/include/stdio.h" 2 3 4 ># 44 "/usr/include/stdio.h" 3 4 >struct _IO_FILE; > > > >typedef struct _IO_FILE FILE; ># 64 "/usr/include/stdio.h" 3 4 >typedef struct _IO_FILE __FILE; ># 74 "/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/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 16 "/usr/include/_G_config.h" 2 3 4 > > > > ># 1 "/usr/include/wchar.h" 1 3 4 ># 82 "/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; ># 33 "/usr/include/libio.h" 2 3 4 ># 50 "/usr/include/libio.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stdarg.h" 1 3 4 ># 40 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stdarg.h" 3 4 >typedef __builtin_va_list __gnuc_va_list; ># 51 "/usr/include/libio.h" 2 3 4 ># 145 "/usr/include/libio.h" 3 4 >struct _IO_jump_t; struct _IO_FILE; ># 155 "/usr/include/libio.h" 3 4 >typedef void _IO_lock_t; > > > > > >struct _IO_marker { > struct _IO_marker *_next; > struct _IO_FILE *_sbuf; > > > > int _pos; ># 178 "/usr/include/libio.h" 3 4 >}; > > >enum __codecvt_result >{ > __codecvt_ok, > __codecvt_partial, > __codecvt_error, > __codecvt_noconv >}; ># 246 "/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; ># 294 "/usr/include/libio.h" 3 4 > __off64_t _offset; ># 303 "/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)]; > >}; > > > > > >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_; ># 339 "/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 "C" { > > >extern int __underflow (_IO_FILE *); >extern int __uflow (_IO_FILE *); >extern int __overflow (_IO_FILE *, int); ># 435 "/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) throw (); >extern int _IO_ferror (_IO_FILE *__fp) throw (); > >extern int _IO_peekc_locked (_IO_FILE *__fp); > > > > > >extern void _IO_flockfile (_IO_FILE *) throw (); >extern void _IO_funlockfile (_IO_FILE *) throw (); >extern int _IO_ftrylockfile (_IO_FILE *) throw (); ># 465 "/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 *) throw (); ># 527 "/usr/include/libio.h" 3 4 >} ># 75 "/usr/include/stdio.h" 2 3 4 > > > > >typedef __gnuc_va_list va_list; ># 92 "/usr/include/stdio.h" 3 4 >typedef __off64_t off_t; > > > > >typedef __off64_t off64_t; > > > > >typedef __ssize_t ssize_t; ># 112 "/usr/include/stdio.h" 3 4 >typedef _G_fpos64_t fpos_t; > > > >typedef _G_fpos64_t fpos64_t; ># 164 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/bits/stdio_lim.h" 1 3 4 ># 165 "/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) throw (); > >extern int rename (const char *__old, const char *__new) throw (); > > > > >extern int renameat (int __oldfd, const char *__old, int __newfd, > const char *__new) throw (); ># 198 "/usr/include/stdio.h" 3 4 >extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") __attribute__ ((__warn_unused_result__)); > > > > > > >extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); > > > >extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__)); > > > > > >extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__)); ># 227 "/usr/include/stdio.h" 3 4 >extern char *tempnam (const char *__dir, const char *__pfx) > throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); ># 237 "/usr/include/stdio.h" 3 4 >extern int fclose (FILE *__stream); > > > > >extern int fflush (FILE *__stream); ># 252 "/usr/include/stdio.h" 3 4 >extern int fflush_unlocked (FILE *__stream); ># 262 "/usr/include/stdio.h" 3 4 >extern int fcloseall (void); ># 283 "/usr/include/stdio.h" 3 4 >extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") > > __attribute__ ((__warn_unused_result__)); >extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") > > > __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) throw () __attribute__ ((__warn_unused_result__)); > > > > > >extern FILE *fopencookie (void *__restrict __magic_cookie, > const char *__restrict __modes, > _IO_cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) > throw () __attribute__ ((__warn_unused_result__)); > > > > >extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__)); > > > > > > >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 (); ># 356 "/usr/include/stdio.h" 3 4 >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))) __attribute__ ((__warn_unused_result__)); >extern int __asprintf (char **__restrict __ptr, > const char *__restrict __fmt, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); >extern int asprintf (char **__restrict __ptr, > const char *__restrict __fmt, ...) > throw () __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))); ># 425 "/usr/include/stdio.h" 3 4 >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, ...) throw (); ># 463 "/usr/include/stdio.h" 3 4 ># 471 "/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) > throw () __attribute__ ((__format__ (__scanf__, 2, 0))); ># 522 "/usr/include/stdio.h" 3 4 ># 531 "/usr/include/stdio.h" 3 4 >extern int fgetc (FILE *__stream); >extern int getc (FILE *__stream); > > > > > >extern int getchar (void); ># 550 "/usr/include/stdio.h" 3 4 >extern int getc_unlocked (FILE *__stream); >extern int getchar_unlocked (void); ># 561 "/usr/include/stdio.h" 3 4 >extern int fgetc_unlocked (FILE *__stream); ># 573 "/usr/include/stdio.h" 3 4 >extern int fputc (int __c, FILE *__stream); >extern int putc (int __c, FILE *__stream); > > > > > >extern int putchar (int __c); ># 594 "/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); ># 622 "/usr/include/stdio.h" 3 4 >extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) > __attribute__ ((__warn_unused_result__)); ># 638 "/usr/include/stdio.h" 3 4 >extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)) __attribute__ ((__deprecated__)); ># 649 "/usr/include/stdio.h" 3 4 >extern char *fgets_unlocked (char *__restrict __s, int __n, > FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); ># 665 "/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__)); ># 689 "/usr/include/stdio.h" 3 4 >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); ># 726 "/usr/include/stdio.h" 3 4 >extern int fputs_unlocked (const char *__restrict __s, > FILE *__restrict __stream); ># 737 "/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); ># 749 "/usr/include/stdio.h" 3 4 >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); ># 781 "/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"); ># 806 "/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") > ; ># 818 "/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) throw (); > >extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); > >extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern void clearerr_unlocked (FILE *__stream) throw (); >extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); >extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); ># 846 "/usr/include/stdio.h" 3 4 >extern void perror (const char *__s); > > > > > > ># 1 "/usr/include/bits/sys_errlist.h" 1 3 4 ># 26 "/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[]; ># 854 "/usr/include/stdio.h" 2 3 4 > > > > >extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); ># 873 "/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) throw (); > > > > > >extern char *cuserid (char *__s); > > > > >struct obstack; > > >extern int obstack_printf (struct obstack *__restrict __obstack, > const char *__restrict __format, ...) > throw () __attribute__ ((__format__ (__printf__, 2, 3))); >extern int obstack_vprintf (struct obstack *__restrict __obstack, > const char *__restrict __format, > __gnuc_va_list __args) > throw () __attribute__ ((__format__ (__printf__, 2, 0))); > > > > > > > >extern void flockfile (FILE *__stream) throw (); > > > >extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__)); > > >extern void funlockfile (FILE *__stream) throw (); ># 934 "/usr/include/stdio.h" 3 4 ># 1 "/usr/include/bits/stdio.h" 1 3 4 ># 43 "/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__ ((__leaf__)) feof_unlocked (FILE *__stream) throw () >{ > return (((__stream)->_flags & 0x10) != 0); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) throw () >{ > return (((__stream)->_flags & 0x20) != 0); >} ># 935 "/usr/include/stdio.h" 2 3 4 > > ># 1 "/usr/include/bits/stdio2.h" 1 3 4 ># 23 "/usr/include/bits/stdio2.h" 3 4 >extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, > const char *__restrict __format, ...) throw (); >extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, > const char *__restrict __format, > __gnuc_va_list __ap) throw (); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) throw () >{ > 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__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) throw () > >{ > 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, > ...) throw (); >extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, > size_t __slen, const char *__restrict __format, > __gnuc_va_list __ap) throw (); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) throw () > >{ > 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__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) throw () > >{ > 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__)) __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__ ((__gnu_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__ ((__gnu_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__ ((__gnu_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 __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 __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_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__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) >{ > return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); >} > > > > >extern int __asprintf_chk (char **__restrict __ptr, int __flag, > const char *__restrict __fmt, ...) > throw () __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) > throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); >extern int __obstack_printf_chk (struct obstack *__restrict __obstack, > int __flag, const char *__restrict __format, > ...) > throw () __attribute__ ((__format__ (__printf__, 3, 4))); >extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, > int __flag, > const char *__restrict __format, > __gnuc_va_list __args) > throw () __attribute__ ((__format__ (__printf__, 3, 0))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () >{ > return __asprintf_chk (__ptr, 2 - 1, __fmt, > __builtin_va_arg_pack ()); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) throw () > >{ > return __asprintf_chk (__ptr, 2 - 1, __fmt, > __builtin_va_arg_pack ()); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) throw () > >{ > return __obstack_printf_chk (__obstack, 2 - 1, __fmt, > __builtin_va_arg_pack ()); >} ># 206 "/usr/include/bits/stdio2.h" 3 4 >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) throw () > >{ > return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) throw () > >{ > return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, > __ap); >} ># 241 "/usr/include/bits/stdio2.h" 3 4 >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__)) __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__ ((__gnu_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__ ((__gnu_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__ ((__gnu_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); >} ># 938 "/usr/include/stdio.h" 2 3 4 > > > > > >} ># 325 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stdarg.h" 1 3 4 ># 327 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > ># 1 "/usr/include/stdlib.h" 1 3 4 ># 32 "/usr/include/stdlib.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 33 "/usr/include/stdlib.h" 2 3 4 > >extern "C" { > > > > > > ># 1 "/usr/include/bits/waitflags.h" 1 3 4 ># 42 "/usr/include/stdlib.h" 2 3 4 ># 1 "/usr/include/bits/waitstatus.h" 1 3 4 ># 66 "/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; > }; ># 43 "/usr/include/stdlib.h" 2 3 4 ># 95 "/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; ># 139 "/usr/include/stdlib.h" 3 4 >extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern double atof (const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > >extern int atoi (const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > >extern long int atol (const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >__extension__ extern long long int atoll (const char *__nptr) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >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))); ># 239 "/usr/include/stdlib.h" 3 4 >extern long int strtol_l (const char *__restrict __nptr, > char **__restrict __endptr, int __base, > __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))); > >extern unsigned long int strtoul_l (const char *__restrict __nptr, > char **__restrict __endptr, > int __base, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 4))); > >__extension__ >extern long long int strtoll_l (const char *__restrict __nptr, > char **__restrict __endptr, int __base, > __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 4))); > >__extension__ >extern unsigned long long int strtoull_l (const char *__restrict __nptr, > char **__restrict __endptr, > int __base, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 4))); > >extern double strtod_l (const char *__restrict __nptr, > char **__restrict __endptr, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 3))); > >extern float strtof_l (const char *__restrict __nptr, > char **__restrict __endptr, __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 3))); > >extern long double strtold_l (const char *__restrict __nptr, > char **__restrict __endptr, > __locale_t __loc) > throw () __attribute__ ((__nonnull__ (1, 3))); > > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) atoi (const char *__nptr) throw () >{ > return (int) strtol (__nptr, (char **) __null, 10); >} >extern __inline __attribute__ ((__gnu_inline__)) long int >__attribute__ ((__leaf__)) atol (const char *__nptr) throw () >{ > return strtol (__nptr, (char **) __null, 10); >} > > > > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int >__attribute__ ((__leaf__)) atoll (const char *__nptr) throw () >{ > return strtoll (__nptr, (char **) __null, 10); >} ># 305 "/usr/include/stdlib.h" 3 4 >extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__)); > > >extern long int a64l (const char *__s) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > ># 1 "/usr/include/sys/types.h" 1 3 4 ># 27 "/usr/include/sys/types.h" 3 4 >extern "C" { > > > > > >typedef __u_char u_char; >typedef __u_short u_short; >typedef __u_int u_int; >typedef __u_long u_long; >typedef __quad_t quad_t; >typedef __u_quad_t u_quad_t; >typedef __fsid_t fsid_t; > > > > >typedef __loff_t loff_t; > > > > > >typedef __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; ># 104 "/usr/include/sys/types.h" 3 4 >typedef __id_t id_t; ># 115 "/usr/include/sys/types.h" 3 4 >typedef __daddr_t daddr_t; >typedef __caddr_t caddr_t; > > > > > >typedef __key_t key_t; ># 136 "/usr/include/sys/types.h" 3 4 >typedef __useconds_t useconds_t; > > > >typedef __suseconds_t suseconds_t; > > > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 147 "/usr/include/sys/types.h" 2 3 4 > > > >typedef unsigned long int ulong; >typedef unsigned short int ushort; >typedef unsigned int uint; ># 194 "/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__))); ># 219 "/usr/include/sys/types.h" 3 4 ># 1 "/usr/include/sys/select.h" 1 3 4 ># 30 "/usr/include/sys/select.h" 3 4 ># 1 "/usr/include/bits/select.h" 1 3 4 ># 31 "/usr/include/sys/select.h" 2 3 4 > > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 23 "/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/sys/select.h" 2 3 4 > > > >typedef __sigset_t sigset_t; > > > > > > > ># 1 "/usr/include/bits/time.h" 1 3 4 ># 46 "/usr/include/sys/select.h" 2 3 4 ># 54 "/usr/include/sys/select.h" 3 4 >typedef long int __fd_mask; ># 64 "/usr/include/sys/select.h" 3 4 >typedef struct > { > > > > __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; > > > > > > } fd_set; > > > > > > >typedef __fd_mask fd_mask; ># 96 "/usr/include/sys/select.h" 3 4 >extern "C" { ># 106 "/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); ># 118 "/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); > > > > > ># 1 "/usr/include/bits/select2.h" 1 3 4 ># 24 "/usr/include/bits/select2.h" 3 4 >extern long int __fdelt_chk (long int __d); >extern long int __fdelt_warn (long int __d) > __attribute__((__warning__ ("bit outside of fd_set selected"))); ># 129 "/usr/include/sys/select.h" 2 3 4 > > >} ># 220 "/usr/include/sys/types.h" 2 3 4 > > ># 1 "/usr/include/sys/sysmacros.h" 1 3 4 ># 29 "/usr/include/sys/sysmacros.h" 3 4 >extern "C" { > >__extension__ >extern unsigned int gnu_dev_major (unsigned long long int __dev) > throw () __attribute__ ((__const__)); >__extension__ >extern unsigned int gnu_dev_minor (unsigned long long int __dev) > throw () __attribute__ ((__const__)); >__extension__ >extern unsigned long long int gnu_dev_makedev (unsigned int __major, > unsigned int __minor) > throw () __attribute__ ((__const__)); > > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int >__attribute__ ((__leaf__)) gnu_dev_major (unsigned long long int __dev) throw () >{ > return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); >} > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int >__attribute__ ((__leaf__)) gnu_dev_minor (unsigned long long int __dev) throw () >{ > return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); >} > >__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned long long int >__attribute__ ((__leaf__)) 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)); >} > >} ># 223 "/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; ># 273 "/usr/include/sys/types.h" 3 4 >} ># 315 "/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 (); > > > > > > > >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))); ># 465 "/usr/include/stdlib.h" 3 4 >extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); > >extern void *calloc (size_t __nmemb, size_t __size) > throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); ># 479 "/usr/include/stdlib.h" 3 4 >extern void *realloc (void *__ptr, size_t __size) > throw () __attribute__ ((__warn_unused_result__)); > >extern void free (void *__ptr) throw (); > > > > >extern void cfree (void *__ptr) throw (); > > > ># 1 "/usr/include/alloca.h" 1 3 4 ># 24 "/usr/include/alloca.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 25 "/usr/include/alloca.h" 2 3 4 > >extern "C" { > > > > > >extern void *alloca (size_t __size) throw (); > > > > > >} ># 492 "/usr/include/stdlib.h" 2 3 4 > > > > > >extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); > > > > >extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > >extern void *aligned_alloc (size_t __alignment, size_t __size) > throw () __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__, __alloc_size__ (2))); > > > > >extern void abort (void) throw () __attribute__ ((__noreturn__)); > > > >extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1))); > > > > >extern "C++" int at_quick_exit (void (*__func) (void)) > throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); ># 534 "/usr/include/stdlib.h" 3 4 >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 quick_exit (int __status) throw () __attribute__ ((__noreturn__)); > > > > > > > >extern void _Exit (int __status) throw () __attribute__ ((__noreturn__)); > > > > > > >extern char *getenv (const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern char *secure_getenv (const char *__name) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > > >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 () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int clearenv (void) throw (); ># 605 "/usr/include/stdlib.h" 3 4 >extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))); ># 622 "/usr/include/stdlib.h" 3 4 >extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 644 "/usr/include/stdlib.h" 3 4 >extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern int mkstemps64 (char *__template, int __suffixlen) > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 662 "/usr/include/stdlib.h" 3 4 >extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 676 "/usr/include/stdlib.h" 3 4 >extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 697 "/usr/include/stdlib.h" 3 4 >extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") > > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern int mkostemps64 (char *__template, int __suffixlen, int __flags) > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 716 "/usr/include/stdlib.h" 3 4 >extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); > > > > > > >extern char *canonicalize_file_name (const char *__name) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 733 "/usr/include/stdlib.h" 3 4 >extern char *realpath (const char *__restrict __name, > char *__restrict __resolved) throw () __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) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); >extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); > > > >__extension__ extern long long int llabs (long long int __x) > throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); > > > > > > > >extern div_t div (int __numer, int __denom) > throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); >extern ldiv_t ldiv (long int __numer, long int __denom) > throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); > > > > >__extension__ extern lldiv_t lldiv (long long int __numer, > long long int __denom) > throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); ># 807 "/usr/include/stdlib.h" 3 4 >extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); > > > > >extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, > int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); > > > > >extern char *gcvt (double __value, int __ndigit, char *__buf) > throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); > > > > >extern char *qecvt (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign) > throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); >extern char *qfcvt (long double __value, int __ndigit, > int *__restrict __decpt, int *__restrict __sign) > throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); >extern char *qgcvt (long double __value, int __ndigit, char *__buf) > throw () __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) throw () __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) throw () __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) > throw () __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) > throw () __attribute__ ((__nonnull__ (3, 4, 5))); > > > > > > > >extern int mblen (const char *__s, size_t __n) throw () __attribute__ ((__warn_unused_result__)); > > >extern int mbtowc (wchar_t *__restrict __pwc, > const char *__restrict __s, size_t __n) throw () __attribute__ ((__warn_unused_result__)); > > >extern int wctomb (char *__s, wchar_t __wchar) throw () __attribute__ ((__warn_unused_result__)); > > > >extern size_t mbstowcs (wchar_t *__restrict __pwcs, > const char *__restrict __s, size_t __n) throw (); > >extern size_t wcstombs (char *__restrict __s, > const wchar_t *__restrict __pwcs, size_t __n) > throw (); ># 884 "/usr/include/stdlib.h" 3 4 >extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 895 "/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))) __attribute__ ((__warn_unused_result__)); > > > > > >extern void setkey (const char *__key) throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); > > > > > > > >extern int grantpt (int __fd) throw (); > > > >extern int unlockpt (int __fd) throw (); > > > > >extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__)); > > > > > > >extern int ptsname_r (int __fd, char *__buf, size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))); > > >extern int getpt (void); > > > > > > >extern int getloadavg (double __loadavg[], int __nelem) > throw () __attribute__ ((__nonnull__ (1))); > > ># 1 "/usr/include/bits/stdlib-float.h" 1 3 4 ># 24 "/usr/include/bits/stdlib-float.h" 3 4 > >extern __inline __attribute__ ((__gnu_inline__)) double >__attribute__ ((__leaf__)) atof (const char *__nptr) throw () >{ > return strtod (__nptr, (char **) __null); >} ># 952 "/usr/include/stdlib.h" 2 3 4 > > > ># 1 "/usr/include/bits/stdlib.h" 1 3 4 ># 23 "/usr/include/bits/stdlib.h" 3 4 >extern char *__realpath_chk (const char *__restrict __name, > char *__restrict __resolved, > size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__)); >extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath") > > __attribute__ ((__warn_unused_result__)); >extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk") > > > __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__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * >__attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) throw () >{ > 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) throw () __attribute__ ((__nonnull__ (2))); >extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r") > > __attribute__ ((__nonnull__ (2))); >extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk") > > > __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) throw () >{ > 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) > throw () __attribute__ ((__warn_unused_result__)); >extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb") > __attribute__ ((__warn_unused_result__)); > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int >__attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) throw () >{ > > > > > > > > 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) throw (); >extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs") > > > ; >extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk") > > > > __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) throw () > >{ > 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) throw (); >extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs") > > > ; >extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk") > > > > __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) throw () > >{ > 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); >} ># 956 "/usr/include/stdlib.h" 2 3 4 ># 964 "/usr/include/stdlib.h" 3 4 >} ># 329 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 147 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 3 4 >typedef long int ptrdiff_t; ># 332 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/include/math.h" 1 3 4 ># 29 "/usr/include/math.h" 3 4 >extern "C" { > > > ># 1 "/usr/include/bits/huge_val.h" 1 3 4 ># 34 "/usr/include/math.h" 2 3 4 > ># 1 "/usr/include/bits/huge_valf.h" 1 3 4 ># 36 "/usr/include/math.h" 2 3 4 ># 1 "/usr/include/bits/huge_vall.h" 1 3 4 ># 37 "/usr/include/math.h" 2 3 4 > > ># 1 "/usr/include/bits/inf.h" 1 3 4 ># 40 "/usr/include/math.h" 2 3 4 > > ># 1 "/usr/include/bits/nan.h" 1 3 4 ># 43 "/usr/include/math.h" 2 3 4 > > > ># 1 "/usr/include/bits/mathdef.h" 1 3 4 ># 27 "/usr/include/bits/mathdef.h" 3 4 >typedef float float_t; > >typedef double double_t; ># 47 "/usr/include/math.h" 2 3 4 ># 70 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathcalls.h" 1 3 4 ># 52 "/usr/include/bits/mathcalls.h" 3 4 > > >extern double acos (double __x) throw (); extern double __acos (double __x) throw (); > >extern double asin (double __x) throw (); extern double __asin (double __x) throw (); > >extern double atan (double __x) throw (); extern double __atan (double __x) throw (); > >extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw (); > > >extern double cos (double __x) throw (); extern double __cos (double __x) throw (); > >extern double sin (double __x) throw (); extern double __sin (double __x) throw (); > >extern double tan (double __x) throw (); extern double __tan (double __x) throw (); > > > > >extern double cosh (double __x) throw (); extern double __cosh (double __x) throw (); > >extern double sinh (double __x) throw (); extern double __sinh (double __x) throw (); > >extern double tanh (double __x) throw (); extern double __tanh (double __x) throw (); > > > > >extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw () > ; > > > > > >extern double acosh (double __x) throw (); extern double __acosh (double __x) throw (); > >extern double asinh (double __x) throw (); extern double __asinh (double __x) throw (); > >extern double atanh (double __x) throw (); extern double __atanh (double __x) throw (); > > > > > > > >extern double exp (double __x) throw (); extern double __exp (double __x) throw (); > > >extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw (); > > >extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw (); > > >extern double log (double __x) throw (); extern double __log (double __x) throw (); > > >extern double log10 (double __x) throw (); extern double __log10 (double __x) throw (); > > >extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw () > __attribute__ ((__nonnull__ (2))); > > > > >extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw (); > >extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw (); > > > > > >extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw (); > > >extern double log1p (double __x) throw (); extern double __log1p (double __x) throw (); > > >extern double logb (double __x) throw (); extern double __logb (double __x) throw (); > > > > > > >extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw (); > > >extern double log2 (double __x) throw (); extern double __log2 (double __x) throw (); ># 154 "/usr/include/bits/mathcalls.h" 3 4 >extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw (); > > >extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw (); > > > > > >extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw (); > > > > > > >extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw (); ># 179 "/usr/include/bits/mathcalls.h" 3 4 >extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__)); > > >extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__)); > > >extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__)); > > >extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw (); > > > > >extern int __isinf (double __value) throw () __attribute__ ((__const__)); > > >extern int __finite (double __value) throw () __attribute__ ((__const__)); > > > > > >extern int isinf (double __value) throw () __attribute__ ((__const__)); > > >extern int finite (double __value) throw () __attribute__ ((__const__)); > > >extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw (); > > > >extern double significand (double __x) throw (); extern double __significand (double __x) throw (); > > > > > >extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__)); > > > > > > >extern double nan (const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (const char *__tagb) throw () __attribute__ ((__const__)); > > > > > >extern int __isnan (double __value) throw () __attribute__ ((__const__)); > > > >extern int isnan (double __value) throw () __attribute__ ((__const__)); > > >extern double j0 (double) throw (); extern double __j0 (double) throw (); >extern double j1 (double) throw (); extern double __j1 (double) throw (); >extern double jn (int, double) throw (); extern double __jn (int, double) throw (); >extern double y0 (double) throw (); extern double __y0 (double) throw (); >extern double y1 (double) throw (); extern double __y1 (double) throw (); >extern double yn (int, double) throw (); extern double __yn (int, double) throw (); > > > > > > >extern double erf (double) throw (); extern double __erf (double) throw (); >extern double erfc (double) throw (); extern double __erfc (double) throw (); >extern double lgamma (double) throw (); extern double __lgamma (double) throw (); > > > > > > >extern double tgamma (double) throw (); extern double __tgamma (double) throw (); > > > > > >extern double gamma (double) throw (); extern double __gamma (double) throw (); > > > > > > >extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw (); > > > > > > > >extern double rint (double __x) throw (); extern double __rint (double __x) throw (); > > >extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__)); > >extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); > > > >extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw (); > > > >extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw (); > > > >extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw (); > > > > >extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw (); > > > >extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw (); > > > >extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__)); > > > >extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__)); > > > > >extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw (); > > > > > > >extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); >extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw (); > > > >extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); >extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw (); > > > >extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw (); > > >extern double fmax (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmax (double __x, double __y) throw () __attribute__ ((__const__)); > > >extern double fmin (double __x, double __y) throw () __attribute__ ((__const__)); extern double __fmin (double __x, double __y) throw () __attribute__ ((__const__)); > > > >extern int __fpclassify (double __value) throw () > __attribute__ ((__const__)); > > >extern int __signbit (double __value) throw () > __attribute__ ((__const__)); > > > >extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw (); ># 364 "/usr/include/bits/mathcalls.h" 3 4 >extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); ># 71 "/usr/include/math.h" 2 3 4 ># 89 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathcalls.h" 1 3 4 ># 52 "/usr/include/bits/mathcalls.h" 3 4 > > >extern float acosf (float __x) throw (); extern float __acosf (float __x) throw (); > >extern float asinf (float __x) throw (); extern float __asinf (float __x) throw (); > >extern float atanf (float __x) throw (); extern float __atanf (float __x) throw (); > >extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw (); > > >extern float cosf (float __x) throw (); extern float __cosf (float __x) throw (); > >extern float sinf (float __x) throw (); extern float __sinf (float __x) throw (); > >extern float tanf (float __x) throw (); extern float __tanf (float __x) throw (); > > > > >extern float coshf (float __x) throw (); extern float __coshf (float __x) throw (); > >extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw (); > >extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw (); > > > > >extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw () > ; > > > > > >extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw (); > >extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw (); > >extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw (); > > > > > > > >extern float expf (float __x) throw (); extern float __expf (float __x) throw (); > > >extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw (); > > >extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw (); > > >extern float logf (float __x) throw (); extern float __logf (float __x) throw (); > > >extern float log10f (float __x) throw (); extern float __log10f (float __x) throw (); > > >extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw () > __attribute__ ((__nonnull__ (2))); > > > > >extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw (); > >extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw (); > > > > > >extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw (); > > >extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw (); > > >extern float logbf (float __x) throw (); extern float __logbf (float __x) throw (); > > > > > > >extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw (); > > >extern float log2f (float __x) throw (); extern float __log2f (float __x) throw (); ># 154 "/usr/include/bits/mathcalls.h" 3 4 >extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw (); > > >extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw (); > > > > > >extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw (); > > > > > > >extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw (); ># 179 "/usr/include/bits/mathcalls.h" 3 4 >extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__)); > > >extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__)); > > >extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__)); > > >extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw (); > > > > >extern int __isinff (float __value) throw () __attribute__ ((__const__)); > > >extern int __finitef (float __value) throw () __attribute__ ((__const__)); > > > > > >extern int isinff (float __value) throw () __attribute__ ((__const__)); > > >extern int finitef (float __value) throw () __attribute__ ((__const__)); > > >extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw (); > > > >extern float significandf (float __x) throw (); extern float __significandf (float __x) throw (); > > > > > >extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__)); > > > > > > >extern float nanf (const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (const char *__tagb) throw () __attribute__ ((__const__)); > > > > > >extern int __isnanf (float __value) throw () __attribute__ ((__const__)); > > > >extern int isnanf (float __value) throw () __attribute__ ((__const__)); > > >extern float j0f (float) throw (); extern float __j0f (float) throw (); >extern float j1f (float) throw (); extern float __j1f (float) throw (); >extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); >extern float y0f (float) throw (); extern float __y0f (float) throw (); >extern float y1f (float) throw (); extern float __y1f (float) throw (); >extern float ynf (int, float) throw (); extern float __ynf (int, float) throw (); > > > > > > >extern float erff (float) throw (); extern float __erff (float) throw (); >extern float erfcf (float) throw (); extern float __erfcf (float) throw (); >extern float lgammaf (float) throw (); extern float __lgammaf (float) throw (); > > > > > > >extern float tgammaf (float) throw (); extern float __tgammaf (float) throw (); > > > > > >extern float gammaf (float) throw (); extern float __gammaf (float) throw (); > > > > > > >extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw (); > > > > > > > >extern float rintf (float __x) throw (); extern float __rintf (float __x) throw (); > > >extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); > >extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); > > > >extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw (); > > > >extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw (); > > > >extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw (); > > > > >extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw (); > > > >extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw (); > > > >extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__)); > > > >extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__)); > > > > >extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw (); > > > > > > >extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); >extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw (); > > > >extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); >extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw (); > > > >extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw (); > > >extern float fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) throw () __attribute__ ((__const__)); > > >extern float fminf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __fminf (float __x, float __y) throw () __attribute__ ((__const__)); > > > >extern int __fpclassifyf (float __value) throw () > __attribute__ ((__const__)); > > >extern int __signbitf (float __value) throw () > __attribute__ ((__const__)); > > > >extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw (); ># 364 "/usr/include/bits/mathcalls.h" 3 4 >extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); ># 90 "/usr/include/math.h" 2 3 4 ># 133 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathcalls.h" 1 3 4 ># 52 "/usr/include/bits/mathcalls.h" 3 4 > > >extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw (); > >extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw (); > >extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw (); > >extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw (); > > >extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw (); > >extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw (); > >extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw (); > > > > >extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw (); > >extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw (); > >extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw (); > > > > >extern void sincosl (long double __x, long double *__sinx, long double *__cosx) throw (); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) throw () > ; > > > > > >extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw (); > >extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw (); > >extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw (); > > > > > > > >extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw (); > > >extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw (); > > >extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw (); > > >extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw (); > > >extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw (); > > >extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw () > __attribute__ ((__nonnull__ (2))); > > > > >extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw (); > >extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw (); > > > > > >extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw (); > > >extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw (); > > >extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw (); > > > > > > >extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw (); > > >extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw (); ># 154 "/usr/include/bits/mathcalls.h" 3 4 >extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw (); > > >extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw (); > > > > > >extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw (); > > > > > > >extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw (); ># 179 "/usr/include/bits/mathcalls.h" 3 4 >extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__)); > > >extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__)); > > >extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__)); > > >extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw (); > > > > >extern int __isinfl (long double __value) throw () __attribute__ ((__const__)); > > >extern int __finitel (long double __value) throw () __attribute__ ((__const__)); > > > > > >extern int isinfl (long double __value) throw () __attribute__ ((__const__)); > > >extern int finitel (long double __value) throw () __attribute__ ((__const__)); > > >extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw (); > > > >extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw (); > > > > > >extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); > > > > > > >extern long double nanl (const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (const char *__tagb) throw () __attribute__ ((__const__)); > > > > > >extern int __isnanl (long double __value) throw () __attribute__ ((__const__)); > > > >extern int isnanl (long double __value) throw () __attribute__ ((__const__)); > > >extern long double j0l (long double) throw (); extern long double __j0l (long double) throw (); >extern long double j1l (long double) throw (); extern long double __j1l (long double) throw (); >extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw (); >extern long double y0l (long double) throw (); extern long double __y0l (long double) throw (); >extern long double y1l (long double) throw (); extern long double __y1l (long double) throw (); >extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw (); > > > > > > >extern long double erfl (long double) throw (); extern long double __erfl (long double) throw (); >extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw (); >extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw (); > > > > > > >extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw (); > > > > > >extern long double gammal (long double) throw (); extern long double __gammal (long double) throw (); > > > > > > >extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw (); > > > > > > > >extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw (); > > >extern long double nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); > >extern long double nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); > > > >extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw (); > > > >extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw (); > > > >extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw (); > > > > >extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw (); > > > >extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw (); > > > >extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__)); > > > >extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__)); > > > > >extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw (); > > > > > > >extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw (); >extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw (); > > > >extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw (); >extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw (); > > > >extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw (); > > >extern long double fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) throw () __attribute__ ((__const__)); > > >extern long double fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) throw () __attribute__ ((__const__)); > > > >extern int __fpclassifyl (long double __value) throw () > __attribute__ ((__const__)); > > >extern int __signbitl (long double __value) throw () > __attribute__ ((__const__)); > > > >extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw (); ># 364 "/usr/include/bits/mathcalls.h" 3 4 >extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw (); ># 134 "/usr/include/math.h" 2 3 4 ># 149 "/usr/include/math.h" 3 4 >extern int signgam; ># 190 "/usr/include/math.h" 3 4 >enum > { > FP_NAN = > > 0, > FP_INFINITE = > > 1, > FP_ZERO = > > 2, > FP_SUBNORMAL = > > 3, > FP_NORMAL = > > 4 > }; ># 288 "/usr/include/math.h" 3 4 >typedef enum >{ > _IEEE_ = -1, > _SVID_, > _XOPEN_, > _POSIX_, > _ISOC_ >} _LIB_VERSION_TYPE; > > > > >extern _LIB_VERSION_TYPE _LIB_VERSION; ># 311 "/usr/include/math.h" 3 4 >struct __exception > > > > { > int type; > char *name; > double arg1; > double arg2; > double retval; > }; > > >extern int matherr (struct __exception *__exc) throw (); ># 413 "/usr/include/math.h" 3 4 ># 1 "/usr/include/bits/mathinline.h" 1 3 4 ># 414 "/usr/include/math.h" 2 3 4 ># 475 "/usr/include/math.h" 3 4 >} ># 335 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/limits.h" 1 3 4 ># 34 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/limits.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/syslimits.h" 1 3 4 > > > > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/limits.h" 1 3 4 ># 168 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/limits.h" 3 4 ># 1 "/usr/include/limits.h" 1 3 4 ># 144 "/usr/include/limits.h" 3 4 ># 1 "/usr/include/bits/posix1_lim.h" 1 3 4 ># 160 "/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 ># 161 "/usr/include/bits/posix1_lim.h" 2 3 4 ># 145 "/usr/include/limits.h" 2 3 4 > > > ># 1 "/usr/include/bits/posix2_lim.h" 1 3 4 ># 149 "/usr/include/limits.h" 2 3 4 > > > ># 1 "/usr/include/bits/xopen_lim.h" 1 3 4 ># 33 "/usr/include/bits/xopen_lim.h" 3 4 ># 1 "/usr/include/bits/stdio_lim.h" 1 3 4 ># 34 "/usr/include/bits/xopen_lim.h" 2 3 4 ># 153 "/usr/include/limits.h" 2 3 4 ># 169 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/limits.h" 2 3 4 ># 8 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/syslimits.h" 2 3 4 ># 35 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/limits.h" 2 3 4 ># 337 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/float.h" 1 3 4 ># 340 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/include/c++/4.8.2/fenv.h" 1 3 ># 32 "/usr/include/c++/4.8.2/fenv.h" 3 ># 33 "/usr/include/c++/4.8.2/fenv.h" 3 > ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++config.h" 1 3 ># 184 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++config.h" 3 >namespace std >{ > typedef long unsigned int size_t; > typedef long int ptrdiff_t; > > > > >} ># 426 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++config.h" 3 ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/os_defines.h" 1 3 ># 427 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++config.h" 2 3 > > ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/cpu_defines.h" 1 3 ># 430 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++config.h" 2 3 ># 35 "/usr/include/c++/4.8.2/fenv.h" 2 3 > ># 1 "/usr/include/fenv.h" 1 3 4 ># 57 "/usr/include/fenv.h" 3 4 ># 1 "/usr/include/bits/fenv.h" 1 3 4 ># 24 "/usr/include/bits/fenv.h" 3 4 >enum > { > FE_INVALID = > > 1, > FE_DIVBYZERO = > > 2, > FE_OVERFLOW = > > 4, > FE_UNDERFLOW = > > 8, > FE_INEXACT = > > 16, > }; ># 58 "/usr/include/bits/fenv.h" 3 4 >typedef unsigned int fexcept_t; > > >typedef struct > { > unsigned int __fpcr; > unsigned int __fpsr; > } >fenv_t; ># 58 "/usr/include/fenv.h" 2 3 4 > >extern "C" { > > > > >extern int feclearexcept (int __excepts) throw (); > > > >extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) throw (); > > >extern int feraiseexcept (int __excepts) throw (); > > > >extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) throw (); > > > >extern int fetestexcept (int __excepts) throw (); > > > > > >extern int fegetround (void) throw (); > > >extern int fesetround (int __rounding_direction) throw (); > > > > > > >extern int fegetenv (fenv_t *__envp) throw (); > > > > >extern int feholdexcept (fenv_t *__envp) throw (); > > > >extern int fesetenv (const fenv_t *__envp) throw (); > > > > >extern int feupdateenv (const fenv_t *__envp) throw (); > > > > ># 1 "/usr/include/bits/fenvinline.h" 1 3 4 ># 115 "/usr/include/fenv.h" 2 3 4 > > > > > > > >extern int feenableexcept (int __excepts) throw (); > > > > >extern int fedisableexcept (int __excepts) throw (); > > >extern int fegetexcept (void) throw (); > > >} ># 37 "/usr/include/c++/4.8.2/fenv.h" 2 3 ># 343 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 357 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/fcntl.h" 1 3 4 ># 28 "/usr/include/fcntl.h" 3 4 >extern "C" { > > > > > > ># 1 "/usr/include/bits/fcntl.h" 1 3 4 ># 34 "/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; > }; > > > ># 1 "/usr/include/bits/fcntl-linux.h" 1 3 4 ># 38 "/usr/include/bits/fcntl-linux.h" 3 4 ># 1 "/usr/include/bits/uio.h" 1 3 4 ># 43 "/usr/include/bits/uio.h" 3 4 >struct iovec > { > void *iov_base; > size_t iov_len; > }; ># 39 "/usr/include/bits/fcntl-linux.h" 2 3 4 ># 260 "/usr/include/bits/fcntl-linux.h" 3 4 >enum __pid_type > { > F_OWNER_TID = 0, > F_OWNER_PID, > F_OWNER_PGRP, > F_OWNER_GID = F_OWNER_PGRP > }; > > >struct f_owner_ex > { > enum __pid_type type; > __pid_t pid; > }; ># 323 "/usr/include/bits/fcntl-linux.h" 3 4 ># 1 "/usr/include/linux/falloc.h" 1 3 4 ># 324 "/usr/include/bits/fcntl-linux.h" 2 3 4 > > > >struct file_handle >{ > unsigned int handle_bytes; > int handle_type; > > unsigned char f_handle[0]; >}; > > > > > >extern "C" { > > > > >extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) > throw (); > > > > > > >extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count, > 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); ># 386 "/usr/include/bits/fcntl-linux.h" 3 4 >extern int fallocate (int __fd, int __mode, __off64_t __offset, __off64_t __len) __asm__ ("" "fallocate64") > > ; > > > > > >extern int fallocate64 (int __fd, int __mode, __off64_t __offset, > __off64_t __len); > > > > >extern int name_to_handle_at (int __dfd, const char *__name, > struct file_handle *__handle, int *__mnt_id, > int __flags) throw (); > > > > > >extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle, > int __flags); > > > >} ># 55 "/usr/include/bits/fcntl.h" 2 3 4 ># 36 "/usr/include/fcntl.h" 2 3 4 ># 77 "/usr/include/fcntl.h" 3 4 ># 1 "/usr/include/bits/stat.h" 1 3 4 ># 27 "/usr/include/bits/stat.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 28 "/usr/include/bits/stat.h" 2 3 4 ># 55 "/usr/include/bits/stat.h" 3 4 >struct stat > { > __dev_t st_dev; > __ino64_t st_ino; > __mode_t st_mode; > __nlink_t st_nlink; > __uid_t st_uid; > __gid_t st_gid; > __dev_t st_rdev; > __dev_t __pad1; > __off64_t st_size; > __blksize_t st_blksize; > int __pad2; > __blkcnt64_t st_blocks; > > > > > > > > struct timespec st_atim; > struct timespec st_mtim; > struct timespec st_ctim; ># 90 "/usr/include/bits/stat.h" 3 4 > int __unused[2]; > }; > > > > >struct stat64 > { > __dev_t st_dev; > __ino64_t st_ino; > __mode_t st_mode; > __nlink_t st_nlink; > __uid_t st_uid; > __gid_t st_gid; > __dev_t st_rdev; > __dev_t __pad1; > __off64_t st_size; > __blksize_t st_blksize; > int __pad2; > __blkcnt64_t st_blocks; > > > > > > > > struct timespec st_atim; > struct timespec st_mtim; > struct timespec st_ctim; ># 128 "/usr/include/bits/stat.h" 3 4 > int __unused[2]; > }; ># 78 "/usr/include/fcntl.h" 2 3 4 ># 163 "/usr/include/fcntl.h" 3 4 >extern int fcntl (int __fd, int __cmd, ...); ># 176 "/usr/include/fcntl.h" 3 4 >extern int open (const char *__file, int __oflag, ...) __asm__ ("" "open64") > __attribute__ ((__nonnull__ (1))); > > > > > >extern int open64 (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); ># 201 "/usr/include/fcntl.h" 3 4 >extern int openat (int __fd, const char *__file, int __oflag, ...) __asm__ ("" "openat64") > __attribute__ ((__nonnull__ (2))); > > > > > >extern int openat64 (int __fd, const char *__file, int __oflag, ...) > __attribute__ ((__nonnull__ (2))); ># 222 "/usr/include/fcntl.h" 3 4 >extern int creat (const char *__file, mode_t __mode) __asm__ ("" "creat64") > __attribute__ ((__nonnull__ (1))); > > > > > >extern int creat64 (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1))); ># 251 "/usr/include/fcntl.h" 3 4 >extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64"); > > > > > >extern int lockf64 (int __fd, int __cmd, off64_t __len); ># 269 "/usr/include/fcntl.h" 3 4 >extern int posix_fadvise (int __fd, __off64_t __offset, __off64_t __len, int __advise) throw () __asm__ ("" "posix_fadvise64") > > ; > > > > > >extern int posix_fadvise64 (int __fd, off64_t __offset, off64_t __len, > int __advise) throw (); ># 290 "/usr/include/fcntl.h" 3 4 >extern int posix_fallocate (int __fd, __off64_t __offset, __off64_t __len) __asm__ ("" "posix_fallocate64") > > ; > > > > > >extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len); > > > > > > > ># 1 "/usr/include/bits/fcntl2.h" 1 3 4 ># 30 "/usr/include/bits/fcntl2.h" 3 4 >extern int __open_2 (const char *__path, int __oflag) __asm__ ("" "__open64_2") > __attribute__ ((__nonnull__ (1))); >extern int __open_alias (const char *__path, int __oflag, ...) __asm__ ("" "open64") > __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 or O_TMPFILE in second argument needs 3 arguments"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_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 || ((__oflag) & (020000000 | 040000)) == (020000000 | 040000)) && __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 or O_TMPFILE in second argument needs 3 arguments"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_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 || ((__oflag) & (020000000 | 040000)) == (020000000 | 040000)) && __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 ()); >} ># 104 "/usr/include/bits/fcntl2.h" 3 4 >extern int __openat_2 (int __fd, const char *__path, int __oflag) __asm__ ("" "__openat64_2") > > __attribute__ ((__nonnull__ (2))); >extern int __openat_alias (int __fd, const char *__path, int __oflag, ...) __asm__ ("" "openat64") > > __attribute__ ((__nonnull__ (2))); > >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 or O_TMPFILE in third argument needs 4 arguments"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_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 || ((__oflag) & (020000000 | 040000)) == (020000000 | 040000)) && __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 or O_TMPFILE in third argument needs 4 arguments"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_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 || ((__oflag) & (020000000 | 040000)) == (020000000 | 040000)) && __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 ()); >} ># 307 "/usr/include/fcntl.h" 2 3 4 > > >} ># 358 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/include/sys/stat.h" 1 3 4 ># 104 "/usr/include/sys/stat.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/stat.h" 1 3 4 ># 107 "/usr/include/sys/stat.h" 2 3 4 ># 218 "/usr/include/sys/stat.h" 3 4 >extern int stat (const char *__restrict __file, struct stat *__restrict __buf) throw () __asm__ ("" "stat64") > > __attribute__ ((__nonnull__ (1, 2))); >extern int fstat (int __fd, struct stat *__buf) throw () __asm__ ("" "fstat64") > __attribute__ ((__nonnull__ (2))); > > > > > > >extern int stat64 (const char *__restrict __file, > struct stat64 *__restrict __buf) throw () __attribute__ ((__nonnull__ (1, 2))); >extern int fstat64 (int __fd, struct stat64 *__buf) throw () __attribute__ ((__nonnull__ (2))); ># 244 "/usr/include/sys/stat.h" 3 4 >extern int fstatat (int __fd, const char *__restrict __file, struct stat *__restrict __buf, int __flag) throw () __asm__ ("" "fstatat64") > > > __attribute__ ((__nonnull__ (2, 3))); > > > > > > >extern int fstatat64 (int __fd, const char *__restrict __file, > struct stat64 *__restrict __buf, int __flag) > throw () __attribute__ ((__nonnull__ (2, 3))); ># 268 "/usr/include/sys/stat.h" 3 4 >extern int lstat (const char *__restrict __file, struct stat *__restrict __buf) throw () __asm__ ("" "lstat64") > > > __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int lstat64 (const char *__restrict __file, > struct stat64 *__restrict __buf) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int chmod (const char *__file, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int lchmod (const char *__file, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int fchmod (int __fd, __mode_t __mode) throw (); > > > > > >extern int fchmodat (int __fd, const char *__file, __mode_t __mode, > int __flag) > throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); > > > > > > >extern __mode_t umask (__mode_t __mask) throw (); > > > > >extern __mode_t getumask (void) throw (); > > > >extern int mkdir (const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int mkdirat (int __fd, const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (2))); > > > > > > >extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int mknodat (int __fd, const char *__path, __mode_t __mode, > __dev_t __dev) throw () __attribute__ ((__nonnull__ (2))); > > > > > >extern int mkfifo (const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int mkfifoat (int __fd, const char *__path, __mode_t __mode) > throw () __attribute__ ((__nonnull__ (2))); > > > > > >extern int utimensat (int __fd, const char *__path, > const struct timespec __times[2], > int __flags) > throw () __attribute__ ((__nonnull__ (2))); > > > > >extern int futimens (int __fd, const struct timespec __times[2]) throw (); ># 411 "/usr/include/sys/stat.h" 3 4 >extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) throw () __asm__ ("" "__fxstat64") > > __attribute__ ((__nonnull__ (3))); >extern int __xstat (int __ver, const char *__filename, struct stat *__stat_buf) throw () __asm__ ("" "__xstat64") > > __attribute__ ((__nonnull__ (2, 3))); >extern int __lxstat (int __ver, const char *__filename, struct stat *__stat_buf) throw () __asm__ ("" "__lxstat64") > > __attribute__ ((__nonnull__ (2, 3))); >extern int __fxstatat (int __ver, int __fildes, const char *__filename, struct stat *__stat_buf, int __flag) throw () __asm__ ("" "__fxstatat64") > > > __attribute__ ((__nonnull__ (3, 4))); ># 433 "/usr/include/sys/stat.h" 3 4 >extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) > throw () __attribute__ ((__nonnull__ (3))); >extern int __xstat64 (int __ver, const char *__filename, > struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3))); >extern int __lxstat64 (int __ver, const char *__filename, > struct stat64 *__stat_buf) throw () __attribute__ ((__nonnull__ (2, 3))); >extern int __fxstatat64 (int __ver, int __fildes, const char *__filename, > struct stat64 *__stat_buf, int __flag) > throw () __attribute__ ((__nonnull__ (3, 4))); > >extern int __xmknod (int __ver, const char *__path, __mode_t __mode, > __dev_t *__dev) throw () __attribute__ ((__nonnull__ (2, 4))); > >extern int __xmknodat (int __ver, int __fd, const char *__path, > __mode_t __mode, __dev_t *__dev) > throw () __attribute__ ((__nonnull__ (3, 5))); > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) stat (const char *__path, struct stat *__statbuf) throw () >{ > return __xstat (0, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) lstat (const char *__path, struct stat *__statbuf) throw () >{ > return __lxstat (0, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) fstat (int __fd, struct stat *__statbuf) throw () >{ > return __fxstat (0, __fd, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) fstatat (int __fd, const char *__filename, struct stat *__statbuf, int __flag) throw () > >{ > return __fxstatat (0, __fd, __filename, __statbuf, __flag); >} > > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) mknod (const char *__path, __mode_t __mode, __dev_t __dev) throw () >{ > return __xmknod (0, __path, __mode, &__dev); >} > > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) mknodat (int __fd, const char *__path, __mode_t __mode, __dev_t __dev) throw () > >{ > return __xmknodat (0, __fd, __path, __mode, &__dev); >} > > > > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) stat64 (const char *__path, struct stat64 *__statbuf) throw () >{ > return __xstat64 (0, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) lstat64 (const char *__path, struct stat64 *__statbuf) throw () >{ > return __lxstat64 (0, __path, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) fstat64 (int __fd, struct stat64 *__statbuf) throw () >{ > return __fxstat64 (0, __fd, __statbuf); >} > > >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) fstatat64 (int __fd, const char *__filename, struct stat64 *__statbuf, int __flag) throw () > >{ > return __fxstatat64 (0, __fd, __filename, __statbuf, __flag); >} > > > > > > >} ># 361 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/include/sys/time.h" 1 3 4 ># 28 "/usr/include/sys/time.h" 3 4 ># 1 "/usr/include/bits/time.h" 1 3 4 ># 29 "/usr/include/sys/time.h" 2 3 4 ># 38 "/usr/include/sys/time.h" 3 4 >extern "C" { ># 56 "/usr/include/sys/time.h" 3 4 >struct timezone > { > int tz_minuteswest; > int tz_dsttime; > }; > >typedef struct timezone *__restrict __timezone_ptr_t; ># 72 "/usr/include/sys/time.h" 3 4 >extern int gettimeofday (struct timeval *__restrict __tv, > __timezone_ptr_t __tz) throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int settimeofday (const struct timeval *__tv, > const struct timezone *__tz) > throw (); > > > > > >extern int adjtime (const struct timeval *__delta, > struct timeval *__olddelta) throw (); > > > > >enum __itimer_which > { > > ITIMER_REAL = 0, > > > ITIMER_VIRTUAL = 1, > > > > ITIMER_PROF = 2 > > }; > > > >struct itimerval > { > > struct timeval it_interval; > > struct timeval it_value; > }; > > > > > > >typedef int __itimer_which_t; > > > > >extern int getitimer (__itimer_which_t __which, > struct itimerval *__value) throw (); > > > > >extern int setitimer (__itimer_which_t __which, > const struct itimerval *__restrict __new, > struct itimerval *__restrict __old) throw (); > > > > >extern int utimes (const char *__file, const struct timeval __tvp[2]) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int lutimes (const char *__file, const struct timeval __tvp[2]) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int futimes (int __fd, const struct timeval __tvp[2]) throw (); > > > > > > >extern int futimesat (int __fd, const char *__file, > const struct timeval __tvp[2]) throw (); ># 190 "/usr/include/sys/time.h" 3 4 >} ># 364 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 373 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/unistd.h" 1 3 4 ># 27 "/usr/include/unistd.h" 3 4 >extern "C" { ># 202 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/bits/posix_opt.h" 1 3 4 ># 203 "/usr/include/unistd.h" 2 3 4 > > > ># 1 "/usr/include/bits/environments.h" 1 3 4 ># 22 "/usr/include/bits/environments.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 23 "/usr/include/bits/environments.h" 2 3 4 ># 207 "/usr/include/unistd.h" 2 3 4 ># 226 "/usr/include/unistd.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 227 "/usr/include/unistd.h" 2 3 4 ># 267 "/usr/include/unistd.h" 3 4 >typedef __intptr_t intptr_t; > > > > > > >typedef __socklen_t socklen_t; ># 287 "/usr/include/unistd.h" 3 4 >extern int access (const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1))); > > > > >extern int euidaccess (const char *__name, int __type) > throw () __attribute__ ((__nonnull__ (1))); > > >extern int eaccess (const char *__name, int __type) > throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int faccessat (int __fd, const char *__file, int __type, int __flag) > throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); ># 337 "/usr/include/unistd.h" 3 4 >extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) throw () __asm__ ("" "lseek64") > > ; > > > > > >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) __attribute__ ((__warn_unused_result__)); > > > > > >extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)); ># 388 "/usr/include/unistd.h" 3 4 >extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") > > __attribute__ ((__warn_unused_result__)); >extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") > > __attribute__ ((__warn_unused_result__)); ># 404 "/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]) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int pipe2 (int __pipedes[2], int __flags) throw () __attribute__ ((__warn_unused_result__)); ># 432 "/usr/include/unistd.h" 3 4 >extern unsigned int alarm (unsigned int __seconds) throw (); ># 444 "/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); ># 469 "/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))) __attribute__ ((__warn_unused_result__)); > > > >extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > > >extern int fchownat (int __fd, const char *__file, __uid_t __owner, > __gid_t __group, int __flag) > throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); > > > >extern int chdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > >extern int fchdir (int __fd) throw () __attribute__ ((__warn_unused_result__)); ># 511 "/usr/include/unistd.h" 3 4 >extern char *getcwd (char *__buf, size_t __size) throw () __attribute__ ((__warn_unused_result__)); > > > > > >extern char *get_current_dir_name (void) throw (); > > > > > > > >extern char *getwd (char *__buf) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)); > > > > >extern int dup (int __fd) throw () __attribute__ ((__warn_unused_result__)); > > >extern int dup2 (int __fd, int __fd2) throw (); > > > > >extern int dup3 (int __fd, int __fd2, int __flags) throw (); > > > >extern char **__environ; > >extern char **environ; > > > > > >extern int execve (const char *__path, char *const __argv[], > char *const __envp[]) throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) > throw () __attribute__ ((__nonnull__ (2))); > > > > >extern int execv (const char *__path, char *const __argv[]) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int execle (const char *__path, const char *__arg, ...) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int execl (const char *__path, const char *__arg, ...) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern int execvp (const char *__file, char *const __argv[]) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int execlp (const char *__file, const char *__arg, ...) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int execvpe (const char *__file, char *const __argv[], > char *const __envp[]) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int nice (int __inc) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern void _exit (int __status) __attribute__ ((__noreturn__)); > > > > > ># 1 "/usr/include/bits/confname.h" 1 3 4 ># 25 "/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, > > > _CS_V6_ENV, > > _CS_V7_ENV > > }; ># 610 "/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 (); ># 646 "/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 (); ># 672 "/usr/include/unistd.h" 3 4 >extern int setpgrp (void) throw (); ># 689 "/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 () __attribute__ ((__warn_unused_result__)); > > > >extern int group_member (__gid_t __gid) throw (); > > > > > > >extern int setuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int setreuid (__uid_t __ruid, __uid_t __euid) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int seteuid (__uid_t __uid) throw () __attribute__ ((__warn_unused_result__)); > > > > > > >extern int setgid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int setregid (__gid_t __rgid, __gid_t __egid) throw () __attribute__ ((__warn_unused_result__)); > > > > >extern int setegid (__gid_t __gid) throw () __attribute__ ((__warn_unused_result__)); > > > > > >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 () __attribute__ ((__warn_unused_result__)); > > > >extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) > throw () __attribute__ ((__warn_unused_result__)); > > > > > > >extern __pid_t fork (void) throw (); > > > > > > > >extern __pid_t vfork (void) throw (); > > > > > >extern char *ttyname (int __fd) throw (); > > > >extern int ttyname_r (int __fd, char *__buf, size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); > > > >extern int isatty (int __fd) throw (); > > > > > >extern int ttyslot (void) throw (); > > > > >extern int link (const char *__from, const char *__to) > throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); > > > > >extern int linkat (int __fromfd, const char *__from, int __tofd, > const char *__to, int __flags) > throw () __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); > > > > >extern int symlink (const char *__from, const char *__to) > throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); > > > > >extern ssize_t readlink (const char *__restrict __path, > char *__restrict __buf, size_t __len) > throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); > > > > >extern int symlinkat (const char *__from, int __tofd, > const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); > > >extern ssize_t readlinkat (int __fd, const char *__restrict __path, > char *__restrict __buf, size_t __len) > throw () __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); > > > >extern int unlink (const char *__name) throw () __attribute__ ((__nonnull__ (1))); > > > >extern int unlinkat (int __fd, const char *__name, int __flag) > throw () __attribute__ ((__nonnull__ (2))); > > > >extern int rmdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))); > > > >extern __pid_t tcgetpgrp (int __fd) throw (); > > >extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw (); > > > > > > >extern char *getlogin (void); > > > > > > > >extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); > > > > >extern int setlogin (const char *__name) throw () __attribute__ ((__nonnull__ (1))); ># 893 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/getopt.h" 1 3 4 ># 49 "/usr/include/getopt.h" 3 4 >extern "C" { ># 58 "/usr/include/getopt.h" 3 4 >extern char *optarg; ># 72 "/usr/include/getopt.h" 3 4 >extern int optind; > > > > >extern int opterr; > > > >extern int optopt; ># 151 "/usr/include/getopt.h" 3 4 >extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) > throw (); ># 186 "/usr/include/getopt.h" 3 4 >} ># 894 "/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))) __attribute__ ((__warn_unused_result__)); > > > >extern int sethostid (long int __id) throw () __attribute__ ((__warn_unused_result__)); > > > > > >extern int getdomainname (char *__name, size_t __len) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); >extern int setdomainname (const char *__name, size_t __len) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern int vhangup (void) throw (); > > >extern int revoke (const char *__file) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > > > >extern int profil (unsigned short int *__sample_buffer, size_t __size, > size_t __offset, unsigned int __scale) > throw () __attribute__ ((__nonnull__ (1))); > > > > > >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 () __attribute__ ((__warn_unused_result__)); > > > > > > >extern int chroot (const char *__path) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > >extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); > > > > > > > >extern int fsync (int __fd); > > > > > >extern int syncfs (int __fd) throw (); > > > > > > >extern long int gethostid (void); > > >extern void sync (void) throw (); > > > > > >extern int getpagesize (void) throw () __attribute__ ((__const__)); > > > > >extern int getdtablesize (void) throw (); ># 1019 "/usr/include/unistd.h" 3 4 >extern int truncate (const char *__file, __off64_t __length) throw () __asm__ ("" "truncate64") > > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > > > > > >extern int truncate64 (const char *__file, __off64_t __length) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); ># 1041 "/usr/include/unistd.h" 3 4 >extern int ftruncate (int __fd, __off64_t __length) throw () __asm__ ("" "ftruncate64") > __attribute__ ((__warn_unused_result__)); > > > > > >extern int ftruncate64 (int __fd, __off64_t __length) throw () __attribute__ ((__warn_unused_result__)); ># 1059 "/usr/include/unistd.h" 3 4 >extern int brk (void *__addr) throw () __attribute__ ((__warn_unused_result__)); > > > > > >extern void *sbrk (intptr_t __delta) throw (); ># 1080 "/usr/include/unistd.h" 3 4 >extern long int syscall (long int __sysno, ...) throw (); ># 1134 "/usr/include/unistd.h" 3 4 >extern int fdatasync (int __fildes); > > > > > > > >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))); ># 1169 "/usr/include/unistd.h" 3 4 ># 1 "/usr/include/bits/unistd.h" 1 3 4 ># 23 "/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__)) __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"))) > ; ># 86 "/usr/include/bits/unistd.h" 3 4 >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t >pread (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 __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_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) > throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); >extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () __asm__ ("" "readlink") > > > __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) throw () __asm__ ("" "__readlink_chk") > > > > __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__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t >__attribute__ ((__leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) throw () > >{ > 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) > throw () __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) throw () __asm__ ("" "readlinkat") > > > > __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) throw () __asm__ ("" "__readlinkat_chk") > > > > __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__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t >__attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) throw () > >{ > 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) > throw () __attribute__ ((__warn_unused_result__)); >extern char *__getcwd_alias (char *__buf, size_t __size) throw () __asm__ ("" "getcwd") > __attribute__ ((__warn_unused_result__)); >extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) throw () __asm__ ("" "__getcwd_chk") > > > __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * >__attribute__ ((__leaf__)) getcwd (char *__buf, size_t __size) throw () >{ > 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) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); >extern char *__getwd_warn (char *__buf) throw () __asm__ ("" "getwd") > __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__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * >__attribute__ ((__leaf__)) getwd (char *__buf) throw () >{ > 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) throw (); >extern size_t __confstr_alias (int __name, char *__buf, size_t __len) throw () __asm__ ("" "confstr") > ; >extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) throw () __asm__ ("" "__confstr_chk") > > > __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) confstr (int __name, char *__buf, size_t __len) throw () >{ > 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) > throw () __attribute__ ((__warn_unused_result__)); >extern int __getgroups_alias (int __size, __gid_t __list[]) throw () __asm__ ("" "getgroups") > __attribute__ ((__warn_unused_result__)); >extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) throw () __asm__ ("" "__getgroups_chk") > > > __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__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) getgroups (int __size, __gid_t __list[]) throw () >{ > 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) throw () __attribute__ ((__nonnull__ (2))); >extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ttyname_r") > > __attribute__ ((__nonnull__ (2))); >extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ttyname_r_chk") > > > __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) throw () >{ > 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__)) __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) > throw () __attribute__ ((__nonnull__ (1))); >extern int __gethostname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "gethostname") > __attribute__ ((__nonnull__ (1))); >extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__gethostname_chk") > > > __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) gethostname (char *__buf, size_t __buflen) throw () >{ > 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) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); >extern int __getdomainname_alias (char *__buf, size_t __buflen) throw () __asm__ ("" "getdomainname") > > __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); >extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__getdomainname_chk") > > > __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__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) getdomainname (char *__buf, size_t __buflen) throw () >{ > 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); >} ># 1170 "/usr/include/unistd.h" 2 3 4 > > >} ># 374 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 383 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/errno.h" 1 3 4 ># 31 "/usr/include/errno.h" 3 4 >extern "C" { > > > ># 1 "/usr/include/bits/errno.h" 1 3 4 ># 24 "/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 ># 6 "/usr/include/asm-generic/errno.h" 2 3 4 ># 1 "/usr/include/asm/errno.h" 2 3 4 ># 1 "/usr/include/linux/errno.h" 2 3 4 ># 25 "/usr/include/bits/errno.h" 2 3 4 ># 50 "/usr/include/bits/errno.h" 3 4 >extern int *__errno_location (void) throw () __attribute__ ((__const__)); ># 36 "/usr/include/errno.h" 2 3 4 ># 54 "/usr/include/errno.h" 3 4 >extern char *program_invocation_name, *program_invocation_short_name; > > > >} ># 68 "/usr/include/errno.h" 3 4 >typedef int error_t; ># 384 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > ># 1 "/usr/include/crypt.h" 1 3 4 ># 30 "/usr/include/crypt.h" 3 4 >extern "C" { > > >extern char *crypt (const char *__key, const char *__salt) > throw () __attribute__ ((__nonnull__ (1, 2))); > > >extern void setkey (const char *__key) throw () __attribute__ ((__nonnull__ (1))); > > > >extern void encrypt (char *__block, int __edflag) throw () __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) > throw () __attribute__ ((__nonnull__ (1, 2, 3))); > >extern void setkey_r (const char *__key, > struct crypt_data * __restrict __data) > throw () __attribute__ ((__nonnull__ (1, 2))); > >extern void encrypt_r (char *__block, int __edflag, > struct crypt_data * __restrict __data) > throw () __attribute__ ((__nonnull__ (1, 3))); > > >} ># 387 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > > > > > > ># 1 "/usr/include/assert.h" 1 3 4 ># 395 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 493 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_compiler.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/my_compiler.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_global.h" 1 ># 28 "/buildbot/mariadb-10.2.31/include/my_compiler.h" 2 ># 109 "/buildbot/mariadb-10.2.31/include/my_compiler.h" >template<size_t alignment> struct my_alignment_imp; >template<> struct __attribute__((__aligned__((1)))) my_alignment_imp<1> {}; >template<> struct __attribute__((__aligned__((2)))) my_alignment_imp<2> {}; >template<> struct __attribute__((__aligned__((4)))) my_alignment_imp<4> {}; >template<> struct __attribute__((__aligned__((8)))) my_alignment_imp<8> {}; >template<> struct __attribute__((__aligned__((16)))) my_alignment_imp<16> {}; ># 131 "/buildbot/mariadb-10.2.31/include/my_compiler.h" >template <size_t size, size_t alignment> >struct my_aligned_storage >{ > union > { > char data[size]; > my_alignment_imp<alignment> align; > }; >}; ># 174 "/buildbot/mariadb-10.2.31/include/my_compiler.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_attribute.h" 1 ># 175 "/buildbot/mariadb-10.2.31/include/my_compiler.h" 2 ># 494 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 525 "/buildbot/mariadb-10.2.31/include/my_global.h" >typedef int File; > > > >typedef int my_socket; > > > > >extern "C" { > > > > > >} > >typedef char pchar; >typedef char puchar; >typedef char pbool; >typedef short pshort; >typedef float pfloat; > > > > > > > >extern "C" { >typedef int (*qsort_cmp)(const void *,const void *); >typedef int (*qsort_cmp2)(void*, const void *,const void *); >} > > ># 1 "/usr/include/sys/socket.h" 1 3 4 ># 25 "/usr/include/sys/socket.h" 3 4 >extern "C" { > ># 1 "/usr/include/sys/uio.h" 1 3 4 ># 26 "/usr/include/sys/uio.h" 3 4 >extern "C" { > > ># 1 "/usr/include/bits/uio.h" 1 3 4 ># 56 "/usr/include/bits/uio.h" 3 4 >extern "C" { > > >extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, > unsigned long int __liovcnt, > const struct iovec *__rvec, > unsigned long int __riovcnt, > unsigned long int __flags) > throw (); > > >extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, > unsigned long int __liovcnt, > const struct iovec *__rvec, > unsigned long int __riovcnt, > unsigned long int __flags) > throw (); > >} ># 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__)); ># 82 "/usr/include/sys/uio.h" 3 4 >extern ssize_t preadv (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "preadv64") > > __attribute__ ((__warn_unused_result__)); >extern ssize_t pwritev (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "pwritev64") > > __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__)); > > > >} ># 28 "/usr/include/sys/socket.h" 2 3 4 > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 30 "/usr/include/sys/socket.h" 2 3 4 > > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 33 "/usr/include/sys/socket.h" 2 3 4 > > > > > > ># 1 "/usr/include/bits/socket.h" 1 3 4 ># 28 "/usr/include/bits/socket.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 29 "/usr/include/bits/socket.h" 2 3 4 ># 39 "/usr/include/bits/socket.h" 3 4 ># 1 "/usr/include/bits/socket_type.h" 1 3 4 ># 24 "/usr/include/bits/socket_type.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 = 00004000 > > >}; ># 40 "/usr/include/bits/socket.h" 2 3 4 ># 147 "/usr/include/bits/socket.h" 3 4 ># 1 "/usr/include/bits/sockaddr.h" 1 3 4 ># 28 "/usr/include/bits/sockaddr.h" 3 4 >typedef unsigned short int sa_family_t; ># 148 "/usr/include/bits/socket.h" 2 3 4 > > >struct sockaddr > { > sa_family_t sa_family; > char sa_data[14]; > }; ># 163 "/usr/include/bits/socket.h" 3 4 >struct sockaddr_storage > { > sa_family_t ss_family; > char __ss_padding[(128 - (sizeof (unsigned short int)) - sizeof (unsigned long int))]; > unsigned long int __ss_align; > }; > > > >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_WAITFORONE = 0x10000, > > MSG_FASTOPEN = 0x20000000, > > > 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 []; > > }; ># 273 "/usr/include/bits/socket.h" 3 4 >extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, > struct cmsghdr *__cmsg) throw (); > > > > >extern __inline __attribute__ ((__gnu_inline__)) struct cmsghdr * >__attribute__ ((__leaf__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) throw () >{ > if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) > > return (struct cmsghdr *) 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 (struct cmsghdr *) 0; > return __cmsg; >} > > > > >enum > { > SCM_RIGHTS = 0x01 > > > , SCM_CREDENTIALS = 0x02 > > > }; > > > >struct ucred >{ > pid_t pid; > uid_t uid; > gid_t gid; >}; ># 346 "/usr/include/bits/socket.h" 3 4 ># 1 "/usr/include/asm/socket.h" 1 3 4 ># 1 "/usr/include/asm-generic/socket.h" 1 3 4 > > > > ># 1 "/usr/include/asm/sockios.h" 1 3 4 ># 1 "/usr/include/asm-generic/sockios.h" 1 3 4 ># 1 "/usr/include/asm/sockios.h" 2 3 4 ># 6 "/usr/include/asm-generic/socket.h" 2 3 4 ># 1 "/usr/include/asm/socket.h" 2 3 4 ># 347 "/usr/include/bits/socket.h" 2 3 4 ># 380 "/usr/include/bits/socket.h" 3 4 >struct linger > { > int l_onoff; > int l_linger; > }; ># 40 "/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 > >}; ># 102 "/usr/include/sys/socket.h" 3 4 >struct mmsghdr > { > struct msghdr msg_hdr; > unsigned int msg_len; > > }; > > > > > > >extern int socket (int __domain, int __type, int __protocol) throw (); > > > > > >extern int socketpair (int __domain, int __type, int __protocol, > int __fds[2]) throw (); > > >extern int bind (int __fd, const struct sockaddr * __addr, socklen_t __len) > throw (); > > >extern int getsockname (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __len) throw (); ># 138 "/usr/include/sys/socket.h" 3 4 >extern int connect (int __fd, const struct sockaddr * __addr, socklen_t __len); > > > >extern int getpeername (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __len) throw (); > > > > > > >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 struct sockaddr * __addr, > socklen_t __addr_len); ># 175 "/usr/include/sys/socket.h" 3 4 >extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, > int __flags, struct sockaddr *__restrict __addr, > socklen_t *__restrict __addr_len); > > > > > > > >extern ssize_t sendmsg (int __fd, const struct msghdr *__message, > int __flags); > > > > > > > >extern int sendmmsg (int __fd, struct mmsghdr *__vmessages, > unsigned int __vlen, int __flags); > > > > > > > >extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); > > > > > > > >extern int recvmmsg (int __fd, struct mmsghdr *__vmessages, > unsigned int __vlen, int __flags, > const struct timespec *__tmo); > > > > > > >extern int getsockopt (int __fd, int __level, int __optname, > void *__restrict __optval, > socklen_t *__restrict __optlen) throw (); > > > > >extern int setsockopt (int __fd, int __level, int __optname, > const void *__optval, socklen_t __optlen) throw (); > > > > > >extern int listen (int __fd, int __n) throw (); ># 244 "/usr/include/sys/socket.h" 3 4 >extern int accept (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __addr_len); > > > > > > >extern int accept4 (int __fd, struct sockaddr *__restrict __addr, > socklen_t *__restrict __addr_len, int __flags); ># 262 "/usr/include/sys/socket.h" 3 4 >extern int shutdown (int __fd, int __how) throw (); > > > > >extern int sockatmark (int __fd) throw (); > > > > > > > >extern int isfdtype (int __fd, int __fdtype) throw (); > > > > > ># 1 "/usr/include/bits/socket2.h" 1 3 4 ># 23 "/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__ ((__gnu_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, > struct sockaddr *__restrict __addr, > socklen_t *__restrict __addr_len); >extern ssize_t __recvfrom_alias (int __fd, void *__restrict __buf, size_t __n, int __flags, struct sockaddr *__restrict __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, struct sockaddr *__restrict __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__ ((__gnu_inline__)) __attribute__ ((__artificial__)) ssize_t >recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, > struct sockaddr *__restrict __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); >} ># 282 "/usr/include/sys/socket.h" 2 3 4 > > >} ># 561 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > >typedef socklen_t size_socket; ># 815 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/c++/4.8.2/cmath" 1 3 ># 39 "/usr/include/c++/4.8.2/cmath" 3 ># 40 "/usr/include/c++/4.8.2/cmath" 3 > > ># 1 "/usr/include/c++/4.8.2/bits/cpp_type_traits.h" 1 3 ># 35 "/usr/include/c++/4.8.2/bits/cpp_type_traits.h" 3 ># 36 "/usr/include/c++/4.8.2/bits/cpp_type_traits.h" 3 ># 68 "/usr/include/c++/4.8.2/bits/cpp_type_traits.h" 3 >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _Iterator, typename _Container> > class __normal_iterator; > > >} > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > struct __true_type { }; > struct __false_type { }; > > template<bool> > struct __truth_type > { typedef __false_type __type; }; > > template<> > struct __truth_type<true> > { typedef __true_type __type; }; > > > > template<class _Sp, class _Tp> > struct __traitor > { > enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; > typedef typename __truth_type<__value>::__type __type; > }; > > > template<typename, typename> > struct __are_same > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<typename _Tp> > struct __are_same<_Tp, _Tp> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<typename _Tp> > struct __is_void > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<> > struct __is_void<void> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_integer > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > > > > template<> > struct __is_integer<bool> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<signed char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<> > struct __is_integer<wchar_t> > { > enum { __value = 1 }; > typedef __true_type __type; > }; ># 198 "/usr/include/c++/4.8.2/bits/cpp_type_traits.h" 3 > template<> > struct __is_integer<short> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned short> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<int> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned int> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<long long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_integer<unsigned long long> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_floating > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > > template<> > struct __is_floating<float> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_floating<double> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_floating<long double> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_pointer > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<typename _Tp> > struct __is_pointer<_Tp*> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_normal_iterator > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<typename _Iterator, typename _Container> > struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator, > _Container> > > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_arithmetic > : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > > { }; > > > > > template<typename _Tp> > struct __is_fundamental > : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> > > { }; > > > > > template<typename _Tp> > struct __is_scalar > : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > > { }; > > > > > template<typename _Tp> > struct __is_char > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<> > struct __is_char<char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<> > struct __is_char<wchar_t> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > template<typename _Tp> > struct __is_byte > { > enum { __value = 0 }; > typedef __false_type __type; > }; > > template<> > struct __is_byte<char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_byte<signed char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > template<> > struct __is_byte<unsigned char> > { > enum { __value = 1 }; > typedef __true_type __type; > }; > > > > > template<typename _Tp> > struct __is_move_iterator > { > enum { __value = 0 }; > typedef __false_type __type; > }; ># 421 "/usr/include/c++/4.8.2/bits/cpp_type_traits.h" 3 > >} ># 43 "/usr/include/c++/4.8.2/cmath" 2 3 ># 1 "/usr/include/c++/4.8.2/ext/type_traits.h" 1 3 ># 32 "/usr/include/c++/4.8.2/ext/type_traits.h" 3 ># 33 "/usr/include/c++/4.8.2/ext/type_traits.h" 3 > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ > > > > template<bool, typename> > struct __enable_if > { }; > > template<typename _Tp> > struct __enable_if<true, _Tp> > { typedef _Tp __type; }; > > > > template<bool _Cond, typename _Iftrue, typename _Iffalse> > struct __conditional_type > { typedef _Iftrue __type; }; > > template<typename _Iftrue, typename _Iffalse> > struct __conditional_type<false, _Iftrue, _Iffalse> > { typedef _Iffalse __type; }; > > > > template<typename _Tp> > struct __add_unsigned > { > private: > typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; > > public: > typedef typename __if_type::__type __type; > }; > > template<> > struct __add_unsigned<char> > { typedef unsigned char __type; }; > > template<> > struct __add_unsigned<signed char> > { typedef unsigned char __type; }; > > template<> > struct __add_unsigned<short> > { typedef unsigned short __type; }; > > template<> > struct __add_unsigned<int> > { typedef unsigned int __type; }; > > template<> > struct __add_unsigned<long> > { typedef unsigned long __type; }; > > template<> > struct __add_unsigned<long long> > { typedef unsigned long long __type; }; > > > template<> > struct __add_unsigned<bool>; > > template<> > struct __add_unsigned<wchar_t>; > > > > template<typename _Tp> > struct __remove_unsigned > { > private: > typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; > > public: > typedef typename __if_type::__type __type; > }; > > template<> > struct __remove_unsigned<char> > { typedef signed char __type; }; > > template<> > struct __remove_unsigned<unsigned char> > { typedef signed char __type; }; > > template<> > struct __remove_unsigned<unsigned short> > { typedef short __type; }; > > template<> > struct __remove_unsigned<unsigned int> > { typedef int __type; }; > > template<> > struct __remove_unsigned<unsigned long> > { typedef long __type; }; > > template<> > struct __remove_unsigned<unsigned long long> > { typedef long long __type; }; > > > template<> > struct __remove_unsigned<bool>; > > template<> > struct __remove_unsigned<wchar_t>; > > > > template<typename _Type> > inline bool > __is_null_pointer(_Type* __ptr) > { return __ptr == 0; } > > template<typename _Type> > inline bool > __is_null_pointer(_Type) > { return false; } > > > > template<typename _Tp, bool = std::__is_integer<_Tp>::__value> > struct __promote > { typedef double __type; }; > > > > > template<typename _Tp> > struct __promote<_Tp, false> > { }; > > template<> > struct __promote<long double> > { typedef long double __type; }; > > template<> > struct __promote<double> > { typedef double __type; }; > > template<> > struct __promote<float> > { typedef float __type; }; > > template<typename _Tp, typename _Up, > typename _Tp2 = typename __promote<_Tp>::__type, > typename _Up2 = typename __promote<_Up>::__type> > struct __promote_2 > { > typedef __typeof__(_Tp2() + _Up2()) __type; > }; > > template<typename _Tp, typename _Up, typename _Vp, > typename _Tp2 = typename __promote<_Tp>::__type, > typename _Up2 = typename __promote<_Up>::__type, > typename _Vp2 = typename __promote<_Vp>::__type> > struct __promote_3 > { > typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; > }; > > template<typename _Tp, typename _Up, typename _Vp, typename _Wp, > typename _Tp2 = typename __promote<_Tp>::__type, > typename _Up2 = typename __promote<_Up>::__type, > typename _Vp2 = typename __promote<_Vp>::__type, > typename _Wp2 = typename __promote<_Wp>::__type> > struct __promote_4 > { > typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; > }; > > >} ># 44 "/usr/include/c++/4.8.2/cmath" 2 3 ># 75 "/usr/include/c++/4.8.2/cmath" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > inline double > abs(double __x) > { return __builtin_fabs(__x); } > > > > inline float > abs(float __x) > { return __builtin_fabsf(__x); } > > inline long double > abs(long double __x) > { return __builtin_fabsl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > abs(_Tp __x) > { return __builtin_fabs(__x); } > > using ::acos; > > > inline float > acos(float __x) > { return __builtin_acosf(__x); } > > inline long double > acos(long double __x) > { return __builtin_acosl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > acos(_Tp __x) > { return __builtin_acos(__x); } > > using ::asin; > > > inline float > asin(float __x) > { return __builtin_asinf(__x); } > > inline long double > asin(long double __x) > { return __builtin_asinl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > asin(_Tp __x) > { return __builtin_asin(__x); } > > using ::atan; > > > inline float > atan(float __x) > { return __builtin_atanf(__x); } > > inline long double > atan(long double __x) > { return __builtin_atanl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > atan(_Tp __x) > { return __builtin_atan(__x); } > > using ::atan2; > > > inline float > atan2(float __y, float __x) > { return __builtin_atan2f(__y, __x); } > > inline long double > atan2(long double __y, long double __x) > { return __builtin_atan2l(__y, __x); } > > > template<typename _Tp, typename _Up> > inline > typename __gnu_cxx::__promote_2<_Tp, _Up>::__type > atan2(_Tp __y, _Up __x) > { > typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; > return atan2(__type(__y), __type(__x)); > } > > using ::ceil; > > > inline float > ceil(float __x) > { return __builtin_ceilf(__x); } > > inline long double > ceil(long double __x) > { return __builtin_ceill(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > ceil(_Tp __x) > { return __builtin_ceil(__x); } > > using ::cos; > > > inline float > cos(float __x) > { return __builtin_cosf(__x); } > > inline long double > cos(long double __x) > { return __builtin_cosl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > cos(_Tp __x) > { return __builtin_cos(__x); } > > using ::cosh; > > > inline float > cosh(float __x) > { return __builtin_coshf(__x); } > > inline long double > cosh(long double __x) > { return __builtin_coshl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > cosh(_Tp __x) > { return __builtin_cosh(__x); } > > using ::exp; > > > inline float > exp(float __x) > { return __builtin_expf(__x); } > > inline long double > exp(long double __x) > { return __builtin_expl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > exp(_Tp __x) > { return __builtin_exp(__x); } > > using ::fabs; > > > inline float > fabs(float __x) > { return __builtin_fabsf(__x); } > > inline long double > fabs(long double __x) > { return __builtin_fabsl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > fabs(_Tp __x) > { return __builtin_fabs(__x); } > > using ::floor; > > > inline float > floor(float __x) > { return __builtin_floorf(__x); } > > inline long double > floor(long double __x) > { return __builtin_floorl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > floor(_Tp __x) > { return __builtin_floor(__x); } > > using ::fmod; > > > inline float > fmod(float __x, float __y) > { return __builtin_fmodf(__x, __y); } > > inline long double > fmod(long double __x, long double __y) > { return __builtin_fmodl(__x, __y); } > > > template<typename _Tp, typename _Up> > inline > typename __gnu_cxx::__promote_2<_Tp, _Up>::__type > fmod(_Tp __x, _Up __y) > { > typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; > return fmod(__type(__x), __type(__y)); > } > > using ::frexp; > > > inline float > frexp(float __x, int* __exp) > { return __builtin_frexpf(__x, __exp); } > > inline long double > frexp(long double __x, int* __exp) > { return __builtin_frexpl(__x, __exp); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > frexp(_Tp __x, int* __exp) > { return __builtin_frexp(__x, __exp); } > > using ::ldexp; > > > inline float > ldexp(float __x, int __exp) > { return __builtin_ldexpf(__x, __exp); } > > inline long double > ldexp(long double __x, int __exp) > { return __builtin_ldexpl(__x, __exp); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > ldexp(_Tp __x, int __exp) > { return __builtin_ldexp(__x, __exp); } > > using ::log; > > > inline float > log(float __x) > { return __builtin_logf(__x); } > > inline long double > log(long double __x) > { return __builtin_logl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > log(_Tp __x) > { return __builtin_log(__x); } > > using ::log10; > > > inline float > log10(float __x) > { return __builtin_log10f(__x); } > > inline long double > log10(long double __x) > { return __builtin_log10l(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > log10(_Tp __x) > { return __builtin_log10(__x); } > > using ::modf; > > > inline float > modf(float __x, float* __iptr) > { return __builtin_modff(__x, __iptr); } > > inline long double > modf(long double __x, long double* __iptr) > { return __builtin_modfl(__x, __iptr); } > > > using ::pow; > > > inline float > pow(float __x, float __y) > { return __builtin_powf(__x, __y); } > > inline long double > pow(long double __x, long double __y) > { return __builtin_powl(__x, __y); } > > > > > inline double > pow(double __x, int __i) > { return __builtin_powi(__x, __i); } > > inline float > pow(float __x, int __n) > { return __builtin_powif(__x, __n); } > > inline long double > pow(long double __x, int __n) > { return __builtin_powil(__x, __n); } > > > > template<typename _Tp, typename _Up> > inline > typename __gnu_cxx::__promote_2<_Tp, _Up>::__type > pow(_Tp __x, _Up __y) > { > typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; > return pow(__type(__x), __type(__y)); > } > > using ::sin; > > > inline float > sin(float __x) > { return __builtin_sinf(__x); } > > inline long double > sin(long double __x) > { return __builtin_sinl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > sin(_Tp __x) > { return __builtin_sin(__x); } > > using ::sinh; > > > inline float > sinh(float __x) > { return __builtin_sinhf(__x); } > > inline long double > sinh(long double __x) > { return __builtin_sinhl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > sinh(_Tp __x) > { return __builtin_sinh(__x); } > > using ::sqrt; > > > inline float > sqrt(float __x) > { return __builtin_sqrtf(__x); } > > inline long double > sqrt(long double __x) > { return __builtin_sqrtl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > sqrt(_Tp __x) > { return __builtin_sqrt(__x); } > > using ::tan; > > > inline float > tan(float __x) > { return __builtin_tanf(__x); } > > inline long double > tan(long double __x) > { return __builtin_tanl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > tan(_Tp __x) > { return __builtin_tan(__x); } > > using ::tanh; > > > inline float > tanh(float __x) > { return __builtin_tanhf(__x); } > > inline long double > tanh(long double __x) > { return __builtin_tanhl(__x); } > > > template<typename _Tp> > inline > typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, > double>::__type > tanh(_Tp __x) > { return __builtin_tanh(__x); } > > >} ># 555 "/usr/include/c++/4.8.2/cmath" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 805 "/usr/include/c++/4.8.2/cmath" 3 > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > fpclassify(_Tp __f) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_fpclassify(0, 1, 4, > 3, 2, __type(__f)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isfinite(_Tp __f) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isfinite(__type(__f)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isinf(_Tp __f) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isinf(__type(__f)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isnan(_Tp __f) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isnan(__type(__f)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isnormal(_Tp __f) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isnormal(__type(__f)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > signbit(_Tp __f) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_signbit(__type(__f)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isgreater(_Tp __f1, _Tp __f2) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isgreater(__type(__f1), __type(__f2)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isgreaterequal(_Tp __f1, _Tp __f2) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isgreaterequal(__type(__f1), __type(__f2)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isless(_Tp __f1, _Tp __f2) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isless(__type(__f1), __type(__f2)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > islessequal(_Tp __f1, _Tp __f2) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_islessequal(__type(__f1), __type(__f2)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > islessgreater(_Tp __f1, _Tp __f2) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_islessgreater(__type(__f1), __type(__f2)); > } > > template<typename _Tp> > inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, > int>::__type > isunordered(_Tp __f1, _Tp __f2) > { > typedef typename __gnu_cxx::__promote<_Tp>::__type __type; > return __builtin_isunordered(__type(__f1), __type(__f2)); > } > > > > >} ># 816 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 847 "/buildbot/mariadb-10.2.31/include/my_global.h" >typedef long long my_ptrdiff_t; ># 889 "/buildbot/mariadb-10.2.31/include/my_global.h" >typedef unsigned char uchar; > > > >typedef signed char int8; > > >typedef unsigned char uint8; > > >typedef short int16; > > >typedef unsigned short uint16; > > > >typedef int int32; > > >typedef unsigned int uint32; ># 932 "/buildbot/mariadb-10.2.31/include/my_global.h" >typedef unsigned long long int ulonglong; >typedef long long int longlong; > > > > > > >typedef longlong int64; > > >typedef ulonglong uint64; > > > > > > > >typedef unsigned long long my_ulonglong; > > > > > >typedef unsigned long intptr; ># 970 "/buildbot/mariadb-10.2.31/include/my_global.h" >typedef off_t os_off_t; > >typedef ulonglong my_off_t; ># 982 "/buildbot/mariadb-10.2.31/include/my_global.h" >typedef ulonglong table_map; >typedef ulong nesting_map; > > >typedef const struct charset_info_st CHARSET_INFO; >typedef struct st_mysql_lex_string LEX_STRING; ># 1012 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" 1 ># 41 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >class THD; >class Item; > > > > > >typedef char my_bool; >typedef void * MYSQL_PLUGIN; > ># 1 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 1 ># 19 "/buildbot/mariadb-10.2.31/include/mysql/services.h" >extern "C" { > > ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_base64.h" 1 ># 25 "/buildbot/mariadb-10.2.31/include/mysql/service_base64.h" >extern "C" { ># 35 "/buildbot/mariadb-10.2.31/include/mysql/service_base64.h" >extern struct base64_service_st { > int (*base64_needed_encoded_length_ptr)(int length_of_data); > int (*base64_encode_max_arg_length_ptr)(void); > int (*base64_needed_decoded_length_ptr)(int length_of_encoded_data); > int (*base64_decode_max_arg_length_ptr)(); > int (*base64_encode_ptr)(const void *src, size_t src_len, char *dst); > int (*base64_decode_ptr)(const char *src, size_t src_len, > void *dst, const char **end_ptr, int flags); >} *base64_service; ># 57 "/buildbot/mariadb-10.2.31/include/mysql/service_base64.h" >int my_base64_needed_encoded_length(int length_of_data); > > >int my_base64_encode_max_arg_length(void); > > >int my_base64_needed_decoded_length(int length_of_encoded_data); > > >int my_base64_decode_max_arg_length(); > > >int my_base64_encode(const void *src, size_t src_len, char *dst); > > >int my_base64_decode(const char *src, size_t src_len, > void *dst, const char **end_ptr, int flags); > > > > >} ># 23 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_debug_sync.h" 1 ># 326 "/buildbot/mariadb-10.2.31/include/mysql/service_debug_sync.h" >extern "C" { > > > > > > >extern void (*debug_sync_C_callback_ptr)(THD*, const char *, size_t); ># 357 "/buildbot/mariadb-10.2.31/include/mysql/service_debug_sync.h" >} ># 24 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption.h" 1 ># 28 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption.h" >extern "C" { ># 58 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption.h" >struct encryption_service_st { > unsigned int (*encryption_key_get_latest_version_func)(unsigned int key_id); > unsigned int (*encryption_key_get_func)(unsigned int key_id, unsigned int key_version, > unsigned char* buffer, unsigned int* length); > unsigned int (*encryption_ctx_size_func)(unsigned int key_id, unsigned int key_version); > int (*encryption_ctx_init_func)(void *ctx, const unsigned char* key, unsigned int klen, > const unsigned char* iv, unsigned int ivlen, > int flags, unsigned int key_id, > unsigned int key_version); > int (*encryption_ctx_update_func)(void *ctx, const unsigned char* src, unsigned int slen, > unsigned char* dst, unsigned int* dlen); > int (*encryption_ctx_finish_func)(void *ctx, unsigned char* dst, unsigned int* dlen); > unsigned int (*encryption_encrypted_length_func)(unsigned int slen, unsigned int key_id, unsigned int key_version); >}; ># 86 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption.h" >extern struct encryption_service_st encryption_handler; ># 97 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption.h" >static inline unsigned int encryption_key_id_exists(unsigned int id) >{ > return encryption_handler.encryption_key_get_latest_version_func(id) != (~(unsigned int)0); >} > >static inline unsigned int encryption_key_version_exists(unsigned int id, unsigned int version) >{ > unsigned int unused; > return encryption_handler.encryption_key_get_func((id),(version),(__null),(&unused)) != (~(unsigned int)0); >} > >static inline int encryption_crypt(const unsigned char* src, unsigned int slen, > unsigned char* dst, unsigned int* dlen, > const unsigned char* key, unsigned int klen, > const unsigned char* iv, unsigned int ivlen, > int flags, unsigned int key_id, unsigned int key_version) >{ > void *ctx= __builtin_alloca (encryption_handler.encryption_ctx_size_func((key_id),(key_version))); > int res1, res2; > unsigned int d1, d2; > if ((res1= encryption_handler.encryption_ctx_init_func((ctx),(key),(klen),(iv),(ivlen),(flags),(key_id),(key_version)))) > return res1; > res1= encryption_handler.encryption_ctx_update_func((ctx),(src),(slen),(dst),(&d1)); > res2= encryption_handler.encryption_ctx_finish_func((ctx),(dst + d1),(&d2)); > *dlen= d1 + d2; > return res1 ? res1 : res2; >} > > >} ># 25 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption_scheme.h" 1 ># 71 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption_scheme.h" >extern "C" { > > > > > >struct st_encryption_scheme_key { > unsigned int version; > unsigned char key[16]; >}; > >struct st_encryption_scheme { > unsigned char iv[16]; > struct st_encryption_scheme_key key[3]; > unsigned int keyserver_requests; > unsigned int key_id; > unsigned int type; > > void (*locker)(struct st_encryption_scheme *self, int release); >}; > >extern struct encryption_scheme_service_st { > int (*encryption_scheme_encrypt_func) > (const unsigned char* src, unsigned int slen, > unsigned char* dst, unsigned int* dlen, > struct st_encryption_scheme *scheme, > unsigned int key_version, unsigned int i32_1, > unsigned int i32_2, unsigned long long i64); > int (*encryption_scheme_decrypt_func) > (const unsigned char* src, unsigned int slen, > unsigned char* dst, unsigned int* dlen, > struct st_encryption_scheme *scheme, > unsigned int key_version, unsigned int i32_1, > unsigned int i32_2, unsigned long long i64); >} *encryption_scheme_service; ># 114 "/buildbot/mariadb-10.2.31/include/mysql/service_encryption_scheme.h" >int encryption_scheme_encrypt(const unsigned char* src, unsigned int slen, > unsigned char* dst, unsigned int* dlen, > struct st_encryption_scheme *scheme, > unsigned int key_version, unsigned int i32_1, > unsigned int i32_2, unsigned long long i64); >int encryption_scheme_decrypt(const unsigned char* src, unsigned int slen, > unsigned char* dst, unsigned int* dlen, > struct st_encryption_scheme *scheme, > unsigned int key_version, unsigned int i32_1, > unsigned int i32_2, unsigned long long i64); > > > > > >} ># 26 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_kill_statement.h" 1 ># 39 "/buildbot/mariadb-10.2.31/include/mysql/service_kill_statement.h" >extern "C" { > > >enum thd_kill_levels { > THD_IS_NOT_KILLED=0, > THD_ABORT_SOFTLY=50, > THD_ABORT_ASAP=100, >}; > >extern struct kill_statement_service_st { > enum thd_kill_levels (*thd_kill_level_func)(const THD*); >} *thd_kill_statement_service; ># 62 "/buildbot/mariadb-10.2.31/include/mysql/service_kill_statement.h" >enum thd_kill_levels thd_kill_level(const THD*); > > > > >} ># 27 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_logger.h" 1 ># 57 "/buildbot/mariadb-10.2.31/include/mysql/service_logger.h" >extern "C" { > > >typedef struct logger_handle_st LOGGER_HANDLE; > >extern struct logger_service_st { > void (*logger_init_mutexes)(); > LOGGER_HANDLE* (*open)(const char *path, > unsigned long long size_limit, > unsigned int rotations); > int (*close)(LOGGER_HANDLE *log); > int (*vprintf)(LOGGER_HANDLE *log, const char *fmt, va_list argptr); > int (*printf)(LOGGER_HANDLE *log, const char *fmt, ...); > int (*write)(LOGGER_HANDLE *log, const char *buffer, size_t size); > int (*rotate)(LOGGER_HANDLE *log); >} *logger_service; ># 88 "/buildbot/mariadb-10.2.31/include/mysql/service_logger.h" > void logger_init_mutexes(); > LOGGER_HANDLE *logger_open(const char *path, > unsigned long long size_limit, > unsigned int rotations); > int logger_close(LOGGER_HANDLE *log); > int logger_vprintf(LOGGER_HANDLE *log, const char *fmt, va_list argptr); > int logger_printf(LOGGER_HANDLE *log, const char *fmt, ...); > int logger_write(LOGGER_HANDLE *log, const char *buffer, size_t size); > int logger_rotate(LOGGER_HANDLE *log); > > > > >} ># 28 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_md5.h" 1 ># 25 "/buildbot/mariadb-10.2.31/include/mysql/service_md5.h" >extern "C" { ># 34 "/buildbot/mariadb-10.2.31/include/mysql/service_md5.h" >extern struct my_md5_service_st { > void (*my_md5_type)(unsigned char*, const char*, size_t); > void (*my_md5_multi_type)(unsigned char*, ...); > size_t (*my_md5_context_size_type)(); > void (*my_md5_init_type)(void *); > void (*my_md5_input_type)(void *, const unsigned char *, size_t); > void (*my_md5_result_type)(void *, unsigned char *); >} *my_md5_service; ># 54 "/buildbot/mariadb-10.2.31/include/mysql/service_md5.h" >void my_md5(unsigned char*, const char*, size_t); >void my_md5_multi(unsigned char*, ...); >size_t my_md5_context_size(); >void my_md5_init(void *context); >void my_md5_input(void *context, const unsigned char *buf, size_t len); >void my_md5_result(void *context, unsigned char *digest); > > > > >} ># 29 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_my_crypt.h" 1 ># 33 "/buildbot/mariadb-10.2.31/include/mysql/service_my_crypt.h" >extern "C" { ># 50 "/buildbot/mariadb-10.2.31/include/mysql/service_my_crypt.h" >enum my_aes_mode { > MY_AES_ECB, MY_AES_CBC > > , MY_AES_CTR > > > , MY_AES_GCM > >}; > >extern struct my_crypt_service_st { > int (*my_aes_crypt_init)(void *ctx, enum my_aes_mode mode, int flags, > const unsigned char* key, unsigned int klen, > const unsigned char* iv, unsigned int ivlen); > int (*my_aes_crypt_update)(void *ctx, const unsigned char *src, unsigned int slen, > unsigned char *dst, unsigned int *dlen); > int (*my_aes_crypt_finish)(void *ctx, unsigned char *dst, unsigned int *dlen); > int (*my_aes_crypt)(enum my_aes_mode mode, int flags, > const unsigned char *src, unsigned int slen, unsigned char *dst, unsigned int *dlen, > const unsigned char *key, unsigned int klen, const unsigned char *iv, unsigned int ivlen); > unsigned int (*my_aes_get_size)(enum my_aes_mode mode, unsigned int source_length); > unsigned int (*my_aes_ctx_size)(enum my_aes_mode mode); > int (*my_random_bytes)(unsigned char* buf, int num); >} *my_crypt_service; ># 100 "/buildbot/mariadb-10.2.31/include/mysql/service_my_crypt.h" >int my_aes_crypt_init(void *ctx, enum my_aes_mode mode, int flags, > const unsigned char* key, unsigned int klen, > const unsigned char* iv, unsigned int ivlen); >int my_aes_crypt_update(void *ctx, const unsigned char *src, unsigned int slen, > unsigned char *dst, unsigned int *dlen); >int my_aes_crypt_finish(void *ctx, unsigned char *dst, unsigned int *dlen); >int my_aes_crypt(enum my_aes_mode mode, int flags, > const unsigned char *src, unsigned int slen, unsigned char *dst, unsigned int *dlen, > const unsigned char *key, unsigned int klen, const unsigned char *iv, unsigned int ivlen); > >int my_random_bytes(unsigned char* buf, int num); >unsigned int my_aes_get_size(enum my_aes_mode mode, unsigned int source_length); >unsigned int my_aes_ctx_size(enum my_aes_mode mode); > > > > >} ># 30 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_my_print_error.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/mysql/service_my_print_error.h" >extern "C" { ># 40 "/buildbot/mariadb-10.2.31/include/mysql/service_my_print_error.h" >extern struct my_print_error_service_st { > void (*my_error_func)(unsigned int nr, unsigned long MyFlags, ...); > void (*my_printf_error_func)(unsigned int nr, const char *fmt, unsigned long MyFlags,...); > void (*my_printv_error_func)(unsigned int error, const char *format, unsigned long MyFlags, va_list ap); >} *my_print_error_service; ># 54 "/buildbot/mariadb-10.2.31/include/mysql/service_my_print_error.h" >extern void my_error(unsigned int nr, unsigned long MyFlags, ...); >extern void my_printf_error(unsigned int my_err, const char *format, unsigned long MyFlags, ...); >extern void my_printv_error(unsigned int error, const char *format, unsigned long MyFlags,va_list ap); > > > >} ># 31 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_my_snprintf.h" 1 ># 75 "/buildbot/mariadb-10.2.31/include/mysql/service_my_snprintf.h" >extern "C" { > > > > > > > >extern struct my_snprintf_service_st { > size_t (*my_snprintf_type)(char*, size_t, const char*, ...); > size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list); >} *my_snprintf_service; ># 95 "/buildbot/mariadb-10.2.31/include/mysql/service_my_snprintf.h" >size_t my_snprintf(char* to, size_t n, const char* fmt, ...); >size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap); > > > > >} ># 32 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_progress_report.h" 1 ># 29 "/buildbot/mariadb-10.2.31/include/mysql/service_progress_report.h" >extern "C" { > > > > > >extern struct progress_report_service_st { > void (*thd_progress_init_func)(THD* thd, unsigned int max_stage); > void (*thd_progress_report_func)(THD* thd, > unsigned long long progress, > unsigned long long max_progress); > void (*thd_progress_next_stage_func)(THD* thd); > void (*thd_progress_end_func)(THD* thd); > const char *(*set_thd_proc_info_func)(THD*, const char *info, > const char *func, > const char *file, > unsigned int line); >} *progress_report_service; ># 65 "/buildbot/mariadb-10.2.31/include/mysql/service_progress_report.h" >void thd_progress_init(THD* thd, unsigned int max_stage); >void thd_progress_report(THD* thd, > unsigned long long progress, > unsigned long long max_progress); >void thd_progress_next_stage(THD* thd); >void thd_progress_end(THD* thd); >const char *set_thd_proc_info(THD*, const char * info, const char *func, > const char *file, unsigned int line); > > > > >} ># 33 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_sha1.h" 1 ># 25 "/buildbot/mariadb-10.2.31/include/mysql/service_sha1.h" >extern "C" { ># 34 "/buildbot/mariadb-10.2.31/include/mysql/service_sha1.h" >extern struct my_sha1_service_st { > void (*my_sha1_type)(unsigned char*, const char*, size_t); > void (*my_sha1_multi_type)(unsigned char*, ...); > size_t (*my_sha1_context_size_type)(); > void (*my_sha1_init_type)(void *); > void (*my_sha1_input_type)(void *, const unsigned char *, size_t); > void (*my_sha1_result_type)(void *, unsigned char *); >} *my_sha1_service; ># 54 "/buildbot/mariadb-10.2.31/include/mysql/service_sha1.h" >void my_sha1(unsigned char*, const char*, size_t); >void my_sha1_multi(unsigned char*, ...); >size_t my_sha1_context_size(); >void my_sha1_init(void *context); >void my_sha1_input(void *context, const unsigned char *buf, size_t len); >void my_sha1_result(void *context, unsigned char *digest); > > > > >} ># 34 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_sha2.h" 1 ># 25 "/buildbot/mariadb-10.2.31/include/mysql/service_sha2.h" >extern "C" { > > > > > > >extern struct my_sha2_service_st { > void (*my_sha224_type)(unsigned char*, const char*, size_t); > void (*my_sha224_multi_type)(unsigned char*, ...); > size_t (*my_sha224_context_size_type)(); > void (*my_sha224_init_type)(void *); > void (*my_sha224_input_type)(void *, const unsigned char *, size_t); > void (*my_sha224_result_type)(void *, unsigned char *); > > void (*my_sha256_type)(unsigned char*, const char*, size_t); > void (*my_sha256_multi_type)(unsigned char*, ...); > size_t (*my_sha256_context_size_type)(); > void (*my_sha256_init_type)(void *); > void (*my_sha256_input_type)(void *, const unsigned char *, size_t); > void (*my_sha256_result_type)(void *, unsigned char *); > > void (*my_sha384_type)(unsigned char*, const char*, size_t); > void (*my_sha384_multi_type)(unsigned char*, ...); > size_t (*my_sha384_context_size_type)(); > void (*my_sha384_init_type)(void *); > void (*my_sha384_input_type)(void *, const unsigned char *, size_t); > void (*my_sha384_result_type)(void *, unsigned char *); > > void (*my_sha512_type)(unsigned char*, const char*, size_t); > void (*my_sha512_multi_type)(unsigned char*, ...); > size_t (*my_sha512_context_size_type)(); > void (*my_sha512_init_type)(void *); > void (*my_sha512_input_type)(void *, const unsigned char *, size_t); > void (*my_sha512_result_type)(void *, unsigned char *); >} *my_sha2_service; ># 94 "/buildbot/mariadb-10.2.31/include/mysql/service_sha2.h" >void my_sha224(unsigned char*, const char*, size_t); >void my_sha224_multi(unsigned char*, ...); >size_t my_sha224_context_size(); >void my_sha224_init(void *context); >void my_sha224_input(void *context, const unsigned char *buf, size_t len); >void my_sha224_result(void *context, unsigned char *digest); > >void my_sha256(unsigned char*, const char*, size_t); >void my_sha256_multi(unsigned char*, ...); >size_t my_sha256_context_size(); >void my_sha256_init(void *context); >void my_sha256_input(void *context, const unsigned char *buf, size_t len); >void my_sha256_result(void *context, unsigned char *digest); > >void my_sha384(unsigned char*, const char*, size_t); >void my_sha384_multi(unsigned char*, ...); >size_t my_sha384_context_size(); >void my_sha384_init(void *context); >void my_sha384_input(void *context, const unsigned char *buf, size_t len); >void my_sha384_result(void *context, unsigned char *digest); > >void my_sha512(unsigned char*, const char*, size_t); >void my_sha512_multi(unsigned char*, ...); >size_t my_sha512_context_size(); >void my_sha512_init(void *context); >void my_sha512_input(void *context, const unsigned char *buf, size_t len); >void my_sha512_result(void *context, unsigned char *digest); > > > > >} ># 35 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_alloc.h" 1 ># 35 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_alloc.h" >extern "C" { > > >struct st_mysql_lex_string >{ > char *str; > size_t length; >}; >typedef struct st_mysql_lex_string MYSQL_LEX_STRING; > >extern struct thd_alloc_service_st { > void *(*thd_alloc_func)(THD*, size_t); > void *(*thd_calloc_func)(THD*, size_t); > char *(*thd_strdup_func)(THD*, const char *); > char *(*thd_strmake_func)(THD*, const char *, size_t); > void *(*thd_memdup_func)(THD*, const void*, size_t); > MYSQL_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_LEX_STRING *, > const char *, size_t, int); >} *thd_alloc_service; ># 87 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_alloc.h" >void *thd_alloc(THD* thd, size_t size); > > > >void *thd_calloc(THD* thd, size_t size); > > > >char *thd_strdup(THD* thd, const char *str); > > > >char *thd_strmake(THD* thd, const char *str, size_t size); > > > >void *thd_memdup(THD* thd, const void* str, size_t size); ># 118 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_alloc.h" >MYSQL_LEX_STRING *thd_make_lex_string(THD* thd, MYSQL_LEX_STRING *lex_str, > const char *str, size_t size, > int allocate_lex_string); > > > > >} ># 36 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_autoinc.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_autoinc.h" >extern "C" { > > >extern struct thd_autoinc_service_st { > void (*thd_get_autoinc_func)(const THD* thd, > unsigned long* off, unsigned long* inc); >} *thd_autoinc_service; ># 44 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_autoinc.h" >void thd_get_autoinc(const THD* thd, > unsigned long* off, unsigned long* inc); > > > >} ># 37 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_error_context.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_error_context.h" >extern "C" { > > > >extern struct thd_error_context_service_st { > const char *(*thd_get_error_message_func)(const THD* thd); > unsigned int (*thd_get_error_number_func)(const THD* thd); > unsigned long (*thd_get_error_row_func)(const THD* thd); > void (*thd_inc_error_row_func)(THD* thd); > char *(*thd_get_error_context_description_func)(THD* thd, > char *buffer, > unsigned int length, > unsigned int max_query_length); >} *thd_error_context_service; ># 61 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_error_context.h" >const char *thd_get_error_message(const THD* thd); > > > > > >unsigned int thd_get_error_number(const THD* thd); > > > > > >unsigned long thd_get_error_row(const THD* thd); > > > > >void thd_inc_error_row(THD* thd); > > > > >char *thd_get_error_context_description(THD* thd, > char *buffer, unsigned int length, > unsigned int max_query_length); > > > >} ># 38 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_rnd.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_rnd.h" >extern "C" { > > > > > > >extern struct thd_rnd_service_st { > double (*thd_rnd_ptr)(THD* thd); > void (*thd_c_r_p_ptr)(THD* thd, char *to, size_t length); >} *thd_rnd_service; > > > > > > >double thd_rnd(THD* thd); ># 53 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_rnd.h" >void thd_create_random_password(THD* thd, char *to, size_t length); > > > > >} ># 39 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_specifics.h" 1 ># 57 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_specifics.h" >extern "C" { > > >typedef int MYSQL_THD_KEY_T; > >extern struct thd_specifics_service_st { > int (*thd_key_create_func)(MYSQL_THD_KEY_T *key); > void (*thd_key_delete_func)(MYSQL_THD_KEY_T *key); > void *(*thd_getspecific_func)(THD* thd, MYSQL_THD_KEY_T key); > int (*thd_setspecific_func)(THD* thd, MYSQL_THD_KEY_T key, void *value); >} *thd_specifics_service; ># 85 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_specifics.h" >int thd_key_create(MYSQL_THD_KEY_T *key); > > > > >void thd_key_delete(MYSQL_THD_KEY_T *key); ># 99 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_specifics.h" >void* thd_getspecific(THD* thd, MYSQL_THD_KEY_T key); >int thd_setspecific(THD* thd, MYSQL_THD_KEY_T key, void *value); > > > > >} ># 40 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_timezone.h" 1 ># 41 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_timezone.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql_time.h" 1 ># 28 "/buildbot/mariadb-10.2.31/include/mysql_time.h" >typedef long my_time_t; ># 40 "/buildbot/mariadb-10.2.31/include/mysql_time.h" >enum enum_mysql_timestamp_type >{ > MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1, > MYSQL_TIMESTAMP_DATE= 0, MYSQL_TIMESTAMP_DATETIME= 1, MYSQL_TIMESTAMP_TIME= 2 >}; ># 59 "/buildbot/mariadb-10.2.31/include/mysql_time.h" >typedef struct st_mysql_time >{ > unsigned int year, month, day, hour, minute, second; > unsigned long second_part; > my_bool neg; > enum enum_mysql_timestamp_type time_type; >} MYSQL_TIME; ># 42 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_timezone.h" 2 > > >extern "C" { > > > >extern struct thd_timezone_service_st { > my_time_t (*thd_TIME_to_gmt_sec)(THD* thd, const MYSQL_TIME *ltime, unsigned int *errcode); > void (*thd_gmt_sec_to_TIME)(THD* thd, MYSQL_TIME *ltime, my_time_t t); >} *thd_timezone_service; ># 63 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_timezone.h" >my_time_t thd_TIME_to_gmt_sec(THD* thd, const MYSQL_TIME *ltime, unsigned int *errcode); >void thd_gmt_sec_to_TIME(THD* thd, MYSQL_TIME *ltime, my_time_t t); > > > > >} ># 41 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_wait.h" 1 ># 50 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_wait.h" >extern "C" { ># 66 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_wait.h" >typedef enum _thd_wait_type_e { > THD_WAIT_SLEEP= 1, > THD_WAIT_DISKIO= 2, > THD_WAIT_ROW_LOCK= 3, > THD_WAIT_GLOBAL_LOCK= 4, > THD_WAIT_META_DATA_LOCK= 5, > THD_WAIT_TABLE_LOCK= 6, > THD_WAIT_USER_LOCK= 7, > THD_WAIT_BINLOG= 8, > THD_WAIT_GROUP_COMMIT= 9, > THD_WAIT_SYNC= 10, > THD_WAIT_NET= 11, > THD_WAIT_LAST= 12 >} thd_wait_type; > >extern struct thd_wait_service_st { > void (*thd_wait_begin_func)(THD*, int); > void (*thd_wait_end_func)(THD*); >} *thd_wait_service; ># 94 "/buildbot/mariadb-10.2.31/include/mysql/service_thd_wait.h" >void thd_wait_begin(THD* thd, int wait_type); >void thd_wait_end(THD* thd); > > > > >} ># 42 "/buildbot/mariadb-10.2.31/include/mysql/services.h" 2 > > > >} ># 52 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" 2 ># 62 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_xid { > long formatID; > long gtrid_length; > long bqual_length; > char data[128]; >}; >typedef struct st_mysql_xid MYSQL_XID; ># 172 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >enum enum_mysql_show_type >{ > SHOW_UNDEF, SHOW_BOOL, SHOW_UINT, SHOW_ULONG, > SHOW_ULONGLONG, SHOW_CHAR, SHOW_CHAR_PTR, > SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE, > SHOW_SINT, SHOW_SLONG, SHOW_SLONGLONG, SHOW_SIMPLE_FUNC, > SHOW_always_last >}; > > > > > > >enum enum_var_type >{ > SHOW_OPT_DEFAULT= 0, SHOW_OPT_SESSION, SHOW_OPT_GLOBAL >}; > >struct st_mysql_show_var { > const char *name; > void *value; > enum enum_mysql_show_type type; >}; > >struct system_status_var; > > >typedef int (*mysql_show_var_func)(THD*, struct st_mysql_show_var*, void *, struct system_status_var *status_var, enum enum_var_type); ># 234 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_sys_var; >struct st_mysql_value; ># 256 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >typedef int (*mysql_var_check_func)(THD* thd, > struct st_mysql_sys_var *var, > void *save, struct st_mysql_value *value); ># 274 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >typedef void (*mysql_var_update_func)(THD* thd, > struct st_mysql_sys_var *var, > void *var_ptr, const void *save); ># 497 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_plugin >{ > int type; > void *info; > const char *name; > const char *author; > const char *descr; > int license; > int (*init)(void *); > int (*deinit)(void *); > unsigned int version; > struct st_mysql_show_var *status_vars; > struct st_mysql_sys_var **system_vars; > void * __reserved1; > unsigned long flags; >}; ># 521 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_maria_plugin >{ > int type; > void *info; > const char *name; > const char *author; > const char *descr; > int license; > int (*init)(void *); > int (*deinit)(void *); > unsigned int version; > struct st_mysql_show_var *status_vars; > struct st_mysql_sys_var **system_vars; > const char *version_info; > unsigned int maturity; >}; > > > > ># 1 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" 1 ># 19 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" 1 ># 20 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" 2 > > >extern "C" { ># 32 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" >enum enum_ftparser_mode >{ ># 42 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" > MYSQL_FTPARSER_SIMPLE_MODE= 0, ># 53 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" > MYSQL_FTPARSER_WITH_STOPWORDS= 1, ># 66 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" > MYSQL_FTPARSER_FULL_BOOLEAN_INFO= 2 >}; ># 80 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" >enum enum_ft_token_type >{ > FT_TOKEN_EOF= 0, > FT_TOKEN_WORD= 1, > FT_TOKEN_LEFT_PAREN= 2, > FT_TOKEN_RIGHT_PAREN= 3, > FT_TOKEN_STOPWORD= 4 >}; ># 120 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" >typedef struct st_mysql_ftparser_boolean_info >{ > enum enum_ft_token_type type; > int yesno; > int weight_adjust; > char wasign; > char trunc; > > char prev; > char *quot; >} MYSQL_FTPARSER_BOOLEAN_INFO; ># 182 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" >typedef struct st_mysql_ftparser_param >{ > int (*mysql_parse)(struct st_mysql_ftparser_param *, > const char *doc, int doc_len); > int (*mysql_add_word)(struct st_mysql_ftparser_param *, > const char *word, int word_len, > MYSQL_FTPARSER_BOOLEAN_INFO *boolean_info); > void *ftparser_state; > void *mysql_ftparam; > const struct charset_info_st *cs; > const char *doc; > int length; > unsigned int flags; > enum enum_ftparser_mode mode; >} MYSQL_FTPARSER_PARAM; ># 206 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" >struct st_mysql_ftparser >{ > int interface_version; > int (*parse)(MYSQL_FTPARSER_PARAM *param); > int (*init)(MYSQL_FTPARSER_PARAM *param); > int (*deinit)(MYSQL_FTPARSER_PARAM *param); >}; > > > >} ># 542 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" 2 ># 555 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_daemon >{ > int interface_version; >}; ># 573 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_information_schema >{ > int interface_version; >}; ># 592 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_storage_engine >{ > int interface_version; >}; > >struct handlerton; ># 608 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" > struct Mysql_replication { > int interface_version; > }; ># 626 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >struct st_mysql_value >{ > int (*value_type)(struct st_mysql_value *); > const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length); > int (*val_real)(struct st_mysql_value *, double *realbuf); > int (*val_int)(struct st_mysql_value *, long long *intbuf); > int (*is_unsigned)(struct st_mysql_value *); >}; > > > > > > > >extern "C" { > > >int thd_in_lock_tables(const THD* thd); >int thd_tablespace_op(const THD* thd); >long long thd_test_options(const THD* thd, long long test_options); >int thd_sql_command(const THD* thd); >void **thd_ha_data(const THD* thd, const struct handlerton *hton); >void thd_storage_lock_wait(THD* thd, long long value); >int thd_tx_isolation(const THD* thd); >int thd_tx_is_read_only(const THD* thd); >int thd_rpl_is_parallel(const THD* thd); ># 665 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >int mysql_tmpfile(const char *prefix); > > > > > > > >unsigned long thd_get_thread_id(const THD* thd); > > > > > > > >void thd_get_xid(const THD* thd, MYSQL_XID *xid); ># 691 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >void mysql_query_cache_invalidate4(THD* thd, > const char *key, unsigned int key_length, > int using_trx); > > > > > >void *thd_get_ha_data(const THD* thd, const struct handlerton *hton); ># 723 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >void thd_set_ha_data(THD* thd, const struct handlerton *hton, > const void *ha_data); ># 758 "/buildbot/mariadb-10.2.31/include/mysql/plugin.h" >void thd_wakeup_subsequent_commits(THD* thd, int wakeup_error); > > >} ># 1013 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > >typedef ulong myf; ># 1041 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_dbug.h" 1 ># 21 "/buildbot/mariadb-10.2.31/include/my_dbug.h" ># 1 "/usr/include/signal.h" 1 3 4 ># 30 "/usr/include/signal.h" 3 4 >extern "C" { > ># 1 "/usr/include/bits/sigset.h" 1 3 4 ># 103 "/usr/include/bits/sigset.h" 3 4 >extern int __sigismember (const __sigset_t *, int); >extern int __sigaddset (__sigset_t *, int); >extern int __sigdelset (__sigset_t *, int); ># 117 "/usr/include/bits/sigset.h" 3 4 >extern __inline __attribute__ ((__gnu_inline__)) int __sigismember (const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; } >extern __inline __attribute__ ((__gnu_inline__)) int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); } >extern __inline __attribute__ ((__gnu_inline__)) int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); } ># 33 "/usr/include/signal.h" 2 3 4 > > > > > > > >typedef __sig_atomic_t sig_atomic_t; ># 57 "/usr/include/signal.h" 3 4 ># 1 "/usr/include/bits/signum.h" 1 3 4 ># 58 "/usr/include/signal.h" 2 3 4 ># 80 "/usr/include/signal.h" 3 4 ># 1 "/usr/include/bits/siginfo.h" 1 3 4 ># 24 "/usr/include/bits/siginfo.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 25 "/usr/include/bits/siginfo.h" 2 3 4 > > > > > > > >typedef union sigval > { > int sival_int; > void *sival_ptr; > } sigval_t; ># 50 "/usr/include/bits/siginfo.h" 3 4 >typedef struct > { > int si_signo; > int si_errno; > > int si_code; > > union > { > int _pad[((128 / sizeof (int)) - 4)]; > > > struct > { > __pid_t si_pid; > __uid_t si_uid; > } _kill; > > > struct > { > int si_tid; > int si_overrun; > sigval_t si_sigval; > } _timer; > > > struct > { > __pid_t si_pid; > __uid_t si_uid; > sigval_t si_sigval; > } _rt; > > > struct > { > __pid_t si_pid; > __uid_t si_uid; > int si_status; > __clock_t si_utime; > __clock_t si_stime; > } _sigchld; > > > struct > { > void *si_addr; > } _sigfault; > > > struct > { > long int si_band; > int si_fd; > } _sigpoll; > > > struct > { > void *_call_addr; > int _syscall; > unsigned int _arch; > } _sigsys; > } _sifields; > } siginfo_t; ># 139 "/usr/include/bits/siginfo.h" 3 4 >enum >{ > SI_ASYNCNL = -60, > > SI_TKILL = -6, > > SI_SIGIO, > > SI_ASYNCIO, > > SI_MESGQ, > > SI_TIMER, > > SI_QUEUE, > > SI_USER, > > SI_KERNEL = 0x80 > >}; > > > >enum >{ > ILL_ILLOPC = 1, > > ILL_ILLOPN, > > ILL_ILLADR, > > ILL_ILLTRP, > > ILL_PRVOPC, > > ILL_PRVREG, > > ILL_COPROC, > > ILL_BADSTK > >}; > > >enum >{ > FPE_INTDIV = 1, > > FPE_INTOVF, > > FPE_FLTDIV, > > FPE_FLTOVF, > > FPE_FLTUND, > > FPE_FLTRES, > > FPE_FLTINV, > > FPE_FLTSUB > >}; > > >enum >{ > SEGV_MAPERR = 1, > > SEGV_ACCERR > >}; > > >enum >{ > BUS_ADRALN = 1, > > BUS_ADRERR, > > BUS_OBJERR > >}; > > >enum >{ > TRAP_BRKPT = 1, > > TRAP_TRACE > >}; > > >enum >{ > CLD_EXITED = 1, > > CLD_KILLED, > > CLD_DUMPED, > > CLD_TRAPPED, > > CLD_STOPPED, > > CLD_CONTINUED > >}; > > >enum >{ > POLL_IN = 1, > > POLL_OUT, > > POLL_MSG, > > POLL_ERR, > > POLL_PRI, > > POLL_HUP > >}; ># 285 "/usr/include/bits/siginfo.h" 3 4 >typedef union pthread_attr_t pthread_attr_t; > > > >typedef struct sigevent > { > sigval_t sigev_value; > int sigev_signo; > int sigev_notify; > > union > { > int _pad[((64 / sizeof (int)) - 4)]; > > > > __pid_t _tid; > > struct > { > void (*_function) (sigval_t); > pthread_attr_t *_attribute; > } _sigev_thread; > } _sigev_un; > } sigevent_t; > > > > > > >enum >{ > SIGEV_SIGNAL = 0, > > SIGEV_NONE, > > SIGEV_THREAD, > > > SIGEV_THREAD_ID = 4 > >}; ># 81 "/usr/include/signal.h" 2 3 4 > > > > >typedef void (*__sighandler_t) (int); > > > > >extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) > throw (); > >extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) > throw (); > > > > > > > >extern __sighandler_t signal (int __sig, __sighandler_t __handler) > throw (); ># 114 "/usr/include/signal.h" 3 4 > > > > > >extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) > throw (); > > > > > > >extern int kill (__pid_t __pid, int __sig) throw (); > > > > > > >extern int killpg (__pid_t __pgrp, int __sig) throw (); > > > > >extern int raise (int __sig) throw (); > > > > >extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) > throw (); >extern int gsignal (int __sig) throw (); > > > > >extern void psignal (int __sig, const char *__s); > > > > >extern void psiginfo (const siginfo_t *__pinfo, const char *__s); ># 169 "/usr/include/signal.h" 3 4 >extern int __sigpause (int __sig_or_mask, int __is_sig); ># 178 "/usr/include/signal.h" 3 4 >extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); ># 197 "/usr/include/signal.h" 3 4 >extern int sigblock (int __mask) throw () __attribute__ ((__deprecated__)); > > >extern int sigsetmask (int __mask) throw () __attribute__ ((__deprecated__)); > > >extern int siggetmask (void) throw () __attribute__ ((__deprecated__)); ># 212 "/usr/include/signal.h" 3 4 >typedef __sighandler_t sighandler_t; > > > > >typedef __sighandler_t sig_t; > > > > > >extern int sigemptyset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigfillset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigaddset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigdelset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigismember (const sigset_t *__set, int __signo) > throw () __attribute__ ((__nonnull__ (1))); > > > >extern int sigisemptyset (const sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > >extern int sigandset (sigset_t *__set, const sigset_t *__left, > const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); > > >extern int sigorset (sigset_t *__set, const sigset_t *__left, > const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3))); > > > > ># 1 "/usr/include/bits/sigaction.h" 1 3 4 ># 24 "/usr/include/bits/sigaction.h" 3 4 >struct sigaction > { > > > union > { > > __sighandler_t sa_handler; > > void (*sa_sigaction) (int, siginfo_t *, void *); > } > __sigaction_handler; > > > > > > > > __sigset_t sa_mask; > > > int sa_flags; > > > void (*sa_restorer) (void); > }; ># 254 "/usr/include/signal.h" 2 3 4 > > >extern int sigprocmask (int __how, const sigset_t *__restrict __set, > sigset_t *__restrict __oset) throw (); > > > > > > >extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); > > >extern int sigaction (int __sig, const struct sigaction *__restrict __act, > struct sigaction *__restrict __oact) throw (); > > >extern int sigpending (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1))); > > > > > > >extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) > __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern int sigwaitinfo (const sigset_t *__restrict __set, > siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); > > > > > > >extern int sigtimedwait (const sigset_t *__restrict __set, > siginfo_t *__restrict __info, > const struct timespec *__restrict __timeout) > __attribute__ ((__nonnull__ (1))); > > > >extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) > throw (); ># 311 "/usr/include/signal.h" 3 4 >extern const char *const _sys_siglist[65]; >extern const char *const sys_siglist[65]; > > >struct sigvec > { > __sighandler_t sv_handler; > int sv_mask; > > int sv_flags; > > }; ># 335 "/usr/include/signal.h" 3 4 >extern int sigvec (int __sig, const struct sigvec *__vec, > struct sigvec *__ovec) throw (); > > > ># 1 "/usr/include/bits/sigcontext.h" 1 3 4 ># 27 "/usr/include/bits/sigcontext.h" 3 4 ># 1 "/usr/include/asm/sigcontext.h" 1 3 4 ># 20 "/usr/include/asm/sigcontext.h" 3 4 ># 1 "/usr/include/linux/types.h" 1 3 4 > > > > ># 1 "/usr/include/asm/types.h" 1 3 4 ># 1 "/usr/include/asm-generic/types.h" 1 3 4 > > > > > > ># 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4 ># 12 "/usr/include/asm-generic/int-ll64.h" 3 4 ># 1 "/usr/include/asm/bitsperlong.h" 1 3 4 ># 22 "/usr/include/asm/bitsperlong.h" 3 4 ># 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4 ># 23 "/usr/include/asm/bitsperlong.h" 2 3 4 ># 13 "/usr/include/asm-generic/int-ll64.h" 2 3 4 > > > > > > > >typedef __signed__ char __s8; >typedef unsigned char __u8; > >typedef __signed__ short __s16; >typedef unsigned short __u16; > >typedef __signed__ int __s32; >typedef unsigned int __u32; > > >__extension__ typedef __signed__ long long __s64; >__extension__ typedef unsigned long long __u64; ># 8 "/usr/include/asm-generic/types.h" 2 3 4 ># 1 "/usr/include/asm/types.h" 2 3 4 ># 6 "/usr/include/linux/types.h" 2 3 4 > > > ># 1 "/usr/include/linux/posix_types.h" 1 3 4 > > > > ># 1 "/usr/include/linux/stddef.h" 1 3 4 ># 6 "/usr/include/linux/posix_types.h" 2 3 4 ># 25 "/usr/include/linux/posix_types.h" 3 4 >typedef struct { > unsigned long fds_bits[1024 / (8 * sizeof(long))]; >} __kernel_fd_set; > > >typedef void (*__kernel_sighandler_t)(int); > > >typedef int __kernel_key_t; >typedef int __kernel_mqd_t; > ># 1 "/usr/include/asm/posix_types.h" 1 3 4 > > > > >typedef unsigned short __kernel_old_uid_t; >typedef unsigned short __kernel_old_gid_t; > > ># 1 "/usr/include/asm-generic/posix_types.h" 1 3 4 ># 15 "/usr/include/asm-generic/posix_types.h" 3 4 >typedef long __kernel_long_t; >typedef unsigned long __kernel_ulong_t; > > > >typedef __kernel_ulong_t __kernel_ino_t; > > > >typedef unsigned int __kernel_mode_t; > > > >typedef int __kernel_pid_t; > > > >typedef int __kernel_ipc_pid_t; > > > >typedef unsigned int __kernel_uid_t; >typedef unsigned int __kernel_gid_t; > > > >typedef __kernel_long_t __kernel_suseconds_t; > > > >typedef int __kernel_daddr_t; > > > >typedef unsigned int __kernel_uid32_t; >typedef unsigned int __kernel_gid32_t; ># 59 "/usr/include/asm-generic/posix_types.h" 3 4 >typedef unsigned int __kernel_old_dev_t; ># 72 "/usr/include/asm-generic/posix_types.h" 3 4 >typedef __kernel_ulong_t __kernel_size_t; >typedef __kernel_long_t __kernel_ssize_t; >typedef __kernel_long_t __kernel_ptrdiff_t; > > > > >typedef struct { > int val[2]; >} __kernel_fsid_t; > > > > > >typedef __kernel_long_t __kernel_off_t; >typedef long long __kernel_loff_t; >typedef __kernel_long_t __kernel_time_t; >typedef __kernel_long_t __kernel_clock_t; >typedef int __kernel_timer_t; >typedef int __kernel_clockid_t; >typedef char * __kernel_caddr_t; >typedef unsigned short __kernel_uid16_t; >typedef unsigned short __kernel_gid16_t; ># 10 "/usr/include/asm/posix_types.h" 2 3 4 ># 37 "/usr/include/linux/posix_types.h" 2 3 4 ># 10 "/usr/include/linux/types.h" 2 3 4 ># 24 "/usr/include/linux/types.h" 3 4 >typedef __u16 __le16; >typedef __u16 __be16; >typedef __u32 __le32; >typedef __u32 __be32; >typedef __u64 __le64; >typedef __u64 __be64; > >typedef __u16 __sum16; >typedef __u32 __wsum; ># 21 "/usr/include/asm/sigcontext.h" 2 3 4 > > > > > >struct sigcontext { > __u64 fault_address; > > __u64 regs[31]; > __u64 sp; > __u64 pc; > __u64 pstate; > > __u8 __reserved[4096] __attribute__((__aligned__(16))); >}; ># 63 "/usr/include/asm/sigcontext.h" 3 4 >struct _aarch64_ctx { > __u32 magic; > __u32 size; >}; > > > >struct fpsimd_context { > struct _aarch64_ctx head; > __u32 fpsr; > __u32 fpcr; > __uint128_t vregs[32]; >}; > > > > >struct esr_context { > struct _aarch64_ctx head; > __u64 esr; >}; ># 113 "/usr/include/asm/sigcontext.h" 3 4 >struct extra_context { > struct _aarch64_ctx head; > __u64 datap; > __u32 size; > __u32 __reserved[3]; >}; ># 28 "/usr/include/bits/sigcontext.h" 2 3 4 > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 32 "/usr/include/bits/sigcontext.h" 2 3 4 ># 341 "/usr/include/signal.h" 2 3 4 > > >extern int sigreturn (struct sigcontext *__scp) throw (); > > > > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 351 "/usr/include/signal.h" 2 3 4 > > > > >extern int siginterrupt (int __sig, int __interrupt) throw (); > ># 1 "/usr/include/bits/sigstack.h" 1 3 4 ># 25 "/usr/include/bits/sigstack.h" 3 4 >struct sigstack > { > void *ss_sp; > int ss_onstack; > }; > > > >enum >{ > SS_ONSTACK = 1, > > SS_DISABLE > >}; ># 49 "/usr/include/bits/sigstack.h" 3 4 >typedef struct sigaltstack > { > void *ss_sp; > int ss_flags; > size_t ss_size; > } stack_t; ># 358 "/usr/include/signal.h" 2 3 4 > > ># 1 "/usr/include/sys/ucontext.h" 1 3 4 ># 25 "/usr/include/sys/ucontext.h" 3 4 ># 1 "/usr/include/signal.h" 1 3 4 ># 26 "/usr/include/sys/ucontext.h" 2 3 4 ># 1 "/usr/include/sys/procfs.h" 1 3 4 ># 34 "/usr/include/sys/procfs.h" 3 4 ># 1 "/usr/include/sys/user.h" 1 3 4 ># 25 "/usr/include/sys/user.h" 3 4 ># 1 "/usr/include/asm/ptrace.h" 1 3 4 ># 25 "/usr/include/asm/ptrace.h" 3 4 ># 1 "/usr/include/asm/hwcap.h" 1 3 4 ># 26 "/usr/include/asm/ptrace.h" 2 3 4 ># 70 "/usr/include/asm/ptrace.h" 3 4 >struct user_pt_regs { > __u64 regs[31]; > __u64 sp; > __u64 pc; > __u64 pstate; >}; > >struct user_fpsimd_state { > __uint128_t vregs[32]; > __u32 fpsr; > __u32 fpcr; > __u32 __reserved[2]; >}; > >struct user_hwdebug_state { > __u32 dbg_info; > __u32 pad; > struct { > __u64 addr; > __u32 ctrl; > __u32 pad; > } dbg_regs[16]; >}; ># 26 "/usr/include/sys/user.h" 2 3 4 ># 35 "/usr/include/sys/procfs.h" 2 3 4 ># 47 "/usr/include/sys/procfs.h" 3 4 >extern "C" { > > >typedef unsigned long elf_greg_t; > > > > > > >typedef elf_greg_t elf_gregset_t[(sizeof (struct user_pt_regs) / sizeof(elf_greg_t))]; > > >typedef struct user_fpsimd_state elf_fpregset_t; > > >struct elf_siginfo > { > int si_signo; > int si_code; > int si_errno; > }; ># 77 "/usr/include/sys/procfs.h" 3 4 >struct elf_prstatus > { > struct elf_siginfo pr_info; > short int pr_cursig; > unsigned long int pr_sigpend; > unsigned long int pr_sighold; > __pid_t pr_pid; > __pid_t pr_ppid; > __pid_t pr_pgrp; > __pid_t pr_sid; > struct timeval pr_utime; > struct timeval pr_stime; > struct timeval pr_cutime; > struct timeval pr_cstime; > elf_gregset_t pr_reg; > int pr_fpvalid; > }; > > > > >struct elf_prpsinfo > { > char pr_state; > char pr_sname; > char pr_zomb; > char pr_nice; > unsigned long int pr_flag; > unsigned int pr_uid; > unsigned int pr_gid; > int pr_pid, pr_ppid, pr_pgrp, pr_sid; > > char pr_fname[16]; > char pr_psargs[(80)]; > }; > > > > > > >typedef void *psaddr_t; > > >typedef elf_gregset_t prgregset_t; >typedef elf_fpregset_t prfpregset_t; > > > >typedef __pid_t lwpid_t; > > >typedef struct elf_prstatus prstatus_t; >typedef struct elf_prpsinfo prpsinfo_t; > >} ># 27 "/usr/include/sys/ucontext.h" 2 3 4 > > > ># 1 "/usr/include/bits/sigcontext.h" 1 3 4 ># 31 "/usr/include/sys/ucontext.h" 2 3 4 > >typedef elf_greg_t greg_t; > > >typedef elf_gregset_t gregset_t; > > >typedef elf_fpregset_t fpregset_t; > > > > > >typedef struct sigcontext mcontext_t; > > >typedef struct ucontext > { > unsigned long uc_flags; > struct ucontext *uc_link; > stack_t uc_stack; > __sigset_t uc_sigmask; > mcontext_t uc_mcontext; > } ucontext_t; ># 361 "/usr/include/signal.h" 2 3 4 > > > > > >extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) > throw () __attribute__ ((__deprecated__)); > > > >extern int sigaltstack (const struct sigaltstack *__restrict __ss, > struct sigaltstack *__restrict __oss) throw (); > > > > > > > >extern int sighold (int __sig) throw (); > > >extern int sigrelse (int __sig) throw (); > > >extern int sigignore (int __sig) throw (); > > >extern __sighandler_t sigset (int __sig, __sighandler_t __disp) throw (); > > > > > > ># 1 "/usr/include/bits/sigthread.h" 1 3 4 ># 30 "/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 (); > > > >extern int pthread_sigqueue (pthread_t __threadid, int __signo, > const union sigval __value) throw (); ># 397 "/usr/include/signal.h" 2 3 4 > > > > > > >extern int __libc_current_sigrtmin (void) throw (); > >extern int __libc_current_sigrtmax (void) throw (); > > > >} ># 22 "/buildbot/mariadb-10.2.31/include/my_dbug.h" 2 > > > >extern "C" { ># 197 "/buildbot/mariadb-10.2.31/include/my_dbug.h" >} ># 1042 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 > > > > > > > ># 1 "/buildbot/mariadb-10.2.31/include/my_byteorder.h" 1 ># 40 "/buildbot/mariadb-10.2.31/include/my_byteorder.h" ># 1 "/buildbot/mariadb-10.2.31/include/byte_order_generic.h" 1 ># 41 "/buildbot/mariadb-10.2.31/include/my_byteorder.h" 2 ># 51 "/buildbot/mariadb-10.2.31/include/my_byteorder.h" ># 1 "/buildbot/mariadb-10.2.31/include/little_endian.h" 1 ># 52 "/buildbot/mariadb-10.2.31/include/my_byteorder.h" 2 ># 1050 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 1078 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/dlfcn.h" 1 3 4 ># 25 "/usr/include/dlfcn.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 26 "/usr/include/dlfcn.h" 2 3 4 > > ># 1 "/usr/include/bits/dlfcn.h" 1 3 4 ># 57 "/usr/include/bits/dlfcn.h" 3 4 >extern "C" { > > >extern void _dl_mcount_wrapper_check (void *__selfpc) throw (); > >} ># 29 "/usr/include/dlfcn.h" 2 3 4 ># 45 "/usr/include/dlfcn.h" 3 4 >typedef long int Lmid_t; > > > > > > > >extern "C" { > > > >extern void *dlopen (const char *__file, int __mode) throw (); > > > >extern int dlclose (void *__handle) throw () __attribute__ ((__nonnull__ (1))); > > > >extern void *dlsym (void *__restrict __handle, > const char *__restrict __name) throw () __attribute__ ((__nonnull__ (2))); > > > >extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) throw (); > > > >extern void *dlvsym (void *__restrict __handle, > const char *__restrict __name, > const char *__restrict __version) > throw () __attribute__ ((__nonnull__ (2, 3))); > > > > > >extern char *dlerror (void) throw (); > > > > > >typedef struct >{ > const char *dli_fname; > void *dli_fbase; > const char *dli_sname; > void *dli_saddr; >} Dl_info; > > > >extern int dladdr (const void *__address, Dl_info *__info) > throw () __attribute__ ((__nonnull__ (2))); > > >extern int dladdr1 (const void *__address, Dl_info *__info, > void **__extra_info, int __flags) throw () __attribute__ ((__nonnull__ (2))); > > > > >enum > { > > RTLD_DL_SYMENT = 1, > > > RTLD_DL_LINKMAP = 2 > }; > > > > > > > >extern int dlinfo (void *__restrict __handle, > int __request, void *__restrict __arg) > throw () __attribute__ ((__nonnull__ (1, 3))); > > >enum > { > > RTLD_DI_LMID = 1, > > > > RTLD_DI_LINKMAP = 2, > > RTLD_DI_CONFIGADDR = 3, > > > > > > > RTLD_DI_SERINFO = 4, > RTLD_DI_SERINFOSIZE = 5, > > > > RTLD_DI_ORIGIN = 6, > > RTLD_DI_PROFILENAME = 7, > RTLD_DI_PROFILEOUT = 8, > > > > > RTLD_DI_TLS_MODID = 9, > > > > > > RTLD_DI_TLS_DATA = 10, > > RTLD_DI_MAX = 10 > }; > > > > >typedef struct >{ > char *dls_name; > unsigned int dls_flags; >} Dl_serpath; > > > >typedef struct >{ > size_t dls_size; > unsigned int dls_cnt; > Dl_serpath dls_serpath[1]; >} Dl_serinfo; > > > >} ># 1079 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 1104 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/c++/4.8.2/new" 1 3 ># 37 "/usr/include/c++/4.8.2/new" 3 ># 38 "/usr/include/c++/4.8.2/new" 3 > > ># 1 "/usr/include/c++/4.8.2/exception" 1 3 ># 33 "/usr/include/c++/4.8.2/exception" 3 ># 34 "/usr/include/c++/4.8.2/exception" 3 > >#pragma GCC visibility push(default) > > ># 1 "/usr/include/c++/4.8.2/bits/atomic_lockfree_defines.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/atomic_lockfree_defines.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/atomic_lockfree_defines.h" 3 ># 39 "/usr/include/c++/4.8.2/exception" 2 3 > >extern "C++" { > >namespace std >{ ># 60 "/usr/include/c++/4.8.2/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() throw() __attribute__ ((__noreturn__)); > > > unexpected_handler set_unexpected(unexpected_handler) throw(); > > > > void unexpected() __attribute__ ((__noreturn__)); ># 117 "/usr/include/c++/4.8.2/exception" 3 > bool uncaught_exception() throw() __attribute__ ((__pure__)); > > >} > >namespace __gnu_cxx >{ ># 142 "/usr/include/c++/4.8.2/exception" 3 > void __verbose_terminate_handler(); > > >} > >} > >#pragma GCC visibility pop ># 41 "/usr/include/c++/4.8.2/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(); >} ># 91 "/usr/include/c++/4.8.2/new" 3 >void* operator new(std::size_t) throw(std::bad_alloc) > __attribute__((__externally_visible__)); >void* operator new[](std::size_t) throw(std::bad_alloc) > __attribute__((__externally_visible__)); >void operator delete(void*) throw() > __attribute__((__externally_visible__)); >void operator delete[](void*) throw() > __attribute__((__externally_visible__)); >void* operator new(std::size_t, const std::nothrow_t&) throw() > __attribute__((__externally_visible__)); >void* operator new[](std::size_t, const std::nothrow_t&) throw() > __attribute__((__externally_visible__)); >void operator delete(void*, const std::nothrow_t&) throw() > __attribute__((__externally_visible__)); >void operator delete[](void*, const std::nothrow_t&) throw() > __attribute__((__externally_visible__)); > > >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 ># 1105 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 1114 "/buildbot/mariadb-10.2.31/include/my_global.h" ># 1 "/usr/include/c++/4.8.2/limits" 1 3 ># 40 "/usr/include/c++/4.8.2/limits" 3 ># 41 "/usr/include/c++/4.8.2/limits" 3 ># 147 "/usr/include/c++/4.8.2/limits" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > > > > enum float_round_style > { > round_indeterminate = -1, > round_toward_zero = 0, > round_to_nearest = 1, > round_toward_infinity = 2, > round_toward_neg_infinity = 3 > }; > > > > > > > > enum float_denorm_style > { > > denorm_indeterminate = -1, > > denorm_absent = 0, > > denorm_present = 1 > }; ># 191 "/usr/include/c++/4.8.2/limits" 3 > struct __numeric_limits_base > { > > > static const bool is_specialized = false; > > > > > static const int digits = 0; > > > static const int digits10 = 0; ># 212 "/usr/include/c++/4.8.2/limits" 3 > static const bool is_signed = false; > > > static const bool is_integer = false; > > > > > static const bool is_exact = false; > > > > static const int radix = 0; > > > > static const int min_exponent = 0; > > > > static const int min_exponent10 = 0; > > > > > static const int max_exponent = 0; > > > > static const int max_exponent10 = 0; > > > static const bool has_infinity = false; > > > > static const bool has_quiet_NaN = false; > > > > static const bool has_signaling_NaN = false; > > > static const float_denorm_style has_denorm = denorm_absent; > > > > static const bool has_denorm_loss = false; > > > > static const bool is_iec559 = false; > > > > > static const bool is_bounded = false; ># 277 "/usr/include/c++/4.8.2/limits" 3 > static const bool is_modulo = false; > > > static const bool traps = false; > > > static const bool tinyness_before = false; > > > > > static const float_round_style round_style = > round_toward_zero; > }; ># 303 "/usr/include/c++/4.8.2/limits" 3 > template<typename _Tp> > struct numeric_limits : public __numeric_limits_base > { > > > static _Tp > min() throw() { return _Tp(); } > > > static _Tp > max() throw() { return _Tp(); } ># 324 "/usr/include/c++/4.8.2/limits" 3 > static _Tp > epsilon() throw() { return _Tp(); } > > > static _Tp > round_error() throw() { return _Tp(); } > > > static _Tp > infinity() throw() { return _Tp(); } > > > > static _Tp > quiet_NaN() throw() { return _Tp(); } > > > > static _Tp > signaling_NaN() throw() { return _Tp(); } > > > > > static _Tp > denorm_min() throw() { return _Tp(); } > }; ># 370 "/usr/include/c++/4.8.2/limits" 3 > template<> > struct numeric_limits<bool> > { > static const bool is_specialized = true; > > static bool > min() throw() { return false; } > > static bool > max() throw() { return true; } > > > > > > static const int digits = 1; > static const int digits10 = 0; > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static bool > epsilon() throw() { return false; } > > static bool > round_error() throw() { return false; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static bool > infinity() throw() { return false; } > > static bool > quiet_NaN() throw() { return false; } > > static bool > signaling_NaN() throw() { return false; } > > static bool > denorm_min() throw() { return false; } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > > > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<char> > { > static const bool is_specialized = true; > > static char > min() throw() { return (((char)(-1) < 0) ? -(((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0) - 1 : (char)0); } > > static char > max() throw() { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } > > > > > > > static const int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); > static const int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = ((char)(-1) < 0); > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static char > epsilon() throw() { return 0; } > > static char > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static > char infinity() throw() { return char(); } > > static char > quiet_NaN() throw() { return char(); } > > static char > signaling_NaN() throw() { return char(); } > > static char > denorm_min() throw() { return static_cast<char>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = !is_signed; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<signed char> > { > static const bool is_specialized = true; > > static signed char > min() throw() { return -127 - 1; } > > static signed char > max() throw() { return 127; } > > > > > > > static const int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); > static const int digits10 > = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static signed char > epsilon() throw() { return 0; } > > static signed char > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static signed char > infinity() throw() { return static_cast<signed char>(0); } > > static signed char > quiet_NaN() throw() { return static_cast<signed char>(0); } > > static signed char > signaling_NaN() throw() > { return static_cast<signed char>(0); } > > static signed char > denorm_min() throw() > { return static_cast<signed char>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<unsigned char> > { > static const bool is_specialized = true; > > static unsigned char > min() throw() { return 0; } > > static unsigned char > max() throw() { return 127 * 2U + 1; } > > > > > > > static const int digits > = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); > static const int digits10 > = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static unsigned char > epsilon() throw() { return 0; } > > static unsigned char > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned char > infinity() throw() > { return static_cast<unsigned char>(0); } > > static unsigned char > quiet_NaN() throw() > { return static_cast<unsigned char>(0); } > > static unsigned char > signaling_NaN() throw() > { return static_cast<unsigned char>(0); } > > static unsigned char > denorm_min() throw() > { return static_cast<unsigned char>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<wchar_t> > { > static const bool is_specialized = true; > > static wchar_t > min() throw() { return (((wchar_t)(-1) < 0) ? -(((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0) - 1 : (wchar_t)0); } > > static wchar_t > max() throw() { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); } > > > > > > > static const int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); > static const int digits10 > = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = ((wchar_t)(-1) < 0); > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static wchar_t > epsilon() throw() { return 0; } > > static wchar_t > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static wchar_t > infinity() throw() { return wchar_t(); } > > static wchar_t > quiet_NaN() throw() { return wchar_t(); } > > static wchar_t > signaling_NaN() throw() { return wchar_t(); } > > static wchar_t > denorm_min() throw() { return wchar_t(); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = !is_signed; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; ># 841 "/usr/include/c++/4.8.2/limits" 3 > template<> > struct numeric_limits<short> > { > static const bool is_specialized = true; > > static short > min() throw() { return -32767 - 1; } > > static short > max() throw() { return 32767; } > > > > > > > static const int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); > static const int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static short > epsilon() throw() { return 0; } > > static short > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static short > infinity() throw() { return short(); } > > static short > quiet_NaN() throw() { return short(); } > > static short > signaling_NaN() throw() { return short(); } > > static short > denorm_min() throw() { return short(); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<unsigned short> > { > static const bool is_specialized = true; > > static unsigned short > min() throw() { return 0; } > > static unsigned short > max() throw() { return 32767 * 2U + 1; } > > > > > > > static const int digits > = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); > static const int digits10 > = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static unsigned short > epsilon() throw() { return 0; } > > static unsigned short > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned short > infinity() throw() > { return static_cast<unsigned short>(0); } > > static unsigned short > quiet_NaN() throw() > { return static_cast<unsigned short>(0); } > > static unsigned short > signaling_NaN() throw() > { return static_cast<unsigned short>(0); } > > static unsigned short > denorm_min() throw() > { return static_cast<unsigned short>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<int> > { > static const bool is_specialized = true; > > static int > min() throw() { return -2147483647 - 1; } > > static int > max() throw() { return 2147483647; } > > > > > > > static const int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); > static const int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static int > epsilon() throw() { return 0; } > > static int > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static int > infinity() throw() { return static_cast<int>(0); } > > static int > quiet_NaN() throw() { return static_cast<int>(0); } > > static int > signaling_NaN() throw() { return static_cast<int>(0); } > > static int > denorm_min() throw() { return static_cast<int>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<unsigned int> > { > static const bool is_specialized = true; > > static unsigned int > min() throw() { return 0; } > > static unsigned int > max() throw() { return 2147483647 * 2U + 1; } > > > > > > > static const int digits > = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); > static const int digits10 > = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static unsigned int > epsilon() throw() { return 0; } > > static unsigned int > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned int > infinity() throw() { return static_cast<unsigned int>(0); } > > static unsigned int > quiet_NaN() throw() > { return static_cast<unsigned int>(0); } > > static unsigned int > signaling_NaN() throw() > { return static_cast<unsigned int>(0); } > > static unsigned int > denorm_min() throw() > { return static_cast<unsigned int>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<long> > { > static const bool is_specialized = true; > > static long > min() throw() { return -9223372036854775807L - 1; } > > static long > max() throw() { return 9223372036854775807L; } > > > > > > > static const int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); > static const int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static long > epsilon() throw() { return 0; } > > static long > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static long > infinity() throw() { return static_cast<long>(0); } > > static long > quiet_NaN() throw() { return static_cast<long>(0); } > > static long > signaling_NaN() throw() { return static_cast<long>(0); } > > static long > denorm_min() throw() { return static_cast<long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<unsigned long> > { > static const bool is_specialized = true; > > static unsigned long > min() throw() { return 0; } > > static unsigned long > max() throw() { return 9223372036854775807L * 2UL + 1; } > > > > > > > static const int digits > = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); > static const int digits10 > = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static unsigned long > epsilon() throw() { return 0; } > > static unsigned long > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned long > infinity() throw() > { return static_cast<unsigned long>(0); } > > static unsigned long > quiet_NaN() throw() > { return static_cast<unsigned long>(0); } > > static unsigned long > signaling_NaN() throw() > { return static_cast<unsigned long>(0); } > > static unsigned long > denorm_min() throw() > { return static_cast<unsigned long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<long long> > { > static const bool is_specialized = true; > > static long long > min() throw() { return -9223372036854775807LL - 1; } > > static long long > max() throw() { return 9223372036854775807LL; } > > > > > > > static const int digits > = (sizeof(long long) * 8 - ((long long)(-1) < 0)); > static const int digits10 > = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static long long > epsilon() throw() { return 0; } > > static long long > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static long long > infinity() throw() { return static_cast<long long>(0); } > > static long long > quiet_NaN() throw() { return static_cast<long long>(0); } > > static long long > signaling_NaN() throw() > { return static_cast<long long>(0); } > > static long long > denorm_min() throw() { return static_cast<long long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<unsigned long long> > { > static const bool is_specialized = true; > > static unsigned long long > min() throw() { return 0; } > > static unsigned long long > max() throw() { return 9223372036854775807LL * 2ULL + 1; } > > > > > > > static const int digits > = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); > static const int digits10 > = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static unsigned long long > epsilon() throw() { return 0; } > > static unsigned long long > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned long long > infinity() throw() > { return static_cast<unsigned long long>(0); } > > static unsigned long long > quiet_NaN() throw() > { return static_cast<unsigned long long>(0); } > > static unsigned long long > signaling_NaN() throw() > { return static_cast<unsigned long long>(0); } > > static unsigned long long > denorm_min() throw() > { return static_cast<unsigned long long>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > > template<> > struct numeric_limits<__int128> > { > static const bool is_specialized = true; > > static __int128 > min() throw() { return (((__int128)(-1) < 0) ? -(((__int128)(-1) < 0) ? (((((__int128)1 << ((sizeof(__int128) * 8 - ((__int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(__int128)0) - 1 : (__int128)0); } > > static __int128 > max() throw() { return (((__int128)(-1) < 0) ? (((((__int128)1 << ((sizeof(__int128) * 8 - ((__int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(__int128)0); } > > > > > > > static const int digits > = (sizeof(__int128) * 8 - ((__int128)(-1) < 0)); > static const int digits10 > = ((sizeof(__int128) * 8 - ((__int128)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = true; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static __int128 > epsilon() throw() { return 0; } > > static __int128 > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static __int128 > infinity() throw() > { return static_cast<__int128>(0); } > > static __int128 > quiet_NaN() throw() > { return static_cast<__int128>(0); } > > static __int128 > signaling_NaN() throw() > { return static_cast<__int128>(0); } > > static __int128 > denorm_min() throw() > { return static_cast<__int128>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps > = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > template<> > struct numeric_limits<unsigned __int128> > { > static const bool is_specialized = true; > > static unsigned __int128 > min() throw() { return 0; } > > static unsigned __int128 > max() throw() { return (((unsigned __int128)(-1) < 0) ? (((((unsigned __int128)1 << ((sizeof(unsigned __int128) * 8 - ((unsigned __int128)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(unsigned __int128)0); } > > > > > > > static const int digits > = (sizeof(unsigned __int128) * 8 - ((unsigned __int128)(-1) < 0)); > static const int digits10 > = ((sizeof(unsigned __int128) * 8 - ((unsigned __int128)(-1) < 0)) * 643L / 2136); > > > > static const bool is_signed = false; > static const bool is_integer = true; > static const bool is_exact = true; > static const int radix = 2; > > static unsigned __int128 > epsilon() throw() { return 0; } > > static unsigned __int128 > round_error() throw() { return 0; } > > static const int min_exponent = 0; > static const int min_exponent10 = 0; > static const int max_exponent = 0; > static const int max_exponent10 = 0; > > static const bool has_infinity = false; > static const bool has_quiet_NaN = false; > static const bool has_signaling_NaN = false; > static const float_denorm_style has_denorm > = denorm_absent; > static const bool has_denorm_loss = false; > > static unsigned __int128 > infinity() throw() > { return static_cast<unsigned __int128>(0); } > > static unsigned __int128 > quiet_NaN() throw() > { return static_cast<unsigned __int128>(0); } > > static unsigned __int128 > signaling_NaN() throw() > { return static_cast<unsigned __int128>(0); } > > static unsigned __int128 > denorm_min() throw() > { return static_cast<unsigned __int128>(0); } > > static const bool is_iec559 = false; > static const bool is_bounded = true; > static const bool is_modulo = true; > > static const bool traps = true; > static const bool tinyness_before = false; > static const float_round_style round_style > = round_toward_zero; > }; > > > > template<> > struct numeric_limits<float> > { > static const bool is_specialized = true; > > static float > min() throw() { return 1.17549435082228750796873653722224568e-38F; } > > static float > max() throw() { return 3.40282346638528859811704183484516925e+38F; } > > > > > > > static const int digits = 24; > static const int digits10 = 6; > > > > > static const bool is_signed = true; > static const bool is_integer = false; > static const bool is_exact = false; > static const int radix = 2; > > static float > epsilon() throw() { return 1.19209289550781250000000000000000000e-7F; } > > static float > round_error() throw() { return 0.5F; } > > static const int min_exponent = (-125); > static const int min_exponent10 = (-37); > static const int max_exponent = 128; > static const int max_exponent10 = 38; > > static const bool has_infinity = 1; > static const bool has_quiet_NaN = 1; > static const bool has_signaling_NaN = has_quiet_NaN; > static const float_denorm_style has_denorm > = bool(1) ? denorm_present : denorm_absent; > static const bool has_denorm_loss > = false; > > static float > infinity() throw() { return __builtin_huge_valf(); } > > static float > quiet_NaN() throw() { return __builtin_nanf(""); } > > static float > signaling_NaN() throw() { return __builtin_nansf(""); } > > static float > denorm_min() throw() { return 1.40129846432481707092372958328991613e-45F; } > > static const bool is_iec559 > = has_infinity && has_quiet_NaN && has_denorm == denorm_present; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = false; > static const bool tinyness_before > = false; > static const float_round_style round_style > = round_to_nearest; > }; > > > > > > > template<> > struct numeric_limits<double> > { > static const bool is_specialized = true; > > static double > min() throw() { return double(2.22507385850720138309023271733240406e-308L); } > > static double > max() throw() { return double(1.79769313486231570814527423731704357e+308L); } > > > > > > > static const int digits = 53; > static const int digits10 = 15; > > > > > static const bool is_signed = true; > static const bool is_integer = false; > static const bool is_exact = false; > static const int radix = 2; > > static double > epsilon() throw() { return double(2.22044604925031308084726333618164062e-16L); } > > static double > round_error() throw() { return 0.5; } > > static const int min_exponent = (-1021); > static const int min_exponent10 = (-307); > static const int max_exponent = 1024; > static const int max_exponent10 = 308; > > static const bool has_infinity = 1; > static const bool has_quiet_NaN = 1; > static const bool has_signaling_NaN = has_quiet_NaN; > static const float_denorm_style has_denorm > = bool(1) ? denorm_present : denorm_absent; > static const bool has_denorm_loss > = false; > > static double > infinity() throw() { return __builtin_huge_val(); } > > static double > quiet_NaN() throw() { return __builtin_nan(""); } > > static double > signaling_NaN() throw() { return __builtin_nans(""); } > > static double > denorm_min() throw() { return double(4.94065645841246544176568792868221372e-324L); } > > static const bool is_iec559 > = has_infinity && has_quiet_NaN && has_denorm == denorm_present; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = false; > static const bool tinyness_before > = false; > static const float_round_style round_style > = round_to_nearest; > }; > > > > > > > template<> > struct numeric_limits<long double> > { > static const bool is_specialized = true; > > static long double > min() throw() { return 3.36210314311209350626267781732175260e-4932L; } > > static long double > max() throw() { return 1.18973149535723176508575932662800702e+4932L; } > > > > > > > static const int digits = 113; > static const int digits10 = 33; > > > > > static const bool is_signed = true; > static const bool is_integer = false; > static const bool is_exact = false; > static const int radix = 2; > > static long double > epsilon() throw() { return 1.92592994438723585305597794258492732e-34L; } > > static long double > round_error() throw() { return 0.5L; } > > static const int min_exponent = (-16381); > static const int min_exponent10 = (-4931); > static const int max_exponent = 16384; > static const int max_exponent10 = 4932; > > static const bool has_infinity = 1; > static const bool has_quiet_NaN = 1; > static const bool has_signaling_NaN = has_quiet_NaN; > static const float_denorm_style has_denorm > = bool(1) ? denorm_present : denorm_absent; > static const bool has_denorm_loss > = false; > > static long double > infinity() throw() { return __builtin_huge_vall(); } > > static long double > quiet_NaN() throw() { return __builtin_nanl(""); } > > static long double > signaling_NaN() throw() { return __builtin_nansl(""); } > > static long double > denorm_min() throw() { return 6.47517511943802511092443895822764655e-4966L; } > > static const bool is_iec559 > = has_infinity && has_quiet_NaN && has_denorm == denorm_present; > static const bool is_bounded = true; > static const bool is_modulo = false; > > static const bool traps = false; > static const bool tinyness_before = > false; > static const float_round_style round_style = > round_to_nearest; > }; > > > > > > >} ># 1115 "/buildbot/mariadb-10.2.31/include/my_global.h" 2 ># 84 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 > > > > > > > ># 1 "/buildbot/mariadb-10.2.31/include/m_string.h" 1 ># 25 "/buildbot/mariadb-10.2.31/include/m_string.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_global.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/m_string.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/my_decimal_limits.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/m_string.h" 2 > > > > > ># 1 "/usr/include/strings.h" 1 3 4 ># 29 "/usr/include/strings.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 30 "/usr/include/strings.h" 2 3 4 > > > > > > >extern "C" { > > > >extern int bcmp (const void *__s1, const void *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern void bcopy (const void *__src, void *__dest, size_t __n) throw (); > > >extern void bzero (void *__s, size_t __n) throw (); > > > >extern "C++" >{ >extern char *index (char *__s, int __c) > throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const char *index (const char *__s, int __c) > throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * >index (char *__s, int __c) throw () >{ > return __builtin_index (__s, __c); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * >index (const char *__s, int __c) throw () >{ > return __builtin_index (__s, __c); >} > >} > > > > > > > >extern "C++" >{ >extern char *rindex (char *__s, int __c) > throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const char *rindex (const char *__s, int __c) > throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * >rindex (char *__s, int __c) throw () >{ > return __builtin_rindex (__s, __c); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * >rindex (const char *__s, int __c) throw () >{ > return __builtin_rindex (__s, __c); >} > >} ># 109 "/usr/include/strings.h" 3 4 >extern int ffs (int __i) throw () __attribute__ ((const)); > > > >extern int strcasecmp (const char *__s1, const char *__s2) > throw () __attribute__ ((__pure__)); > > >extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)); ># 128 "/usr/include/strings.h" 3 4 >extern int strcasecmp_l (const char *__s1, const char *__s2, __locale_t __loc) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); > >extern int strncasecmp_l (const char *__s1, const char *__s2, > size_t __n, __locale_t __loc) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); > > >} ># 33 "/buildbot/mariadb-10.2.31/include/m_string.h" 2 > > ># 1 "/usr/include/string.h" 1 3 4 ># 27 "/usr/include/string.h" 3 4 >extern "C" { > > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 33 "/usr/include/string.h" 2 3 4 ># 42 "/usr/include/string.h" 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 "C++" >{ >extern void *memchr (void *__s, int __c, size_t __n) > throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const void *memchr (const void *__s, int __c, size_t __n) > throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * >memchr (void *__s, int __c, size_t __n) throw () >{ > return __builtin_memchr (__s, __c, __n); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * >memchr (const void *__s, int __c, size_t __n) throw () >{ > return __builtin_memchr (__s, __c, __n); >} > >} ># 101 "/usr/include/string.h" 3 4 >extern "C++" void *rawmemchr (void *__s, int __c) > throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern "C++" const void *rawmemchr (const void *__s, int __c) > throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > > > > > > >extern "C++" void *memrchr (void *__s, int __c, size_t __n) > throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) > throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); ># 125 "/usr/include/string.h" 3 4 >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))); ># 162 "/usr/include/string.h" 3 4 >extern int strcoll_l (const char *__s1, const char *__s2, __locale_t __l) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); > >extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, > __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 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))); ># 207 "/usr/include/string.h" 3 4 > > > >extern "C++" >{ >extern char *strchr (char *__s, int __c) > throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const char *strchr (const char *__s, int __c) > throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * >strchr (char *__s, int __c) throw () >{ > return __builtin_strchr (__s, __c); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * >strchr (const char *__s, int __c) throw () >{ > return __builtin_strchr (__s, __c); >} > >} > > > > > > >extern "C++" >{ >extern char *strrchr (char *__s, int __c) > throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const char *strrchr (const char *__s, int __c) > throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * >strrchr (char *__s, int __c) throw () >{ > return __builtin_strrchr (__s, __c); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * >strrchr (const char *__s, int __c) throw () >{ > return __builtin_strrchr (__s, __c); >} > >} ># 268 "/usr/include/string.h" 3 4 >extern "C++" char *strchrnul (char *__s, int __c) > throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern "C++" const char *strchrnul (const char *__s, int __c) > throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); ># 281 "/usr/include/string.h" 3 4 >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 "C++" >{ >extern char *strpbrk (char *__s, const char *__accept) > throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); >extern const char *strpbrk (const char *__s, const char *__accept) > throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * >strpbrk (char *__s, const char *__accept) throw () >{ > return __builtin_strpbrk (__s, __accept); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * >strpbrk (const char *__s, const char *__accept) throw () >{ > return __builtin_strpbrk (__s, __accept); >} > >} > > > > > > >extern "C++" >{ >extern char *strstr (char *__haystack, const char *__needle) > throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); >extern const char *strstr (const char *__haystack, const char *__needle) > throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * >strstr (char *__haystack, const char *__needle) throw () >{ > return __builtin_strstr (__haystack, __needle); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * >strstr (const char *__haystack, const char *__needle) throw () >{ > return __builtin_strstr (__haystack, __needle); >} > >} > > > > > > > >extern char *strtok (char *__restrict __s, const char *__restrict __delim) > throw () __attribute__ ((__nonnull__ (2))); > > > > >extern char *__strtok_r (char *__restrict __s, > const char *__restrict __delim, > char **__restrict __save_ptr) > throw () __attribute__ ((__nonnull__ (2, 3))); > >extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, > char **__restrict __save_ptr) > throw () __attribute__ ((__nonnull__ (2, 3))); > > > > > >extern "C++" char *strcasestr (char *__haystack, const char *__needle) > throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); >extern "C++" const char *strcasestr (const char *__haystack, > const char *__needle) > throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); ># 378 "/usr/include/string.h" 3 4 >extern void *memmem (const void *__haystack, size_t __haystacklen, > const void *__needle, size_t __needlelen) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); > > > >extern void *__mempcpy (void *__restrict __dest, > const void *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern 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 (); ># 434 "/usr/include/string.h" 3 4 >extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) > throw () __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); > > > > > >extern char *strerror_l (int __errnum, __locale_t __l) throw (); > > > > > >extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); > > > >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 "C++" >{ >extern char *index (char *__s, int __c) > throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const char *index (const char *__s, int __c) > throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); ># 483 "/usr/include/string.h" 3 4 >} > > > > > > > >extern "C++" >{ >extern char *rindex (char *__s, int __c) > throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); >extern const char *rindex (const char *__s, int __c) > throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); ># 511 "/usr/include/string.h" 3 4 >} > > > > > > > >extern int ffs (int __i) throw () __attribute__ ((__const__)); > > > > >extern int ffsl (long int __l) throw () __attribute__ ((__const__)); > >__extension__ extern int ffsll (long long int __ll) > throw () __attribute__ ((__const__)); > > > > >extern int strcasecmp (const char *__s1, const char *__s2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > > > >extern int strcasecmp_l (const char *__s1, const char *__s2, > __locale_t __loc) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); > >extern int strncasecmp_l (const char *__s1, const char *__s2, > size_t __n, __locale_t __loc) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); > > > > > >extern char *strsep (char **__restrict __stringp, > const char *__restrict __delim) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern char *strsignal (int __sig) throw (); > > >extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > >extern char *__stpncpy (char *__restrict __dest, > const char *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); >extern char *stpncpy (char *__restrict __dest, > const char *__restrict __src, size_t __n) > throw () __attribute__ ((__nonnull__ (1, 2))); > > > > >extern int strverscmp (const char *__s1, const char *__s2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > >extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1))); > > >extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1))); > > > > > > > >extern "C++" char *basename (char *__filename) > throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); >extern "C++" const char *basename (const char *__filename) > throw () __asm ("basename") __attribute__ ((__nonnull__ (1))); ># 638 "/usr/include/string.h" 3 4 ># 1 "/usr/include/bits/string3.h" 1 3 4 ># 22 "/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"))) > ; ># 47 "/usr/include/bits/string3.h" 3 4 >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * >__attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () > >{ > return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * >__attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) throw () >{ > return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); >} > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * >__attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) throw () > >{ > return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); >} ># 75 "/usr/include/bits/string3.h" 3 4 >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * >__attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) throw () >{ > if (__builtin_constant_p (__len) && __len == 0 > && (!__builtin_constant_p (__ch) || __ch != 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__)) __attribute__ ((__artificial__)) void >__attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) throw () >{ > (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void >__attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) throw () >{ > (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); >} > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * >__attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) throw () >{ > return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); >} > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * >__attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) throw () >{ > return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); >} > > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * >__attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () > >{ > 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) throw (); >extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) throw () __asm__ ("" "stpncpy") > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * >__attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) throw () >{ > 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__)) __attribute__ ((__artificial__)) char * >__attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) throw () >{ > return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); >} > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * >__attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) throw () > >{ > return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); >} ># 639 "/usr/include/string.h" 2 3 4 > > > >} ># 36 "/buildbot/mariadb-10.2.31/include/m_string.h" 2 ># 65 "/buildbot/mariadb-10.2.31/include/m_string.h" >extern "C" { ># 77 "/buildbot/mariadb-10.2.31/include/m_string.h" >extern const char _dig_vec_upper[]; >extern const char _dig_vec_lower[]; > >extern char *strmov_overlapp(char *dest, const char *src); ># 90 "/buildbot/mariadb-10.2.31/include/m_string.h" >extern void bmove_upp(uchar *dst,const uchar *src,size_t len); >extern void bchange(uchar *dst,size_t old_len,const uchar *src, > size_t new_len,size_t tot_len); >extern void strappend(char *s,size_t len,pchar fill); >extern char *strend(const char *s); >extern char *strcend(const char *, pchar); >extern char *strfill(char * s,size_t len,pchar fill); >extern char *strmake(char *dst,const char *src,size_t length); ># 111 "/buildbot/mariadb-10.2.31/include/m_string.h" >extern char *strnmov(char *dst, const char *src, size_t n); >extern char *strcont(const char *src, const char *set); >extern char *strxmov(char *dst, const char *src, ...); >extern char *strxnmov(char *dst, size_t len, const char *src, ...); > > > > > > >extern int is_prefix(const char *, const char *); > > >typedef enum { > MY_GCVT_ARG_FLOAT, > MY_GCVT_ARG_DOUBLE >} my_gcvt_arg_type; > >double my_strtod(const char *str, char **end, int *error); >double my_atof(const char *nptr); >size_t my_fcvt(double x, int precision, char *to, my_bool *error); >size_t my_gcvt(double x, my_gcvt_arg_type type, int width, char *to, > my_bool *error); ># 160 "/buildbot/mariadb-10.2.31/include/m_string.h" >extern char *llstr(longlong value,char *buff); >extern char *ullstr(longlong value,char *buff); > > > > > >extern char *int2str(long val, char *dst, int radix, int upcase); >extern char *int10_to_str(long val,char *dst,int radix); >extern char *str2int(const char *src,int radix,long lower,long upper, > long *val); >longlong my_strtoll10(const char *nptr, char **endptr, int *error); ># 197 "/buildbot/mariadb-10.2.31/include/m_string.h" >} ># 206 "/buildbot/mariadb-10.2.31/include/m_string.h" >struct st_mysql_const_lex_string >{ > const char *str; > size_t length; >}; >typedef struct st_mysql_const_lex_string LEX_CSTRING; > > >struct st_mysql_const_unsigned_lex_string >{ > const uchar *str; > size_t length; >}; >typedef struct st_mysql_const_unsigned_lex_string LEX_CUSTRING; > >static inline void lex_string_set(LEX_STRING *lex_str, const char *c_str) >{ > lex_str->str= (char *) c_str; > lex_str->length= strlen(c_str); >} > > >static inline char *safe_str(char *str) >{ return str ? str : const_cast<char*>(""); } > > >static inline const char *safe_str(const char *str) >{ return str ? str : ""; } > >static inline size_t safe_strlen(const char *str) >{ return str ? strlen(str) : 0; } ># 92 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysqld_error.h" 1 ># 93 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 > > > > > > ># 1 "/usr/include/sys/mman.h" 1 3 4 ># 25 "/usr/include/sys/mman.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 26 "/usr/include/sys/mman.h" 2 3 4 ># 41 "/usr/include/sys/mman.h" 3 4 ># 1 "/usr/include/bits/mman.h" 1 3 4 ># 42 "/usr/include/sys/mman.h" 2 3 4 > > > > >extern "C" { ># 61 "/usr/include/sys/mman.h" 3 4 >extern void * mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) throw () __asm__ ("" "mmap64") > > > ; > > > > > >extern void *mmap64 (void *__addr, size_t __len, int __prot, > int __flags, int __fd, __off64_t __offset) throw (); > > > > >extern int munmap (void *__addr, size_t __len) throw (); > > > > >extern int mprotect (void *__addr, size_t __len, int __prot) throw (); > > > > > > > >extern int msync (void *__addr, size_t __len, int __flags); > > > > >extern int madvise (void *__addr, size_t __len, int __advice) throw (); > > > >extern int posix_madvise (void *__addr, size_t __len, int __advice) throw (); > > > > >extern int mlock (const void *__addr, size_t __len) throw (); > > >extern int munlock (const void *__addr, size_t __len) throw (); > > > > >extern int mlockall (int __flags) throw (); > > > >extern int munlockall (void) throw (); > > > > > > > >extern int mincore (void *__start, size_t __len, unsigned char *__vec) > throw (); ># 133 "/usr/include/sys/mman.h" 3 4 >extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, > int __flags, ...) throw (); > > > >extern int remap_file_pages (void *__start, size_t __size, int __prot, > size_t __pgoff, int __flags) throw (); > > > > >extern int shm_open (const char *__name, int __oflag, mode_t __mode); > > >extern int shm_unlink (const char *__name); > >} ># 100 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 > > > > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stdint.h" 1 3 4 ># 9 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stdint.h" 3 4 ># 1 "/usr/include/stdint.h" 1 3 4 ># 26 "/usr/include/stdint.h" 3 4 ># 1 "/usr/include/bits/wchar.h" 1 3 4 ># 27 "/usr/include/stdint.h" 2 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 28 "/usr/include/stdint.h" 2 3 4 ># 48 "/usr/include/stdint.h" 3 4 >typedef unsigned char uint8_t; >typedef unsigned short int uint16_t; > >typedef unsigned int uint32_t; > > > >typedef unsigned long int uint64_t; ># 65 "/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; ># 90 "/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; ># 103 "/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; ># 122 "/usr/include/stdint.h" 3 4 >typedef unsigned long int uintptr_t; ># 134 "/usr/include/stdint.h" 3 4 >typedef long int intmax_t; >typedef unsigned long int uintmax_t; ># 10 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stdint.h" 2 3 4 ># 105 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 1 "/usr/include/inttypes.h" 1 3 4 ># 267 "/usr/include/inttypes.h" 3 4 >extern "C" { > > > > >typedef struct > { > long int quot; > long int rem; > } imaxdiv_t; ># 291 "/usr/include/inttypes.h" 3 4 >extern intmax_t imaxabs (intmax_t __n) throw () __attribute__ ((__const__)); > > >extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) > throw () __attribute__ ((__const__)); > > >extern intmax_t strtoimax (const char *__restrict __nptr, > char **__restrict __endptr, int __base) throw (); > > >extern uintmax_t strtoumax (const char *__restrict __nptr, > char ** __restrict __endptr, int __base) throw (); > > >extern intmax_t wcstoimax (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > >extern uintmax_t wcstoumax (const wchar_t *__restrict __nptr, > wchar_t ** __restrict __endptr, int __base) > throw (); > > > > > >extern long int __strtol_internal (const char *__restrict __nptr, > char **__restrict __endptr, > int __base, int __group) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > >extern __inline __attribute__ ((__gnu_inline__)) intmax_t >__attribute__ ((__leaf__)) strtoimax (const char *__restrict nptr, char **__restrict endptr, int base) throw () > >{ > return __strtol_internal (nptr, endptr, base, 0); >} > >extern unsigned long int __strtoul_internal (const char *__restrict __nptr, > char ** __restrict __endptr, > int __base, int __group) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > >extern __inline __attribute__ ((__gnu_inline__)) uintmax_t >__attribute__ ((__leaf__)) strtoumax (const char *__restrict nptr, char **__restrict endptr, int base) throw () > >{ > return __strtoul_internal (nptr, endptr, base, 0); >} > >extern long int __wcstol_internal (const wchar_t * __restrict __nptr, > wchar_t **__restrict __endptr, > int __base, int __group) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > >extern __inline __attribute__ ((__gnu_inline__)) intmax_t >__attribute__ ((__leaf__)) wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, int base) throw () > >{ > return __wcstol_internal (nptr, endptr, base, 0); >} > >extern unsigned long int __wcstoul_internal (const wchar_t * > __restrict __nptr, > wchar_t ** > __restrict __endptr, > int __base, int __group) > throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); > >extern __inline __attribute__ ((__gnu_inline__)) uintmax_t >__attribute__ ((__leaf__)) wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr, int base) throw () > >{ > return __wcstoul_internal (nptr, endptr, base, 0); >} ># 433 "/usr/include/inttypes.h" 3 4 >} ># 106 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 > > > > ># 1 "/buildbot/mariadb-10.2.31/include/my_pthread.h" 1 ># 30 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >extern "C" { ># 168 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >typedef void *(* pthread_handler)(void *); ># 362 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >extern pthread_key_t THR_THD; >static inline THD* _current_thd(void) >{ > return ((THD*) pthread_getspecific((THR_THD))); >} > > > >struct st_hash; >typedef struct st_safe_mutex_t >{ > pthread_mutex_t global,mutex; > const char *file, *name; > uint line,count; > myf create_flags, active_flags; > ulong id; > pthread_t thread; > struct st_hash *locked_mutex, *used_mutex; > struct st_safe_mutex_t *prev, *next; > > > >} safe_mutex_t; > >typedef struct st_safe_mutex_deadlock_t >{ > const char *file, *name; > safe_mutex_t *mutex; > uint line; > ulong count; > ulong id; > my_bool warning_only; >} safe_mutex_deadlock_t; ># 412 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >int safe_mutex_init(safe_mutex_t *mp, const pthread_mutexattr_t *attr, > const char *name, const char *file, uint line); >int safe_mutex_lock(safe_mutex_t *mp, myf my_flags, 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, > const struct timespec *abstime, > const char *file, uint line); >void safe_mutex_global_init(void); >void safe_mutex_end(FILE *file); >void safe_mutex_free_deadlock_data(safe_mutex_t *mp); ># 524 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >typedef struct st_rw_pr_lock_t { > > > > > pthread_mutex_t lock; > > > > > pthread_cond_t no_active_readers; > > uint active_readers; > > uint writers_waiting_readers; > > my_bool active_writer; > > > > >} rw_pr_lock_t; > >extern int rw_pr_init(rw_pr_lock_t *); >extern int rw_pr_rdlock(rw_pr_lock_t *); >extern int rw_pr_wrlock(rw_pr_lock_t *); >extern int rw_pr_unlock(rw_pr_lock_t *); >extern int rw_pr_destroy(rw_pr_lock_t *); ># 657 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >extern pthread_mutexattr_t my_fast_mutexattr; > > > > > >extern pthread_mutexattr_t my_errorcheck_mutexattr; ># 674 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >typedef uint64 my_thread_id; > >extern void my_threadattr_global_init(void); >extern my_bool my_thread_global_init(void); >extern void my_thread_global_reinit(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 my_thread_id my_thread_dbug_id(void); >extern int pthread_dummy(int); >extern void my_mutex_init(void); >extern void my_mutex_end(void); ># 706 "/buildbot/mariadb-10.2.31/include/my_pthread.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" 1 ># 57 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" 1 ># 43 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" >extern "C" { > >struct TABLE_SHARE; > >struct sql_digest_storage; ># 62 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" >struct PSI_mutex; >typedef struct PSI_mutex PSI_mutex; > > > > > >struct PSI_rwlock; >typedef struct PSI_rwlock PSI_rwlock; > > > > > >struct PSI_cond; >typedef struct PSI_cond PSI_cond; > > > > > >struct PSI_table_share; >typedef struct PSI_table_share PSI_table_share; > > > > > >struct PSI_table; >typedef struct PSI_table PSI_table; > > > > > >struct PSI_thread; >typedef struct PSI_thread PSI_thread; > > > > > >struct PSI_file; >typedef struct PSI_file PSI_file; > > > > > >struct PSI_socket; >typedef struct PSI_socket PSI_socket; > > > > > >struct PSI_table_locker; >typedef struct PSI_table_locker PSI_table_locker; > > > > > >struct PSI_statement_locker; >typedef struct PSI_statement_locker PSI_statement_locker; > > > > > >struct PSI_idle_locker; >typedef struct PSI_idle_locker PSI_idle_locker; > > > > > >struct PSI_digest_locker; >typedef struct PSI_digest_locker PSI_digest_locker; > > >struct PSI_bootstrap >{ ># 158 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" > void* (*get_interface)(int version); >}; >typedef struct PSI_bootstrap PSI_bootstrap; ># 2316 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" >struct PSI_none >{ > int opaque; >}; >typedef struct PSI_none PSI; > > > > > > >struct PSI_stage_info_none >{ > > unsigned int m_key; > > const char *m_name; > > int m_flags; >}; ># 2345 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" >typedef struct PSI_stage_info_none PSI_stage_info; > > > >extern PSI *PSI_server; ># 2406 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi.h" >} ># 58 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" 2 ># 69 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" >struct st_mysql_mutex >{ > > > > > pthread_mutex_t m_mutex; > > > > > > > struct PSI_mutex *m_psi; >}; ># 95 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" >typedef struct st_mysql_mutex mysql_mutex_t; > > > > > >struct st_mysql_rwlock >{ > > pthread_rwlock_t m_rwlock; > > > > > > struct PSI_rwlock *m_psi; >}; > > > > > >struct st_mysql_prlock >{ > > rw_pr_lock_t m_prlock; > > > > > > struct PSI_rwlock *m_psi; >}; ># 140 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" >typedef struct st_mysql_rwlock mysql_rwlock_t; ># 152 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" >typedef struct st_mysql_prlock mysql_prlock_t; > > > > > >struct st_mysql_cond >{ > > pthread_cond_t m_cond; > > > > > > struct PSI_cond *m_psi; >}; ># 180 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" >typedef struct st_mysql_cond mysql_cond_t; ># 585 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" >static inline void inline_mysql_mutex_register( > > > > > > const char *category __attribute__ ((unused)), > void *info __attribute__ ((unused)), > int count __attribute__ ((unused)) > >) >{ > > > >} > >static inline int inline_mysql_mutex_init( > > > > mysql_mutex_t *that, > const pthread_mutexattr_t *attr > > > > ) >{ > > > > that->m_psi= __null; > > > > > return pthread_mutex_init(&that->m_mutex, attr); > >} > >static inline int inline_mysql_mutex_destroy( > mysql_mutex_t *that > > > > ) >{ ># 642 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > return pthread_mutex_destroy(&that->m_mutex); > >} > >static inline int inline_mysql_mutex_lock( > mysql_mutex_t *that > > > > ) >{ > int result; ># 683 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_mutex_lock(&that->m_mutex); > > > return result; >} > >static inline int inline_mysql_mutex_trylock( > mysql_mutex_t *that > > > > ) >{ > int result; ># 726 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_mutex_trylock(&that->m_mutex); > > > return result; >} > >static inline int inline_mysql_mutex_unlock( > mysql_mutex_t *that > > > > ) >{ > int result; ># 749 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_mutex_unlock(&that->m_mutex); > > > return result; >} > >static inline void inline_mysql_rwlock_register( > > > > > > const char *category __attribute__ ((unused)), > void *info __attribute__ ((unused)), > int count __attribute__ ((unused)) > >) >{ > > > >} > >static inline int inline_mysql_rwlock_init( > > > > mysql_rwlock_t *that) >{ > > > > that->m_psi= __null; > > > > > return pthread_rwlock_init((&that->m_rwlock),(__null)); >} > > >static inline int inline_mysql_prlock_init( > > > > mysql_prlock_t *that) >{ > > > > that->m_psi= __null; > > return rw_pr_init(&that->m_prlock); >} > > >static inline int inline_mysql_rwlock_destroy( > mysql_rwlock_t *that) >{ > > > > > > > > return pthread_rwlock_destroy(&that->m_rwlock); >} > > >static inline int inline_mysql_prlock_destroy( > mysql_prlock_t *that) >{ > > > > > > > > return rw_pr_destroy(&that->m_prlock); >} > > >static inline int inline_mysql_rwlock_rdlock( > mysql_rwlock_t *that > > > > ) >{ > int result; ># 863 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_rwlock_rdlock(&that->m_rwlock); > > return result; >} > > >static inline int inline_mysql_prlock_rdlock( > mysql_prlock_t *that > > > > ) >{ > int result; ># 899 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= rw_pr_rdlock(&that->m_prlock); > > return result; >} > > >static inline int inline_mysql_rwlock_wrlock( > mysql_rwlock_t *that > > > > ) >{ > int result; ># 935 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_rwlock_wrlock(&that->m_rwlock); > > return result; >} > > >static inline int inline_mysql_prlock_wrlock( > mysql_prlock_t *that > > > > ) >{ > int result; ># 971 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= rw_pr_wrlock(&that->m_prlock); > > return result; >} > > >static inline int inline_mysql_rwlock_tryrdlock( > mysql_rwlock_t *that > > > > ) >{ > int result; ># 1007 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_rwlock_tryrdlock((&that->m_rwlock)); > > return result; >} > >static inline int inline_mysql_rwlock_trywrlock( > mysql_rwlock_t *that > > > > ) >{ > int result; ># 1042 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_rwlock_trywrlock((&that->m_rwlock)); > > return result; >} > >static inline int inline_mysql_rwlock_unlock( > mysql_rwlock_t *that) >{ > int result; > > > > > result= pthread_rwlock_unlock(&that->m_rwlock); > return result; >} > > >static inline int inline_mysql_prlock_unlock( > mysql_prlock_t *that) >{ > int result; > > > > > result= rw_pr_unlock(&that->m_prlock); > return result; >} > > >static inline void inline_mysql_cond_register( > > > > > > const char *category __attribute__ ((unused)), > void *info __attribute__ ((unused)), > int count __attribute__ ((unused)) > >) >{ > > > >} > >static inline int inline_mysql_cond_init( > > > > mysql_cond_t *that, > const pthread_condattr_t *attr) >{ > > > > that->m_psi= __null; > > return pthread_cond_init(&that->m_cond, attr); >} > >static inline int inline_mysql_cond_destroy( > mysql_cond_t *that) >{ > > > > > > > > return pthread_cond_destroy(&that->m_cond); >} > >static inline int inline_mysql_cond_wait( > mysql_cond_t *that, > mysql_mutex_t *mutex > > > > ) >{ > int result; ># 1149 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_cond_wait((&that->m_cond), (&mutex->m_mutex)); > > return result; >} > >static inline int inline_mysql_cond_timedwait( > mysql_cond_t *that, > mysql_mutex_t *mutex, > const struct timespec *abstime > > > > ) >{ > int result; ># 1186 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_thread.h" > result= pthread_cond_timedwait((&that->m_cond),(&mutex->m_mutex),(abstime)); > > return result; >} > >static inline int inline_mysql_cond_signal( > mysql_cond_t *that) >{ > int result; > > > > > result= pthread_cond_signal(&that->m_cond); > return result; >} > >static inline int inline_mysql_cond_broadcast( > mysql_cond_t *that) >{ > int result; > > > > > result= pthread_cond_broadcast(&that->m_cond); > return result; >} > >static inline void inline_mysql_thread_register( > > > > > > const char *category __attribute__ ((unused)), > void *info __attribute__ ((unused)), > int count __attribute__ ((unused)) > >) >{ > > > >} ># 707 "/buildbot/mariadb-10.2.31/include/my_pthread.h" 2 > > > >struct st_my_thread_var >{ > int thr_errno; > mysql_cond_t suspend; > mysql_mutex_t mutex; > mysql_mutex_t * volatile current_mutex; > mysql_cond_t * volatile current_cond; > pthread_t pthread_self; > my_thread_id id, dbug_id; > int volatile abort; > my_bool init; > struct st_my_thread_var *next,**prev; > void *keycache_link; > uint lock_type; > void *stack_ends_here; > safe_mutex_t *mutex_in_use; > > > > >}; > >extern struct st_my_thread_var *_my_thread_var(void) __attribute__ ((const)); >extern void **my_thread_var_dbug(void); >extern safe_mutex_t **my_thread_var_mutex_in_use(void); >extern uint my_thread_end_wait_time; >extern my_bool safe_mutex_deadlock_detector; ># 750 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >extern uint thd_lib_detected; ># 832 "/buildbot/mariadb-10.2.31/include/my_pthread.h" >} ># 111 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 273 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" >enum innodb_file_formats_enum { > > > UNIV_FORMAT_A = 0, > > > > > > > UNIV_FORMAT_B = 1 >}; > >typedef enum innodb_file_formats_enum innodb_file_formats_t; ># 432 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" >typedef unsigned char byte; > >typedef size_t ulint; > >typedef ssize_t lint; ># 470 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" >typedef int64_t ib_int64_t; >typedef uint64_t ib_uint64_t; >typedef uint32_t ib_uint32_t; > > > > > >typedef ib_uint64_t lsn_t; ># 500 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" >typedef ib_uint64_t ib_id_t; ># 606 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" >typedef void* os_thread_ret_t; > > > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/db0err.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/db0err.h" >enum dberr_t { > DB_SUCCESS, > > DB_SUCCESS_LOCKED_REC = 9, > > > > DB_ERROR = 11, > DB_INTERRUPTED, > DB_OUT_OF_MEMORY, > DB_OUT_OF_FILE_SPACE, > DB_LOCK_WAIT, > DB_DEADLOCK, > DB_ROLLBACK, > DB_DUPLICATE_KEY, > DB_MISSING_HISTORY, > > > DB_CLUSTER_NOT_FOUND = 30, > DB_TABLE_NOT_FOUND, > DB_MUST_GET_MORE_FILE_SPACE, > > DB_TABLE_IS_BEING_USED, > DB_TOO_BIG_RECORD, > > > > DB_LOCK_WAIT_TIMEOUT, > DB_NO_REFERENCED_ROW, > > > DB_ROW_IS_REFERENCED, > > > DB_CANNOT_ADD_CONSTRAINT, > > DB_CORRUPTION, > > DB_CANNOT_DROP_CONSTRAINT, > > DB_NO_SAVEPOINT, > > DB_TABLESPACE_EXISTS, > > > DB_TABLESPACE_DELETED, > > DB_TABLESPACE_NOT_FOUND, > > > DB_LOCK_TABLE_FULL, > > > > DB_FOREIGN_DUPLICATE_KEY, > > > > DB_TOO_MANY_CONCURRENT_TRXS, > > > > DB_UNSUPPORTED, > > > > > DB_INVALID_NULL, > > > DB_STATS_DO_NOT_EXIST, > > > > > > DB_FOREIGN_EXCEED_MAX_CASCADE, > > > DB_CHILD_NO_INDEX, > > > DB_PARENT_NO_INDEX, > > > DB_TOO_BIG_INDEX_COL, > > DB_INDEX_CORRUPT, > DB_UNDO_RECORD_TOO_BIG, > DB_READ_ONLY, > > DB_FTS_INVALID_DOCID, > DB_TABLE_IN_FK_CHECK, > > DB_ONLINE_LOG_TOO_BIG, > > > DB_IDENTIFIER_TOO_LONG, > DB_FTS_EXCEED_RESULT_CACHE_LIMIT, > > DB_TEMP_FILE_WRITE_FAIL, > DB_CANT_CREATE_GEOMETRY_OBJECT, > > DB_CANNOT_OPEN_FILE, > DB_FTS_TOO_MANY_WORDS_IN_PHRASE, > > > DB_TABLESPACE_TRUNCATED, > > DB_DECRYPTION_FAILED, > > > > > > DB_IO_ERROR = 100, > > DB_IO_PARTIAL_FAILED, > > DB_FORCED_ABORT, > > > DB_TABLE_CORRUPT, > > > DB_COMPUTE_VALUE_FAILED, > > DB_NO_FK_ON_S_BASE_COL, > > > > DB_IO_NO_PUNCH_HOLE, > > > DB_PAGE_CORRUPTED, > > > DB_FAIL = 1000, > DB_OVERFLOW, > DB_UNDERFLOW, > DB_STRONG_FAIL, > DB_ZIP_OVERFLOW, > DB_RECORD_NOT_FOUND = 1500, > DB_END_OF_INDEX, > DB_NOT_FOUND, > >}; ># 614 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0dbg.h" 1 ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0dbg.h" >__attribute__((noreturn)) __attribute__((cold)) __attribute__((nonnull(2))) >void >ut_dbg_assertion_failed( > > const char* expr, > const char* file, > unsigned line); ># 77 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0dbg.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 ># 31 "/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_RTTIME = 15, > > > __RLIMIT_NLIMITS = 16, > __RLIM_NLIMITS = __RLIMIT_NLIMITS > > >}; ># 133 "/usr/include/bits/resource.h" 3 4 >typedef __rlim64_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 ># 180 "/usr/include/bits/resource.h" 2 3 4 > > > > > > > >struct rusage > { > > struct timeval ru_utime; > > struct timeval ru_stime; > > __extension__ union > { > long int ru_maxrss; > __syscall_slong_t __ru_maxrss_word; > }; > > > > __extension__ union > { > long int ru_ixrss; > __syscall_slong_t __ru_ixrss_word; > }; > > __extension__ union > { > long int ru_idrss; > __syscall_slong_t __ru_idrss_word; > }; > > __extension__ union > { > long int ru_isrss; > __syscall_slong_t __ru_isrss_word; > }; > > > __extension__ union > { > long int ru_minflt; > __syscall_slong_t __ru_minflt_word; > }; > > __extension__ union > { > long int ru_majflt; > __syscall_slong_t __ru_majflt_word; > }; > > __extension__ union > { > long int ru_nswap; > __syscall_slong_t __ru_nswap_word; > }; > > > __extension__ union > { > long int ru_inblock; > __syscall_slong_t __ru_inblock_word; > }; > > __extension__ union > { > long int ru_oublock; > __syscall_slong_t __ru_oublock_word; > }; > > __extension__ union > { > long int ru_msgsnd; > __syscall_slong_t __ru_msgsnd_word; > }; > > __extension__ union > { > long int ru_msgrcv; > __syscall_slong_t __ru_msgrcv_word; > }; > > __extension__ union > { > long int ru_nsignals; > __syscall_slong_t __ru_nsignals_word; > }; > > > > __extension__ union > { > long int ru_nvcsw; > __syscall_slong_t __ru_nvcsw_word; > }; > > > __extension__ union > { > long int ru_nivcsw; > __syscall_slong_t __ru_nivcsw_word; > }; > }; > > > > > > > >enum __priority_which >{ > PRIO_PROCESS = 0, > > PRIO_PGRP = 1, > > PRIO_USER = 2 > >}; > > >extern "C" { ># 313 "/usr/include/bits/resource.h" 3 4 >extern int prlimit (__pid_t __pid, enum __rlimit_resource __resource, const struct rlimit *__new_limit, struct rlimit *__old_limit) throw () __asm__ ("" "prlimit64") > > > ; > > > > > >extern int prlimit64 (__pid_t __pid, enum __rlimit_resource __resource, > const struct rlimit64 *__new_limit, > struct rlimit64 *__old_limit) throw (); > > > >} ># 26 "/usr/include/sys/resource.h" 2 3 4 > > > > > > >extern "C" { ># 43 "/usr/include/sys/resource.h" 3 4 >typedef int __rlimit_resource_t; >typedef int __rusage_who_t; >typedef int __priority_which_t; ># 55 "/usr/include/sys/resource.h" 3 4 >extern int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits) throw () __asm__ ("" "getrlimit64") > ; > > > > > >extern int getrlimit64 (__rlimit_resource_t __resource, > struct rlimit64 *__rlimits) throw (); ># 74 "/usr/include/sys/resource.h" 3 4 >extern int setrlimit (__rlimit_resource_t __resource, const struct rlimit *__rlimits) throw () __asm__ ("" "setrlimit64") > > ; > > > > > >extern int setrlimit64 (__rlimit_resource_t __resource, > const struct rlimit64 *__rlimits) throw (); > > > > >extern int getrusage (__rusage_who_t __who, struct rusage *__usage) throw (); > > > > > >extern int getpriority (__priority_which_t __which, id_t __who) throw (); > > > >extern int setpriority (__priority_which_t __which, id_t __who, int __prio) > throw (); > >} ># 78 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0dbg.h" 2 > > > > > > > >class ut_chrono_t { >public: > > > ut_chrono_t( > const char* name) > : > m_name(name), > m_show_from_destructor(true) > { > reset(); > } > > > void > reset() > { > gettimeofday(&m_tv, __null); > > getrusage(RUSAGE_SELF, &m_ru); > } > > > void > show() > { > struct rusage ru_now; > struct timeval tv_now; > struct timeval tv_diff; > > getrusage(RUSAGE_SELF, &ru_now); > > gettimeofday(&tv_now, __null); ># 137 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0dbg.h" > do { (&tv_diff)->tv_sec = (&tv_now)->tv_sec - (&m_tv)->tv_sec; (&tv_diff)->tv_usec = (&tv_now)->tv_usec - (&m_tv)->tv_usec; if ((&tv_diff)->tv_usec < 0) { --(&tv_diff)->tv_sec; (&tv_diff)->tv_usec += 1000000; } } while (0); > fprintf(stderr, "%s: %s% 5ld.%06ld sec\n", m_name, "real", static_cast<long>((&tv_diff)->tv_sec), static_cast<long>((&tv_diff)->tv_usec)); > > do { (&tv_diff)->tv_sec = (&ru_now.ru_utime)->tv_sec - (&m_ru.ru_utime)->tv_sec; (&tv_diff)->tv_usec = (&ru_now.ru_utime)->tv_usec - (&m_ru.ru_utime)->tv_usec; if ((&tv_diff)->tv_usec < 0) { --(&tv_diff)->tv_sec; (&tv_diff)->tv_usec += 1000000; } } while (0); > fprintf(stderr, "%s: %s% 5ld.%06ld sec\n", m_name, "user", static_cast<long>((&tv_diff)->tv_sec), static_cast<long>((&tv_diff)->tv_usec)); > > do { (&tv_diff)->tv_sec = (&ru_now.ru_stime)->tv_sec - (&m_ru.ru_stime)->tv_sec; (&tv_diff)->tv_usec = (&ru_now.ru_stime)->tv_usec - (&m_ru.ru_stime)->tv_usec; if ((&tv_diff)->tv_usec < 0) { --(&tv_diff)->tv_sec; (&tv_diff)->tv_usec += 1000000; } } while (0); > fprintf(stderr, "%s: %s% 5ld.%06ld sec\n", m_name, "sys ", static_cast<long>((&tv_diff)->tv_sec), static_cast<long>((&tv_diff)->tv_usec)); > } > > > void end() > { > m_show_from_destructor = false; > } > > > ~ut_chrono_t() > { > if (m_show_from_destructor) { > show(); > } > } > >private: > > const char* m_name; > > > bool m_show_from_destructor; > > > struct rusage m_ru; > > > struct timeval m_tv; >}; ># 615 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" 1 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename Type> >struct ut_list_node { > Type* prev; > > Type* next; > > > void reverse() > { > Type* tmp = prev; > prev = next; > next = tmp; > } >}; ># 67 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename Type, typename NodePtr> >struct ut_list_base { > typedef Type elem_type; > typedef NodePtr node_ptr; > typedef ut_list_node<Type> node_type; > > ulint count; > elem_type* start; > > elem_type* end; > > node_ptr node; > > > > > > > > void reverse() > { > Type* tmp = start; > start = end; > end = tmp; > } >}; ># 124 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename Type> >struct GenericGetNode { > > typedef ut_list_node<Type> node_type; > > GenericGetNode(node_type Type::* node) : m_node(node) {} > > node_type& operator() (Type& elem) > { > return(elem.*m_node); > } > > node_type Type::*m_node; >}; > > > > > >template <typename List> >void >ut_list_prepend( > List& list, > typename List::elem_type* elem) >{ > typename List::node_type& elem_node = elem->*list.node; > > ; > > elem_node.prev = 0; > elem_node.next = list.start; > > if (list.start != 0) { > typename List::node_type& base_node = > list.start->*list.node; > > do { } while(0); > > base_node.prev = elem; > } > > list.start = elem; > > if (list.end == 0) { > list.end = elem; > } > > ++list.count; >} ># 185 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename List, typename Functor> >void >ut_list_append( > List& list, > typename List::elem_type* elem, > Functor get_node) >{ > typename List::node_type& node = get_node(*elem); > > ; > > node.next = 0; > node.prev = list.end; > > if (list.end != 0) { > typename List::node_type& base_node = get_node(*list.end); > > do { } while(0); > > base_node.next = elem; > } > > list.end = elem; > > if (list.start == 0) { > list.start = elem; > } > > ++list.count; >} > > > > > >template <typename List> >void >ut_list_append( > List& list, > typename List::elem_type* elem) >{ > ut_list_append( > list, elem, > GenericGetNode<typename List::elem_type>(list.node)); >} ># 242 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename List> >void >ut_list_insert( > List& list, > typename List::elem_type* elem1, > typename List::elem_type* elem2) >{ > do { } while(0); > ; > > typename List::node_type& elem1_node = elem1->*list.node; > typename List::node_type& elem2_node = elem2->*list.node; > > elem2_node.prev = elem1; > elem2_node.next = elem1_node.next; > > if (elem1_node.next != __null) { > typename List::node_type& next_node = > elem1_node.next->*list.node; > > next_node.prev = elem2; > } > > elem1_node.next = elem2; > > if (list.end == elem1) { > list.end = elem2; > } > > ++list.count; >} ># 289 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename List, typename Functor> >void >ut_list_insert( > List& list, > typename List::elem_type* elem1, > typename List::elem_type* elem2, > Functor get_node) >{ > do { } while(0); > ; > > typename List::node_type& elem1_node = get_node(*elem1); > typename List::node_type& elem2_node = get_node(*elem2); > > elem2_node.prev = elem1; > elem2_node.next = elem1_node.next; > > if (elem1_node.next != __null) { > typename List::node_type& next_node = > get_node(*elem1_node.next); > > next_node.prev = elem2; > } > > elem1_node.next = elem2; > > if (list.end == elem1) { > list.end = elem2; > } > > ++list.count; > >} > > > > > >template <typename List, typename Functor> >void >ut_list_remove( > List& list, > typename List::node_type& node, > Functor get_node) >{ > do { if (__builtin_expect(!(ulint) (list.count > 0), (0))) { ut_dbg_assertion_failed("list.count > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h", 334); } } while (0); > ; > > if (node.next != __null) { > typename List::node_type& next_node = > get_node(*node.next); > > next_node.prev = node.prev; > } else { > list.end = node.prev; > } > > if (node.prev != __null) { > typename List::node_type& prev_node = > get_node(*node.prev); > > prev_node.next = node.next; > } else { > list.start = node.next; > } > > node.next = 0; > node.prev = 0; > > --list.count; >} > > > > > > >template <typename List, typename Functor> >void >ut_list_remove( > List& list, > typename List::elem_type* elem, > Functor get_node) >{ > ut_list_remove(list, get_node(*elem), get_node); >} > > > > > >template <typename List> >void >ut_list_remove( > List& list, > typename List::elem_type* elem) >{ > ut_list_remove( > list, elem->*list.node, > GenericGetNode<typename List::elem_type>(list.node)); >} ># 430 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >struct NullValidate { void operator()(const void*) const {} }; > > > > >template <typename List, class Functor> >inline void ut_list_map(const List& list, Functor& functor) >{ > ulint count = 0; > > ; > > for (typename List::elem_type* elem = list.start; elem; > elem = (elem->*list.node).next, ++count) { > > functor(elem); > } > > do { if (__builtin_expect(!(ulint) (count == list.count), (0))) { ut_dbg_assertion_failed("count == list.count", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h", 448); } } while (0); >} > > > > >template <typename List, class Functor> >inline void ut_list_map(const List& list, const Functor& functor) >{ > ulint count = 0; > > ; > > for (typename List::elem_type* elem = list.start; elem; > elem = (elem->*list.node).next, ++count) { > > functor(elem); > } > > do { if (__builtin_expect(!(ulint) (count == list.count), (0))) { ut_dbg_assertion_failed("count == list.count", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h", 467); } } while (0); >} > > > > >template <typename List, class Functor> >void ut_list_validate(const List& list, Functor& functor) >{ > ut_list_map(list, functor); > > > ulint count = 0; > > for (typename List::elem_type* elem = list.end; > elem != 0; > elem = (elem->*list.node).prev) { > ++count; > } > > do { if (__builtin_expect(!(ulint) (count == list.count), (0))) { ut_dbg_assertion_failed("count == list.count", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h", 487); } } while (0); >} > > > > >template <typename List, class Functor> >inline void ut_list_validate(const List& list, const Functor& functor) >{ > ut_list_map(list, functor); > > > ulint count = 0; > > for (typename List::elem_type* elem = list.end; > elem != 0; > elem = (elem->*list.node).prev) { > ++count; > } > > do { if (__builtin_expect(!(ulint) (count == list.count), (0))) { ut_dbg_assertion_failed("count == list.count", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h", 507); } } while (0); >} > >template <typename List> >inline void ut_list_validate(const List& list) >{ > ut_list_validate(list, NullValidate()); >} ># 551 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0lst.h" >template <typename List> >void >ut_list_move_to_front( > List& list, > typename List::elem_type* elem) >{ > do { } while(0); > > if ((list).start != elem) { > ut_list_remove(list, elem); > ut_list_prepend(list, elem); > } >} ># 616 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" ># 1 "/usr/include/c++/4.8.2/ostream" 1 3 ># 36 "/usr/include/c++/4.8.2/ostream" 3 ># 37 "/usr/include/c++/4.8.2/ostream" 3 > ># 1 "/usr/include/c++/4.8.2/ios" 1 3 ># 36 "/usr/include/c++/4.8.2/ios" 3 ># 37 "/usr/include/c++/4.8.2/ios" 3 > ># 1 "/usr/include/c++/4.8.2/iosfwd" 1 3 ># 36 "/usr/include/c++/4.8.2/iosfwd" 3 ># 37 "/usr/include/c++/4.8.2/iosfwd" 3 > > ># 1 "/usr/include/c++/4.8.2/bits/stringfwd.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/stringfwd.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/stringfwd.h" 3 > > ># 1 "/usr/include/c++/4.8.2/bits/memoryfwd.h" 1 3 ># 46 "/usr/include/c++/4.8.2/bits/memoryfwd.h" 3 ># 47 "/usr/include/c++/4.8.2/bits/memoryfwd.h" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 63 "/usr/include/c++/4.8.2/bits/memoryfwd.h" 3 > template<typename> > class allocator; > > template<> > class allocator<void>; > > > template<typename, typename> > struct uses_allocator; > > > > >} ># 41 "/usr/include/c++/4.8.2/bits/stringfwd.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 52 "/usr/include/c++/4.8.2/bits/stringfwd.h" 3 > template<class _CharT> > struct char_traits; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_string; > > template<> struct char_traits<char>; > > > typedef basic_string<char> string; > > > template<> struct char_traits<wchar_t>; > > > typedef basic_string<wchar_t> wstring; ># 86 "/usr/include/c++/4.8.2/bits/stringfwd.h" 3 > >} ># 40 "/usr/include/c++/4.8.2/iosfwd" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/postypes.h" 1 3 ># 38 "/usr/include/c++/4.8.2/bits/postypes.h" 3 ># 39 "/usr/include/c++/4.8.2/bits/postypes.h" 3 > ># 1 "/usr/include/c++/4.8.2/cwchar" 1 3 ># 39 "/usr/include/c++/4.8.2/cwchar" 3 ># 40 "/usr/include/c++/4.8.2/cwchar" 3 > > > > ># 1 "/usr/include/wchar.h" 1 3 4 ># 51 "/usr/include/wchar.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 353 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 3 4 >typedef unsigned int wint_t; ># 52 "/usr/include/wchar.h" 2 3 4 ># 104 "/usr/include/wchar.h" 3 4 > > >typedef __mbstate_t mbstate_t; ># 132 "/usr/include/wchar.h" 3 4 >extern "C" { > > > > >struct tm; ># 147 "/usr/include/wchar.h" 3 4 >extern wchar_t *wcscpy (wchar_t *__restrict __dest, > const wchar_t *__restrict __src) throw (); > >extern wchar_t *wcsncpy (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, size_t __n) > throw (); > > >extern wchar_t *wcscat (wchar_t *__restrict __dest, > const wchar_t *__restrict __src) throw (); > >extern wchar_t *wcsncat (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, size_t __n) > throw (); > > >extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) > throw () __attribute__ ((__pure__)); > >extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > > > >extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw (); > > >extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, > size_t __n) throw (); > > > > > >extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, > __locale_t __loc) throw (); > >extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, > size_t __n, __locale_t __loc) throw (); > > > > > >extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw (); > > > >extern size_t wcsxfrm (wchar_t *__restrict __s1, > const wchar_t *__restrict __s2, size_t __n) throw (); ># 206 "/usr/include/wchar.h" 3 4 >extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, > __locale_t __loc) throw (); > > > > >extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, > size_t __n, __locale_t __loc) throw (); > > >extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__)); > > > > > >extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) > throw () __asm ("wcschr") __attribute__ ((__pure__)); >extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) > throw () __asm ("wcschr") __attribute__ ((__pure__)); > > > > > > >extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) > throw () __asm ("wcsrchr") __attribute__ ((__pure__)); >extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) > throw () __asm ("wcsrchr") __attribute__ ((__pure__)); ># 245 "/usr/include/wchar.h" 3 4 >extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) > throw () __attribute__ ((__pure__)); > > > > > >extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) > throw () __attribute__ ((__pure__)); > > >extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) > throw () __attribute__ ((__pure__)); > > >extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) > throw () __asm ("wcspbrk") __attribute__ ((__pure__)); >extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, > const wchar_t *__accept) > throw () __asm ("wcspbrk") __attribute__ ((__pure__)); > > > > > > >extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) > throw () __asm ("wcsstr") __attribute__ ((__pure__)); >extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, > const wchar_t *__needle) > throw () __asm ("wcsstr") __attribute__ ((__pure__)); > > > > > > >extern wchar_t *wcstok (wchar_t *__restrict __s, > const wchar_t *__restrict __delim, > wchar_t **__restrict __ptr) throw (); > > >extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__)); > > > > > >extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) > throw () __asm ("wcswcs") __attribute__ ((__pure__)); >extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, > const wchar_t *__needle) > throw () __asm ("wcswcs") __attribute__ ((__pure__)); ># 306 "/usr/include/wchar.h" 3 4 >extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) > throw () __attribute__ ((__pure__)); > > > > > > >extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) > throw () __asm ("wmemchr") __attribute__ ((__pure__)); >extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, > size_t __n) > throw () __asm ("wmemchr") __attribute__ ((__pure__)); > > > > > > >extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) > throw () __attribute__ ((__pure__)); > > >extern wchar_t *wmemcpy (wchar_t *__restrict __s1, > const wchar_t *__restrict __s2, size_t __n) throw (); > > > >extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) > throw (); > > >extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw (); > > > > > >extern wchar_t *wmempcpy (wchar_t *__restrict __s1, > const wchar_t *__restrict __s2, size_t __n) > throw (); > > > > > > >extern wint_t btowc (int __c) throw (); > > > >extern int wctob (wint_t __c) throw (); > > > >extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__)); > > > >extern size_t mbrtowc (wchar_t *__restrict __pwc, > const char *__restrict __s, size_t __n, > mbstate_t *__restrict __p) throw (); > > >extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, > mbstate_t *__restrict __ps) throw (); > > >extern size_t __mbrlen (const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw (); >extern size_t mbrlen (const char *__restrict __s, size_t __n, > mbstate_t *__restrict __ps) throw (); ># 386 "/usr/include/wchar.h" 3 4 >extern wint_t __btowc_alias (int __c) __asm ("btowc"); >extern __inline __attribute__ ((__gnu_inline__)) wint_t >__attribute__ ((__leaf__)) btowc (int __c) throw () >{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' > ? (wint_t) __c : __btowc_alias (__c)); } > >extern int __wctob_alias (wint_t __c) __asm ("wctob"); >extern __inline __attribute__ ((__gnu_inline__)) int >__attribute__ ((__leaf__)) wctob (wint_t __wc) throw () >{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' > ? (int) __wc : __wctob_alias (__wc)); } > >extern __inline __attribute__ ((__gnu_inline__)) size_t >__attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw () > >{ return (__ps != __null > ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } > > > > > >extern size_t mbsrtowcs (wchar_t *__restrict __dst, > const char **__restrict __src, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > >extern size_t wcsrtombs (char *__restrict __dst, > const wchar_t **__restrict __src, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > > > > >extern size_t mbsnrtowcs (wchar_t *__restrict __dst, > const char **__restrict __src, size_t __nmc, > size_t __len, mbstate_t *__restrict __ps) throw (); > > > >extern size_t wcsnrtombs (char *__restrict __dst, > const wchar_t **__restrict __src, > size_t __nwc, size_t __len, > mbstate_t *__restrict __ps) throw (); > > > > > > >extern int wcwidth (wchar_t __c) throw (); > > > >extern int wcswidth (const wchar_t *__s, size_t __n) throw (); > > > > > > >extern double wcstod (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); > > > > > >extern float wcstof (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); >extern long double wcstold (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr) throw (); > > > > > > > >extern long int wcstol (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) throw (); > > > >extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > > > > >__extension__ >extern long long int wcstoll (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > >__extension__ >extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw (); > > > > > > >__extension__ >extern long long int wcstoq (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base) > throw (); > > > >__extension__ >extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base) throw (); ># 530 "/usr/include/wchar.h" 3 4 >extern long int wcstol_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, int __base, > __locale_t __loc) throw (); > >extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern long long int wcstoll_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) throw (); > >__extension__ >extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > int __base, __locale_t __loc) > throw (); > >extern double wcstod_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, __locale_t __loc) > throw (); > >extern float wcstof_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, __locale_t __loc) > throw (); > >extern long double wcstold_l (const wchar_t *__restrict __nptr, > wchar_t **__restrict __endptr, > __locale_t __loc) throw (); > > > > > > >extern wchar_t *wcpcpy (wchar_t *__restrict __dest, > const wchar_t *__restrict __src) throw (); > > > >extern wchar_t *wcpncpy (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, size_t __n) > throw (); > > > > > > >extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw (); > > > > > > >extern int fwide (__FILE *__fp, int __mode) throw (); > > > > > > >extern int fwprintf (__FILE *__restrict __stream, > const wchar_t *__restrict __format, ...) > ; > > > > >extern int wprintf (const wchar_t *__restrict __format, ...) > ; > >extern int swprintf (wchar_t *__restrict __s, size_t __n, > const wchar_t *__restrict __format, ...) > throw () ; > > > > > >extern int vfwprintf (__FILE *__restrict __s, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > > > >extern int vwprintf (const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > >extern int vswprintf (wchar_t *__restrict __s, size_t __n, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; > > > > > > >extern int fwscanf (__FILE *__restrict __stream, > const wchar_t *__restrict __format, ...) > ; > > > > >extern int wscanf (const wchar_t *__restrict __format, ...) > ; > >extern int swscanf (const wchar_t *__restrict __s, > const wchar_t *__restrict __format, ...) > throw () ; ># 680 "/usr/include/wchar.h" 3 4 ># 689 "/usr/include/wchar.h" 3 4 >extern int vfwscanf (__FILE *__restrict __s, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > > > > >extern int vwscanf (const wchar_t *__restrict __format, > __gnuc_va_list __arg) > ; > >extern int vswscanf (const wchar_t *__restrict __s, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; ># 736 "/usr/include/wchar.h" 3 4 ># 745 "/usr/include/wchar.h" 3 4 >extern wint_t fgetwc (__FILE *__stream); >extern wint_t getwc (__FILE *__stream); > > > > > >extern wint_t getwchar (void); > > > > > > >extern wint_t fputwc (wchar_t __wc, __FILE *__stream); >extern wint_t putwc (wchar_t __wc, __FILE *__stream); > > > > > >extern wint_t putwchar (wchar_t __wc); > > > > > > > >extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, > __FILE *__restrict __stream); > > > > > >extern int fputws (const wchar_t *__restrict __ws, > __FILE *__restrict __stream); > > > > > > >extern wint_t ungetwc (wint_t __wc, __FILE *__stream); ># 801 "/usr/include/wchar.h" 3 4 >extern wint_t getwc_unlocked (__FILE *__stream); >extern wint_t getwchar_unlocked (void); > > > > > > > >extern wint_t fgetwc_unlocked (__FILE *__stream); > > > > > > > >extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); ># 827 "/usr/include/wchar.h" 3 4 >extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); >extern wint_t putwchar_unlocked (wchar_t __wc); ># 837 "/usr/include/wchar.h" 3 4 >extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, > __FILE *__restrict __stream); > > > > > > > >extern int fputws_unlocked (const wchar_t *__restrict __ws, > __FILE *__restrict __stream); > > > > > > > >extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, > const wchar_t *__restrict __format, > const struct tm *__restrict __tp) throw (); > > > > > > > >extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, > const wchar_t *__restrict __format, > const struct tm *__restrict __tp, > __locale_t __loc) throw (); ># 884 "/usr/include/wchar.h" 3 4 ># 1 "/usr/include/bits/wchar2.h" 1 3 4 ># 24 "/usr/include/bits/wchar2.h" 3 4 >extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, > const wchar_t *__restrict __s2, size_t __n, > size_t __ns1) throw (); >extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmemcpy") > > > ; >extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemcpy_chk") > > > > __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () > >{ > if (__builtin_object_size (__s1, 0) != (size_t) -1) > { > if (!__builtin_constant_p (__n)) > return __wmemcpy_chk (__s1, __s2, __n, > __builtin_object_size (__s1, 0) / sizeof (wchar_t)); > > if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) > return __wmemcpy_chk_warn (__s1, __s2, __n, > __builtin_object_size (__s1, 0) / sizeof (wchar_t)); > } > return __wmemcpy_alias (__s1, __s2, __n); >} > > >extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, > size_t __n, size_t __ns1) throw (); >extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () __asm__ ("" "wmemmove") > > ; >extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmemmove_chk") > > > __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) throw () >{ > if (__builtin_object_size (__s1, 0) != (size_t) -1) > { > if (!__builtin_constant_p (__n)) > return __wmemmove_chk (__s1, __s2, __n, > __builtin_object_size (__s1, 0) / sizeof (wchar_t)); > > if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) > return __wmemmove_chk_warn (__s1, __s2, __n, > __builtin_object_size (__s1, 0) / sizeof (wchar_t)); > } > return __wmemmove_alias (__s1, __s2, __n); >} > > > >extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, > const wchar_t *__restrict __s2, size_t __n, > size_t __ns1) throw (); >extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () __asm__ ("" "wmempcpy") > > > ; >extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) throw () __asm__ ("" "__wmempcpy_chk") > > > > __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) throw () > >{ > if (__builtin_object_size (__s1, 0) != (size_t) -1) > { > if (!__builtin_constant_p (__n)) > return __wmempcpy_chk (__s1, __s2, __n, > __builtin_object_size (__s1, 0) / sizeof (wchar_t)); > > if (__n > __builtin_object_size (__s1, 0) / sizeof (wchar_t)) > return __wmempcpy_chk_warn (__s1, __s2, __n, > __builtin_object_size (__s1, 0) / sizeof (wchar_t)); > } > return __wmempcpy_alias (__s1, __s2, __n); >} > > > >extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, > size_t __ns) throw (); >extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) throw () __asm__ ("" "wmemset") > ; >extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) throw () __asm__ ("" "__wmemset_chk") > > > __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw () >{ > if (__builtin_object_size (__s, 0) != (size_t) -1) > { > if (!__builtin_constant_p (__n)) > return __wmemset_chk (__s, __c, __n, __builtin_object_size (__s, 0) / sizeof (wchar_t)); > > if (__n > __builtin_object_size (__s, 0) / sizeof (wchar_t)) > return __wmemset_chk_warn (__s, __c, __n, > __builtin_object_size (__s, 0) / sizeof (wchar_t)); > } > return __wmemset_alias (__s, __c, __n); >} > > >extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, > size_t __n) throw (); >extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscpy") > > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () >{ > if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) > return __wcscpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > return __wcscpy_alias (__dest, __src); >} > > >extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, > size_t __destlen) throw (); >extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcpcpy") > > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () >{ > if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) > return __wcpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > return __wcpcpy_alias (__dest, __src); >} > > >extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, size_t __n, > size_t __destlen) throw (); >extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncpy") > > > ; >extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcsncpy_chk") > > > > __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () > >{ > if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) > { > if (!__builtin_constant_p (__n)) > return __wcsncpy_chk (__dest, __src, __n, > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) > return __wcsncpy_chk_warn (__dest, __src, __n, > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > } > return __wcsncpy_alias (__dest, __src, __n); >} > > >extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, size_t __n, > size_t __destlen) throw (); >extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcpncpy") > > > ; >extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) throw () __asm__ ("" "__wcpncpy_chk") > > > > __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () > >{ > if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) > { > if (!__builtin_constant_p (__n)) > return __wcpncpy_chk (__dest, __src, __n, > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > if (__n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) > return __wcpncpy_chk_warn (__dest, __src, __n, > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > } > return __wcpncpy_alias (__dest, __src, __n); >} > > >extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, > size_t __destlen) throw (); >extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () __asm__ ("" "wcscat") > > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) throw () >{ > if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) > return __wcscat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > return __wcscat_alias (__dest, __src); >} > > >extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, > const wchar_t *__restrict __src, > size_t __n, size_t __destlen) throw (); >extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () __asm__ ("" "wcsncat") > > > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * >__attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) throw () > >{ > if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1) > return __wcsncat_chk (__dest, __src, __n, > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); > return __wcsncat_alias (__dest, __src, __n); >} > > >extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, > int __flag, size_t __s_len, > const wchar_t *__restrict __format, ...) > throw () ; > >extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () __asm__ ("" "swprintf") > > > ; > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) throw () > >{ > if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) > return __swprintf_chk (__s, __n, 2 - 1, > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), > __fmt, __builtin_va_arg_pack ()); > return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); >} ># 303 "/usr/include/bits/wchar2.h" 3 4 >extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, > int __flag, size_t __s_len, > const wchar_t *__restrict __format, > __gnuc_va_list __arg) > throw () ; > >extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () __asm__ ("" "vswprintf") > > > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >__attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) throw () > >{ > if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 || 2 > 1) > return __vswprintf_chk (__s, __n, 2 - 1, > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), __fmt, __ap); > return __vswprintf_alias (__s, __n, __fmt, __ap); >} > > > > >extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, > const wchar_t *__restrict __format, ...); >extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, > ...); >extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, > const wchar_t *__restrict __format, > __gnuc_va_list __ap); >extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, > __gnuc_va_list __ap); > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >wprintf (const wchar_t *__restrict __fmt, ...) >{ > return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) >{ > return __fwprintf_chk (__stream, 2 - 1, __fmt, > __builtin_va_arg_pack ()); >} > > > > > > > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) >{ > return __vwprintf_chk (2 - 1, __fmt, __ap); >} > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int >vfwprintf (__FILE *__restrict __stream, > const wchar_t *__restrict __fmt, __gnuc_va_list __ap) >{ > return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); >} > > > >extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, > __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); >extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") > > __attribute__ ((__warn_unused_result__)); >extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") > > > __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * >fgetws (wchar_t *__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 __fgetws_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), > __n, __stream); > > if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) > return __fgetws_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), > __n, __stream); > } > return __fgetws_alias (__s, __n, __stream); >} > > >extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, > int __n, __FILE *__restrict __stream) > __attribute__ ((__warn_unused_result__)); >extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") > > > __attribute__ ((__warn_unused_result__)); >extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") > > > > __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * >fgetws_unlocked (wchar_t *__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 __fgetws_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), > __n, __stream); > > if ((size_t) __n > __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t)) > return __fgetws_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1) / sizeof (wchar_t), > __n, __stream); > } > return __fgetws_unlocked_alias (__s, __n, __stream); >} > > > >extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, > mbstate_t *__restrict __p, > size_t __buflen) throw () __attribute__ ((__warn_unused_result__)); >extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcrtomb") > > __attribute__ ((__warn_unused_result__)); > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t >__attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) throw () > >{ > > > > > > > > if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) > return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); > return __wcrtomb_alias (__s, __wchar, __ps); >} > > >extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, > const char **__restrict __src, > size_t __len, mbstate_t *__restrict __ps, > size_t __dstlen) throw (); >extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsrtowcs") > > > > ; >extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsrtowcs_chk") > > > > > __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () > >{ > if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) > { > if (!__builtin_constant_p (__len)) > return __mbsrtowcs_chk (__dst, __src, __len, __ps, > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); > > if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) > return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); > } > return __mbsrtowcs_alias (__dst, __src, __len, __ps); >} > > >extern size_t __wcsrtombs_chk (char *__restrict __dst, > const wchar_t **__restrict __src, > size_t __len, mbstate_t *__restrict __ps, > size_t __dstlen) throw (); >extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsrtombs") > > > > ; >extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsrtombs_chk") > > > > > __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw () > >{ > if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) > { > if (!__builtin_constant_p (__len)) > return __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); > > if (__len > __builtin_object_size (__dst, 2 > 1)) > return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)); > } > return __wcsrtombs_alias (__dst, __src, __len, __ps); >} > > > >extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, > const char **__restrict __src, size_t __nmc, > size_t __len, mbstate_t *__restrict __ps, > size_t __dstlen) throw (); >extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "mbsnrtowcs") > > > > ; >extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__mbsnrtowcs_chk") > > > > > __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) > ; > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw () > >{ > if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) > { > if (!__builtin_constant_p (__len)) > return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); > > if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) > return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); > } > return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps); >} > > >extern size_t __wcsnrtombs_chk (char *__restrict __dst, > const wchar_t **__restrict __src, > size_t __nwc, size_t __len, > mbstate_t *__restrict __ps, size_t __dstlen) > throw (); >extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () __asm__ ("" "wcsnrtombs") > > > > ; >extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) throw () __asm__ ("" "__wcsnrtombs_chk") > > > > > > __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); > >extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t >__attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw () > >{ > if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) > { > if (!__builtin_constant_p (__len)) > return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, > __builtin_object_size (__dst, 2 > 1)); > > if (__len > __builtin_object_size (__dst, 2 > 1)) > return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, > __builtin_object_size (__dst, 2 > 1)); > } > return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps); >} ># 885 "/usr/include/wchar.h" 2 3 4 > > > > > > >} ># 45 "/usr/include/c++/4.8.2/cwchar" 2 3 ># 62 "/usr/include/c++/4.8.2/cwchar" 3 >namespace std >{ > using ::mbstate_t; >} ># 135 "/usr/include/c++/4.8.2/cwchar" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > using ::wint_t; > > using ::btowc; > using ::fgetwc; > using ::fgetws; > using ::fputwc; > using ::fputws; > using ::fwide; > using ::fwprintf; > using ::fwscanf; > using ::getwc; > using ::getwchar; > using ::mbrlen; > using ::mbrtowc; > using ::mbsinit; > using ::mbsrtowcs; > using ::putwc; > using ::putwchar; > > using ::swprintf; > > using ::swscanf; > using ::ungetwc; > using ::vfwprintf; > > using ::vfwscanf; > > > using ::vswprintf; > > > using ::vswscanf; > > using ::vwprintf; > > using ::vwscanf; > > using ::wcrtomb; > using ::wcscat; > using ::wcscmp; > using ::wcscoll; > using ::wcscpy; > using ::wcscspn; > using ::wcsftime; > using ::wcslen; > using ::wcsncat; > using ::wcsncmp; > using ::wcsncpy; > using ::wcsrtombs; > using ::wcsspn; > using ::wcstod; > > using ::wcstof; > > using ::wcstok; > using ::wcstol; > using ::wcstoul; > using ::wcsxfrm; > using ::wctob; > using ::wmemcmp; > using ::wmemcpy; > using ::wmemmove; > using ::wmemset; > using ::wprintf; > using ::wscanf; > using ::wcschr; > using ::wcspbrk; > using ::wcsrchr; > using ::wcsstr; > using ::wmemchr; ># 232 "/usr/include/c++/4.8.2/cwchar" 3 > >} > > > > > > > >namespace __gnu_cxx >{ > > > > > > using ::wcstold; ># 257 "/usr/include/c++/4.8.2/cwchar" 3 > using ::wcstoll; > using ::wcstoull; > >} > >namespace std >{ > using ::__gnu_cxx::wcstold; > using ::__gnu_cxx::wcstoll; > using ::__gnu_cxx::wcstoull; >} ># 41 "/usr/include/c++/4.8.2/bits/postypes.h" 2 3 ># 68 "/usr/include/c++/4.8.2/bits/postypes.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 88 "/usr/include/c++/4.8.2/bits/postypes.h" 3 > typedef long streamoff; ># 98 "/usr/include/c++/4.8.2/bits/postypes.h" 3 > typedef ptrdiff_t streamsize; ># 111 "/usr/include/c++/4.8.2/bits/postypes.h" 3 > template<typename _StateT> > class fpos > { > private: > streamoff _M_off; > _StateT _M_state; > > public: > > > > > fpos() > : _M_off(0), _M_state() { } ># 133 "/usr/include/c++/4.8.2/bits/postypes.h" 3 > fpos(streamoff __off) > : _M_off(__off), _M_state() { } > > > operator streamoff() const { return _M_off; } > > > void > state(_StateT __st) > { _M_state = __st; } > > > _StateT > state() const > { return _M_state; } > > > > > > fpos& > operator+=(streamoff __off) > { > _M_off += __off; > return *this; > } > > > > > > fpos& > operator-=(streamoff __off) > { > _M_off -= __off; > return *this; > } > > > > > > > > fpos > operator+(streamoff __off) const > { > fpos __pos(*this); > __pos += __off; > return __pos; > } > > > > > > > > fpos > operator-(streamoff __off) const > { > fpos __pos(*this); > __pos -= __off; > return __pos; > } > > > > > > > streamoff > operator-(const fpos& __other) const > { return _M_off - __other._M_off; } > }; > > > > > > > template<typename _StateT> > inline bool > operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) > { return streamoff(__lhs) == streamoff(__rhs); } > > template<typename _StateT> > inline bool > operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) > { return streamoff(__lhs) != streamoff(__rhs); } > > > > > > typedef fpos<mbstate_t> streampos; > > typedef fpos<mbstate_t> wstreampos; ># 239 "/usr/include/c++/4.8.2/bits/postypes.h" 3 > >} ># 41 "/usr/include/c++/4.8.2/iosfwd" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 74 "/usr/include/c++/4.8.2/iosfwd" 3 > class ios_base; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ios; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_streambuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_istream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ostream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_iostream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_stringbuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_istringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_ostringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT>, > typename _Alloc = allocator<_CharT> > > class basic_stringstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_filebuf; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ifstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_ofstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class basic_fstream; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class istreambuf_iterator; > > template<typename _CharT, typename _Traits = char_traits<_CharT> > > class ostreambuf_iterator; > > > > typedef basic_ios<char> ios; > > > typedef basic_streambuf<char> streambuf; > > > typedef basic_istream<char> istream; > > > typedef basic_ostream<char> ostream; > > > typedef basic_iostream<char> iostream; > > > typedef basic_stringbuf<char> stringbuf; > > > typedef basic_istringstream<char> istringstream; > > > typedef basic_ostringstream<char> ostringstream; > > > typedef basic_stringstream<char> stringstream; > > > typedef basic_filebuf<char> filebuf; > > > typedef basic_ifstream<char> ifstream; > > > typedef basic_ofstream<char> ofstream; > > > typedef basic_fstream<char> fstream; > > > > typedef basic_ios<wchar_t> wios; > > > typedef basic_streambuf<wchar_t> wstreambuf; > > > typedef basic_istream<wchar_t> wistream; > > > typedef basic_ostream<wchar_t> wostream; > > > typedef basic_iostream<wchar_t> wiostream; > > > typedef basic_stringbuf<wchar_t> wstringbuf; > > > typedef basic_istringstream<wchar_t> wistringstream; > > > typedef basic_ostringstream<wchar_t> wostringstream; > > > typedef basic_stringstream<wchar_t> wstringstream; > > > typedef basic_filebuf<wchar_t> wfilebuf; > > > typedef basic_ifstream<wchar_t> wifstream; > > > typedef basic_ofstream<wchar_t> wofstream; > > > typedef basic_fstream<wchar_t> wfstream; > > > > >} ># 39 "/usr/include/c++/4.8.2/ios" 2 3 > ># 1 "/usr/include/c++/4.8.2/bits/char_traits.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/char_traits.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/char_traits.h" 3 > ># 1 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 1 3 ># 60 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 ># 1 "/usr/include/c++/4.8.2/bits/functexcept.h" 1 3 ># 40 "/usr/include/c++/4.8.2/bits/functexcept.h" 3 ># 1 "/usr/include/c++/4.8.2/bits/exception_defines.h" 1 3 ># 41 "/usr/include/c++/4.8.2/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__)); > > void > __throw_system_error(int) __attribute__((__noreturn__)); > > void > __throw_future_error(int) __attribute__((__noreturn__)); > > > void > __throw_bad_function_call() __attribute__((__noreturn__)); > > >} ># 61 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 2 3 > > ># 1 "/usr/include/c++/4.8.2/ext/numeric_traits.h" 1 3 ># 32 "/usr/include/c++/4.8.2/ext/numeric_traits.h" 3 ># 33 "/usr/include/c++/4.8.2/ext/numeric_traits.h" 3 > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ ># 54 "/usr/include/c++/4.8.2/ext/numeric_traits.h" 3 > template<typename _Value> > struct __numeric_traits_integer > { > > static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0); > static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0); > > > > static const bool __is_signed = ((_Value)(-1) < 0); > static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0)); > }; > > template<typename _Value> > const _Value __numeric_traits_integer<_Value>::__min; > > template<typename _Value> > const _Value __numeric_traits_integer<_Value>::__max; > > template<typename _Value> > const bool __numeric_traits_integer<_Value>::__is_signed; > > template<typename _Value> > const int __numeric_traits_integer<_Value>::__digits; ># 99 "/usr/include/c++/4.8.2/ext/numeric_traits.h" 3 > template<typename _Value> > struct __numeric_traits_floating > { > > static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 113) * 643L / 2136); > > > static const bool __is_signed = true; > static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 33); > static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); > }; > > template<typename _Value> > const int __numeric_traits_floating<_Value>::__max_digits10; > > template<typename _Value> > const bool __numeric_traits_floating<_Value>::__is_signed; > > template<typename _Value> > const int __numeric_traits_floating<_Value>::__digits10; > > template<typename _Value> > const int __numeric_traits_floating<_Value>::__max_exponent10; > > template<typename _Value> > struct __numeric_traits > : public __conditional_type<std::__is_integer<_Value>::__value, > __numeric_traits_integer<_Value>, > __numeric_traits_floating<_Value> >::__type > { }; > > >} ># 64 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_pair.h" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/stl_pair.h" 3 ># 1 "/usr/include/c++/4.8.2/bits/move.h" 1 3 ># 34 "/usr/include/c++/4.8.2/bits/move.h" 3 ># 1 "/usr/include/c++/4.8.2/bits/concept_check.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/concept_check.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/concept_check.h" 3 ># 35 "/usr/include/c++/4.8.2/bits/move.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > > > > template<typename _Tp> > inline _Tp* > __addressof(_Tp& __r) > { > return reinterpret_cast<_Tp*> > (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r))); > } > > >} ># 149 "/usr/include/c++/4.8.2/bits/move.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 164 "/usr/include/c++/4.8.2/bits/move.h" 3 > template<typename _Tp> > inline void > swap(_Tp& __a, _Tp& __b) > > > > > { > > > > _Tp __tmp = (__a); > __a = (__b); > __b = (__tmp); > } > > > > > template<typename _Tp, size_t _Nm> > inline void > swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) > > > > { > for (size_t __n = 0; __n < _Nm; ++__n) > swap(__a[__n], __b[__n]); > } > > > >} ># 60 "/usr/include/c++/4.8.2/bits/stl_pair.h" 2 3 > > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 95 "/usr/include/c++/4.8.2/bits/stl_pair.h" 3 > template<class _T1, class _T2> > struct pair > { > typedef _T1 first_type; > typedef _T2 second_type; > > _T1 first; > _T2 second; > > > > > > pair() > : first(), second() { } > > > pair(const _T1& __a, const _T2& __b) > : first(__a), second(__b) { } > > > > template<class _U1, class _U2> > pair(const pair<_U1, _U2>& __p) > : first(__p.first), second(__p.second) { } ># 209 "/usr/include/c++/4.8.2/bits/stl_pair.h" 3 > }; > > > template<class _T1, class _T2> > inline bool > operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __x.first == __y.first && __x.second == __y.second; } > > > template<class _T1, class _T2> > inline bool > operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __x.first < __y.first > || (!(__y.first < __x.first) && __x.second < __y.second); } > > > template<class _T1, class _T2> > inline bool > operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__x == __y); } > > > template<class _T1, class _T2> > inline bool > operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return __y < __x; } > > > template<class _T1, class _T2> > inline bool > operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__y < __x); } > > > template<class _T1, class _T2> > inline bool > operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) > { return !(__x < __y); } ># 284 "/usr/include/c++/4.8.2/bits/stl_pair.h" 3 > template<class _T1, class _T2> > inline pair<_T1, _T2> > make_pair(_T1 __x, _T2 __y) > { return pair<_T1, _T2>(__x, __y); } > > > > > >} ># 65 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_iterator_base_types.h" 1 3 ># 62 "/usr/include/c++/4.8.2/bits/stl_iterator_base_types.h" 3 ># 63 "/usr/include/c++/4.8.2/bits/stl_iterator_base_types.h" 3 > > > > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 89 "/usr/include/c++/4.8.2/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 { }; ># 116 "/usr/include/c++/4.8.2/bits/stl_iterator_base_types.h" 3 > template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, > typename _Pointer = _Tp*, typename _Reference = _Tp&> > struct iterator > { > > typedef _Category iterator_category; > > typedef _Tp value_type; > > typedef _Distance difference_type; > > typedef _Pointer pointer; > > typedef _Reference reference; > }; ># 162 "/usr/include/c++/4.8.2/bits/stl_iterator_base_types.h" 3 > template<typename _Iterator> > struct iterator_traits > { > typedef typename _Iterator::iterator_category iterator_category; > typedef typename _Iterator::value_type value_type; > typedef typename _Iterator::difference_type difference_type; > typedef typename _Iterator::pointer pointer; > typedef typename _Iterator::reference reference; > }; > > > > template<typename _Tp> > struct iterator_traits<_Tp*> > { > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef _Tp& reference; > }; > > > template<typename _Tp> > struct iterator_traits<const _Tp*> > { > typedef random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef ptrdiff_t difference_type; > typedef const _Tp* pointer; > typedef const _Tp& reference; > }; > > > > > > template<typename _Iter> > inline typename iterator_traits<_Iter>::iterator_category > __iterator_category(const _Iter&) > { return typename iterator_traits<_Iter>::iterator_category(); } > > > > > > template<typename _Iterator, bool _HasBase> > struct _Iter_base > { > typedef _Iterator iterator_type; > static iterator_type _S_base(_Iterator __it) > { return __it; } > }; > > template<typename _Iterator> > struct _Iter_base<_Iterator, true> > { > typedef typename _Iterator::iterator_type iterator_type; > static iterator_type _S_base(_Iterator __it) > { return __it.base(); } > }; ># 232 "/usr/include/c++/4.8.2/bits/stl_iterator_base_types.h" 3 > >} ># 66 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 1 3 ># 62 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 3 ># 63 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 3 > > ># 1 "/usr/include/c++/4.8.2/debug/debug.h" 1 3 ># 46 "/usr/include/c++/4.8.2/debug/debug.h" 3 >namespace std >{ > namespace __debug { } >} > > > > >namespace __gnu_debug >{ > using namespace std::__debug; >} ># 66 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _InputIterator> > inline typename iterator_traits<_InputIterator>::difference_type > __distance(_InputIterator __first, _InputIterator __last, > input_iterator_tag) > { > > > > typename iterator_traits<_InputIterator>::difference_type __n = 0; > while (__first != __last) > { > ++__first; > ++__n; > } > return __n; > } > > template<typename _RandomAccessIterator> > inline typename iterator_traits<_RandomAccessIterator>::difference_type > __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, > random_access_iterator_tag) > { > > > > return __last - __first; > } ># 112 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 3 > template<typename _InputIterator> > inline typename iterator_traits<_InputIterator>::difference_type > distance(_InputIterator __first, _InputIterator __last) > { > > return std::__distance(__first, __last, > std::__iterator_category(__first)); > } > > template<typename _InputIterator, typename _Distance> > inline void > __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) > { > > > ; > while (__n--) > ++__i; > } > > template<typename _BidirectionalIterator, typename _Distance> > inline void > __advance(_BidirectionalIterator& __i, _Distance __n, > bidirectional_iterator_tag) > { > > > > if (__n > 0) > while (__n--) > ++__i; > else > while (__n++) > --__i; > } > > template<typename _RandomAccessIterator, typename _Distance> > inline void > __advance(_RandomAccessIterator& __i, _Distance __n, > random_access_iterator_tag) > { > > > > __i += __n; > } ># 171 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 3 > template<typename _InputIterator, typename _Distance> > inline void > advance(_InputIterator& __i, _Distance __n) > { > > typename iterator_traits<_InputIterator>::difference_type __d = __n; > std::__advance(__i, __d, std::__iterator_category(__i)); > } ># 202 "/usr/include/c++/4.8.2/bits/stl_iterator_base_funcs.h" 3 > >} ># 67 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 1 3 ># 67 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 95 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Iterator> > class reverse_iterator > : public iterator<typename iterator_traits<_Iterator>::iterator_category, > typename iterator_traits<_Iterator>::value_type, > typename iterator_traits<_Iterator>::difference_type, > typename iterator_traits<_Iterator>::pointer, > typename iterator_traits<_Iterator>::reference> > { > protected: > _Iterator current; > > typedef iterator_traits<_Iterator> __traits_type; > > public: > typedef _Iterator iterator_type; > typedef typename __traits_type::difference_type difference_type; > typedef typename __traits_type::pointer pointer; > typedef typename __traits_type::reference reference; > > > > > > > > reverse_iterator() : current() { } > > > > > explicit > reverse_iterator(iterator_type __x) : current(__x) { } > > > > > reverse_iterator(const reverse_iterator& __x) > : current(__x.current) { } > > > > > > template<typename _Iter> > reverse_iterator(const reverse_iterator<_Iter>& __x) > : current(__x.base()) { } > > > > > iterator_type > base() const > { return current; } ># 159 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > 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); } > }; ># 289 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Iterator> > inline bool > operator==(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __x.base() == __y.base(); } > > template<typename _Iterator> > inline bool > operator<(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y.base() < __x.base(); } > > template<typename _Iterator> > inline bool > operator!=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__x == __y); } > > template<typename _Iterator> > inline bool > operator>(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y < __x; } > > template<typename _Iterator> > inline bool > operator<=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__y < __x); } > > template<typename _Iterator> > inline bool > operator>=(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return !(__x < __y); } > > template<typename _Iterator> > inline typename reverse_iterator<_Iterator>::difference_type > operator-(const reverse_iterator<_Iterator>& __x, > const reverse_iterator<_Iterator>& __y) > { return __y.base() - __x.base(); } > > template<typename _Iterator> > inline reverse_iterator<_Iterator> > operator+(typename reverse_iterator<_Iterator>::difference_type __n, > const reverse_iterator<_Iterator>& __x) > { return reverse_iterator<_Iterator>(__x.base() - __n); } > > > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator==(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __x.base() == __y.base(); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator<(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __y.base() < __x.base(); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator!=(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return !(__x == __y); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator>(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return __y < __x; } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator<=(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return !(__y < __x); } > > template<typename _IteratorL, typename _IteratorR> > inline bool > operator>=(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > { return !(__x < __y); } > > template<typename _IteratorL, typename _IteratorR> > > > > > > > > inline typename reverse_iterator<_IteratorL>::difference_type > operator-(const reverse_iterator<_IteratorL>& __x, > const reverse_iterator<_IteratorR>& __y) > > { return __y.base() - __x.base(); } ># 401 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Container> > class back_insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > > public: > > typedef _Container container_type; > > > explicit > back_insert_iterator(_Container& __x) : container(&__x) { } ># 428 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > back_insert_iterator& > operator=(typename _Container::const_reference __value) > { > container->push_back(__value); > return *this; > } ># 451 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > back_insert_iterator& > operator*() > { return *this; } > > > back_insert_iterator& > operator++() > { return *this; } > > > back_insert_iterator > operator++(int) > { return *this; } > }; ># 477 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Container> > inline back_insert_iterator<_Container> > back_inserter(_Container& __x) > { return back_insert_iterator<_Container>(__x); } ># 492 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Container> > class front_insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > > public: > > typedef _Container container_type; > > > explicit front_insert_iterator(_Container& __x) : container(&__x) { } ># 518 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > front_insert_iterator& > operator=(typename _Container::const_reference __value) > { > container->push_front(__value); > return *this; > } ># 541 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > front_insert_iterator& > operator*() > { return *this; } > > > front_insert_iterator& > operator++() > { return *this; } > > > front_insert_iterator > operator++(int) > { return *this; } > }; ># 567 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Container> > inline front_insert_iterator<_Container> > front_inserter(_Container& __x) > { return front_insert_iterator<_Container>(__x); } ># 586 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Container> > class insert_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _Container* container; > typename _Container::iterator iter; > > public: > > typedef _Container container_type; > > > > > > insert_iterator(_Container& __x, typename _Container::iterator __i) > : container(&__x), iter(__i) {} ># 629 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > insert_iterator& > operator=(typename _Container::const_reference __value) > { > iter = container->insert(iter, __value); > ++iter; > return *this; > } ># 655 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > insert_iterator& > operator*() > { return *this; } > > > insert_iterator& > operator++() > { return *this; } > > > insert_iterator& > operator++(int) > { return *this; } > }; ># 681 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _Container, typename _Iterator> > inline insert_iterator<_Container> > inserter(_Container& __x, _Iterator __i) > { > return insert_iterator<_Container>(__x, > typename _Container::iterator(__i)); > } > > > > >} > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ ># 705 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > using std::iterator_traits; > using std::iterator; > template<typename _Iterator, typename _Container> > class __normal_iterator > { > protected: > _Iterator _M_current; > > typedef iterator_traits<_Iterator> __traits_type; > > public: > typedef _Iterator iterator_type; > typedef typename __traits_type::iterator_category iterator_category; > typedef typename __traits_type::value_type value_type; > typedef typename __traits_type::difference_type difference_type; > typedef typename __traits_type::reference reference; > typedef typename __traits_type::pointer pointer; > > __normal_iterator() : _M_current(_Iterator()) { } > > explicit > __normal_iterator(const _Iterator& __i) : _M_current(__i) { } > > > template<typename _Iter> > __normal_iterator(const __normal_iterator<_Iter, > typename __enable_if< > (std::__are_same<_Iter, typename _Container::pointer>::__value), > _Container>::__type>& __i) > : _M_current(__i.base()) { } > > > reference > operator*() const > { return *_M_current; } > > pointer > operator->() const > { return _M_current; } > > __normal_iterator& > operator++() > { > ++_M_current; > return *this; > } > > __normal_iterator > operator++(int) > { return __normal_iterator(_M_current++); } > > > __normal_iterator& > operator--() > { > --_M_current; > return *this; > } > > __normal_iterator > operator--(int) > { return __normal_iterator(_M_current--); } > > > reference > operator[](const difference_type& __n) const > { return _M_current[__n]; } > > __normal_iterator& > operator+=(const difference_type& __n) > { _M_current += __n; return *this; } > > __normal_iterator > operator+(const difference_type& __n) const > { return __normal_iterator(_M_current + __n); } > > __normal_iterator& > operator-=(const difference_type& __n) > { _M_current -= __n; return *this; } > > __normal_iterator > operator-(const difference_type& __n) const > { return __normal_iterator(_M_current - __n); } > > const _Iterator& > base() const > { return _M_current; } > }; ># 803 "/usr/include/c++/4.8.2/bits/stl_iterator.h" 3 > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() == __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator==(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() == __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() != __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() != __rhs.base(); } > > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() < __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator<(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() < __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() > __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator>(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() > __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() <= __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() <= __rhs.base(); } > > template<typename _IteratorL, typename _IteratorR, typename _Container> > inline bool > operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > { return __lhs.base() >= __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline bool > operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() >= __rhs.base(); } > > > > > > template<typename _IteratorL, typename _IteratorR, typename _Container> > > > > > > > > inline typename __normal_iterator<_IteratorL, _Container>::difference_type > operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, > const __normal_iterator<_IteratorR, _Container>& __rhs) > > { return __lhs.base() - __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline typename __normal_iterator<_Iterator, _Container>::difference_type > operator-(const __normal_iterator<_Iterator, _Container>& __lhs, > const __normal_iterator<_Iterator, _Container>& __rhs) > { return __lhs.base() - __rhs.base(); } > > template<typename _Iterator, typename _Container> > inline __normal_iterator<_Iterator, _Container> > operator+(typename __normal_iterator<_Iterator, _Container>::difference_type > __n, const __normal_iterator<_Iterator, _Container>& __i) > { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } > > >} ># 68 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 2 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > > > template<bool _BoolType> > struct __iter_swap > { > template<typename _ForwardIterator1, typename _ForwardIterator2> > static void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > typedef typename iterator_traits<_ForwardIterator1>::value_type > _ValueType1; > _ValueType1 __tmp = (*__a); > *__a = (*__b); > *__b = (__tmp); > } > }; > > template<> > struct __iter_swap<true> > { > template<typename _ForwardIterator1, typename _ForwardIterator2> > static void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > swap(*__a, *__b); > } > }; ># 117 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > inline void > iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) > { > > > > > > > > typedef typename iterator_traits<_ForwardIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_ForwardIterator2>::value_type > _ValueType2; > > > > > > > typedef typename iterator_traits<_ForwardIterator1>::reference > _ReferenceType1; > typedef typename iterator_traits<_ForwardIterator2>::reference > _ReferenceType2; > std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value > && __are_same<_ValueType1&, _ReferenceType1>::__value > && __are_same<_ValueType2&, _ReferenceType2>::__value>:: > iter_swap(__a, __b); > > > > } ># 163 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator2 > swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2) > { > > > > > > ; > > for (; __first1 != __last1; ++__first1, ++__first2) > std::iter_swap(__first1, __first2); > return __first2; > } ># 191 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _Tp> > inline const _Tp& > min(const _Tp& __a, const _Tp& __b) > { > > > > if (__b < __a) > return __b; > return __a; > } ># 214 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _Tp> > inline const _Tp& > max(const _Tp& __a, const _Tp& __b) > { > > > > if (__a < __b) > return __b; > return __a; > } ># 237 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > min(const _Tp& __a, const _Tp& __b, _Compare __comp) > { > > if (__comp(__b, __a)) > return __b; > return __a; > } ># 258 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _Tp, typename _Compare> > inline const _Tp& > max(const _Tp& __a, const _Tp& __b, _Compare __comp) > { > > if (__comp(__a, __b)) > return __b; > return __a; > } > > > > template<typename _Iterator> > struct _Niter_base > : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> > { }; > > template<typename _Iterator> > inline typename _Niter_base<_Iterator>::iterator_type > __niter_base(_Iterator __it) > { return std::_Niter_base<_Iterator>::_S_base(__it); } > > > template<typename _Iterator> > struct _Miter_base > : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value> > { }; > > template<typename _Iterator> > inline typename _Miter_base<_Iterator>::iterator_type > __miter_base(_Iterator __it) > { return std::_Miter_base<_Iterator>::_S_base(__it); } > > > > > > > > template<bool, bool, typename> > struct __copy_move > { > template<typename _II, typename _OI> > static _OI > __copy_m(_II __first, _II __last, _OI __result) > { > for (; __first != __last; ++__result, ++__first) > *__result = *__first; > return __result; > } > }; ># 325 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<> > struct __copy_move<false, false, random_access_iterator_tag> > { > template<typename _II, typename _OI> > static _OI > __copy_m(_II __first, _II __last, _OI __result) > { > typedef typename iterator_traits<_II>::difference_type _Distance; > for(_Distance __n = __last - __first; __n > 0; --__n) > { > *__result = *__first; > ++__first; > ++__result; > } > return __result; > } > }; ># 363 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<bool _IsMove> > struct __copy_move<_IsMove, true, random_access_iterator_tag> > { > template<typename _Tp> > static _Tp* > __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > const ptrdiff_t _Num = __last - __first; > if (_Num) > __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); > return __result + _Num; > } > }; > > template<bool _IsMove, typename _II, typename _OI> > inline _OI > __copy_move_a(_II __first, _II __last, _OI __result) > { > typedef typename iterator_traits<_II>::value_type _ValueTypeI; > typedef typename iterator_traits<_OI>::value_type _ValueTypeO; > typedef typename iterator_traits<_II>::iterator_category _Category; > const bool __simple = (__is_trivial(_ValueTypeI) > && __is_pointer<_II>::__value > && __is_pointer<_OI>::__value > && __are_same<_ValueTypeI, _ValueTypeO>::__value); > > return std::__copy_move<_IsMove, __simple, > _Category>::__copy_m(__first, __last, __result); > } > > > > template<typename _CharT> > struct char_traits; > > template<typename _CharT, typename _Traits> > class istreambuf_iterator; > > template<typename _CharT, typename _Traits> > class ostreambuf_iterator; > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type > __copy_move_a2(_CharT*, _CharT*, > ostreambuf_iterator<_CharT, char_traits<_CharT> >); > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type > __copy_move_a2(const _CharT*, const _CharT*, > ostreambuf_iterator<_CharT, char_traits<_CharT> >); > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > _CharT*>::__type > __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, > istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); > > template<bool _IsMove, typename _II, typename _OI> > inline _OI > __copy_move_a2(_II __first, _II __last, _OI __result) > { > return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), > std::__niter_base(__last), > std::__niter_base(__result))); > } ># 448 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _II, typename _OI> > inline _OI > copy(_II __first, _II __last, _OI __result) > { > > > > > ; > > return (std::__copy_move_a2<__is_move_iterator<_II>::__value> > (std::__miter_base(__first), std::__miter_base(__last), > __result)); > } ># 500 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<bool, bool, typename> > struct __copy_move_backward > { > template<typename _BI1, typename _BI2> > static _BI2 > __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) > { > while (__first != __last) > *--__result = *--__last; > return __result; > } > }; ># 528 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<> > struct __copy_move_backward<false, false, random_access_iterator_tag> > { > template<typename _BI1, typename _BI2> > static _BI2 > __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) > { > typename iterator_traits<_BI1>::difference_type __n; > for (__n = __last - __first; __n > 0; --__n) > *--__result = *--__last; > return __result; > } > }; ># 558 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<bool _IsMove> > struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> > { > template<typename _Tp> > static _Tp* > __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) > { > const ptrdiff_t _Num = __last - __first; > if (_Num) > __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); > return __result - _Num; > } > }; > > template<bool _IsMove, typename _BI1, typename _BI2> > inline _BI2 > __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) > { > typedef typename iterator_traits<_BI1>::value_type _ValueType1; > typedef typename iterator_traits<_BI2>::value_type _ValueType2; > typedef typename iterator_traits<_BI1>::iterator_category _Category; > const bool __simple = (__is_trivial(_ValueType1) > && __is_pointer<_BI1>::__value > && __is_pointer<_BI2>::__value > && __are_same<_ValueType1, _ValueType2>::__value); > > return std::__copy_move_backward<_IsMove, __simple, > _Category>::__copy_move_b(__first, > __last, > __result); > } > > template<bool _IsMove, typename _BI1, typename _BI2> > inline _BI2 > __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) > { > return _BI2(std::__copy_move_backward_a<_IsMove> > (std::__niter_base(__first), std::__niter_base(__last), > std::__niter_base(__result))); > } ># 617 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _BI1, typename _BI2> > inline _BI2 > copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) > { > > > > > > > ; > > return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> > (std::__miter_base(__first), std::__miter_base(__last), > __result)); > } ># 675 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _ForwardIterator, typename _Tp> > inline typename > __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type > __fill_a(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > for (; __first != __last; ++__first) > *__first = __value; > } > > template<typename _ForwardIterator, typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type > __fill_a(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > const _Tp __tmp = __value; > for (; __first != __last; ++__first) > *__first = __tmp; > } > > > template<typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type > __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) > { > const _Tp __tmp = __c; > __builtin_memset(__first, static_cast<unsigned char>(__tmp), > __last - __first); > } ># 719 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _ForwardIterator, typename _Tp> > inline void > fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) > { > > > > ; > > std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), > __value); > } > > template<typename _OutputIterator, typename _Size, typename _Tp> > inline typename > __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type > __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) > { > for (__decltype(__n + 0) __niter = __n; > __niter > 0; --__niter, ++__first) > *__first = __value; > return __first; > } > > template<typename _OutputIterator, typename _Size, typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type > __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) > { > const _Tp __tmp = __value; > for (__decltype(__n + 0) __niter = __n; > __niter > 0; --__niter, ++__first) > *__first = __tmp; > return __first; > } > > template<typename _Size, typename _Tp> > inline typename > __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type > __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) > { > std::__fill_a(__first, __first + __n, __c); > return __first + __n; > } ># 779 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _OI, typename _Size, typename _Tp> > inline _OI > fill_n(_OI __first, _Size __n, const _Tp& __value) > { > > > > return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); > } > > template<bool _BoolType> > struct __equal > { > template<typename _II1, typename _II2> > static bool > equal(_II1 __first1, _II1 __last1, _II2 __first2) > { > for (; __first1 != __last1; ++__first1, ++__first2) > if (!(*__first1 == *__first2)) > return false; > return true; > } > }; > > template<> > struct __equal<true> > { > template<typename _Tp> > static bool > equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) > { > return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) > * (__last1 - __first1)); > } > }; > > template<typename _II1, typename _II2> > inline bool > __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) > { > typedef typename iterator_traits<_II1>::value_type _ValueType1; > typedef typename iterator_traits<_II2>::value_type _ValueType2; > const bool __simple = ((__is_integer<_ValueType1>::__value > || __is_pointer<_ValueType1>::__value) > && __is_pointer<_II1>::__value > && __is_pointer<_II2>::__value > && __are_same<_ValueType1, _ValueType2>::__value); > > return std::__equal<__simple>::equal(__first1, __last1, __first2); > } > > > template<typename, typename> > struct __lc_rai > { > template<typename _II1, typename _II2> > static _II1 > __newlast1(_II1, _II1 __last1, _II2, _II2) > { return __last1; } > > template<typename _II> > static bool > __cnd2(_II __first, _II __last) > { return __first != __last; } > }; > > template<> > struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag> > { > template<typename _RAI1, typename _RAI2> > static _RAI1 > __newlast1(_RAI1 __first1, _RAI1 __last1, > _RAI2 __first2, _RAI2 __last2) > { > const typename iterator_traits<_RAI1>::difference_type > __diff1 = __last1 - __first1; > const typename iterator_traits<_RAI2>::difference_type > __diff2 = __last2 - __first2; > return __diff2 < __diff1 ? __first1 + __diff2 : __last1; > } > > template<typename _RAI> > static bool > __cnd2(_RAI, _RAI) > { return true; } > }; > > template<bool _BoolType> > struct __lexicographical_compare > { > template<typename _II1, typename _II2> > static bool __lc(_II1, _II1, _II2, _II2); > }; > > template<bool _BoolType> > template<typename _II1, typename _II2> > bool > __lexicographical_compare<_BoolType>:: > __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) > { > typedef typename iterator_traits<_II1>::iterator_category _Category1; > typedef typename iterator_traits<_II2>::iterator_category _Category2; > typedef std::__lc_rai<_Category1, _Category2> __rai_type; > > __last1 = __rai_type::__newlast1(__first1, __last1, > __first2, __last2); > for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); > ++__first1, ++__first2) > { > if (*__first1 < *__first2) > return true; > if (*__first2 < *__first1) > return false; > } > return __first1 == __last1 && __first2 != __last2; > } > > template<> > struct __lexicographical_compare<true> > { > template<typename _Tp, typename _Up> > static bool > __lc(const _Tp* __first1, const _Tp* __last1, > const _Up* __first2, const _Up* __last2) > { > const size_t __len1 = __last1 - __first1; > const size_t __len2 = __last2 - __first2; > const int __result = __builtin_memcmp(__first1, __first2, > std::min(__len1, __len2)); > return __result != 0 ? __result < 0 : __len1 < __len2; > } > }; > > template<typename _II1, typename _II2> > inline bool > __lexicographical_compare_aux(_II1 __first1, _II1 __last1, > _II2 __first2, _II2 __last2) > { > typedef typename iterator_traits<_II1>::value_type _ValueType1; > typedef typename iterator_traits<_II2>::value_type _ValueType2; > const bool __simple = > (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value > && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed > && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed > && __is_pointer<_II1>::__value > && __is_pointer<_II2>::__value); > > return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, > __first2, __last2); > } ># 941 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _ForwardIterator, typename _Tp> > _ForwardIterator > lower_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > > > > > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > > while (__len > 0) > { > _DistanceType __half = __len >> 1; > _ForwardIterator __middle = __first; > std::advance(__middle, __half); > if (*__middle < __val) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else > __len = __half; > } > return __first; > } > > > > inline int > __lg(int __n) > { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } > > inline unsigned > __lg(unsigned __n) > { return sizeof(int) * 8 - 1 - __builtin_clz(__n); } > > inline long > __lg(long __n) > { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } > > inline unsigned long > __lg(unsigned long __n) > { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); } > > inline long long > __lg(long long __n) > { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } > > inline unsigned long long > __lg(unsigned long long __n) > { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } ># 1019 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _II1, typename _II2> > inline bool > equal(_II1 __first1, _II1 __last1, _II2 __first2) > { > > > > > > > ; > > return std::__equal_aux(std::__niter_base(__first1), > std::__niter_base(__last1), > std::__niter_base(__first2)); > } ># 1051 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> > inline bool > equal(_IIter1 __first1, _IIter1 __last1, > _IIter2 __first2, _BinaryPredicate __binary_pred) > { > > > > ; > > for (; __first1 != __last1; ++__first1, ++__first2) > if (!bool(__binary_pred(*__first1, *__first2))) > return false; > return true; > } ># 1082 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _II1, typename _II2> > inline bool > lexicographical_compare(_II1 __first1, _II1 __last1, > _II2 __first2, _II2 __last2) > { ># 1096 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > ; > ; > > return std::__lexicographical_compare_aux(std::__niter_base(__first1), > std::__niter_base(__last1), > std::__niter_base(__first2), > std::__niter_base(__last2)); > } ># 1118 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _II1, typename _II2, typename _Compare> > bool > lexicographical_compare(_II1 __first1, _II1 __last1, > _II2 __first2, _II2 __last2, _Compare __comp) > { > typedef typename iterator_traits<_II1>::iterator_category _Category1; > typedef typename iterator_traits<_II2>::iterator_category _Category2; > typedef std::__lc_rai<_Category1, _Category2> __rai_type; > > > > > ; > ; > > __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); > for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); > ++__first1, ++__first2) > { > if (__comp(*__first1, *__first2)) > return true; > if (__comp(*__first2, *__first1)) > return false; > } > return __first1 == __last1 && __first2 != __last2; > } ># 1158 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > pair<_InputIterator1, _InputIterator2> > mismatch(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2) > { > > > > > > > ; > > while (__first1 != __last1 && *__first1 == *__first2) > { > ++__first1; > ++__first2; > } > return pair<_InputIterator1, _InputIterator2>(__first1, __first2); > } ># 1195 "/usr/include/c++/4.8.2/bits/stl_algobase.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _BinaryPredicate> > pair<_InputIterator1, _InputIterator2> > mismatch(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _BinaryPredicate __binary_pred) > { > > > > ; > > while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2))) > { > ++__first1; > ++__first2; > } > return pair<_InputIterator1, _InputIterator2>(__first1, __first2); > } > > >} ># 40 "/usr/include/c++/4.8.2/bits/char_traits.h" 2 3 > ># 1 "/usr/include/c++/4.8.2/cwchar" 1 3 ># 39 "/usr/include/c++/4.8.2/cwchar" 3 ># 40 "/usr/include/c++/4.8.2/cwchar" 3 > > > > ># 1 "/usr/include/wchar.h" 1 3 4 ># 45 "/usr/include/c++/4.8.2/cwchar" 2 3 ># 42 "/usr/include/c++/4.8.2/bits/char_traits.h" 2 3 > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ ># 57 "/usr/include/c++/4.8.2/bits/char_traits.h" 3 > template<typename _CharT> > struct _Char_types > { > typedef unsigned long int_type; > typedef std::streampos pos_type; > typedef std::streamoff off_type; > typedef std::mbstate_t state_type; > }; ># 82 "/usr/include/c++/4.8.2/bits/char_traits.h" 3 > template<typename _CharT> > struct char_traits > { > typedef _CharT char_type; > typedef typename _Char_types<_CharT>::int_type int_type; > typedef typename _Char_types<_CharT>::pos_type pos_type; > typedef typename _Char_types<_CharT>::off_type off_type; > typedef typename _Char_types<_CharT>::state_type state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, std::size_t __n); > > static std::size_t > length(const char_type* __s); > > static const char_type* > find(const char_type* __s, std::size_t __n, const char_type& __a); > > static char_type* > move(char_type* __s1, const char_type* __s2, std::size_t __n); > > static char_type* > copy(char_type* __s1, const char_type* __s2, std::size_t __n); > > static char_type* > assign(char_type* __s, std::size_t __n, char_type __a); > > static char_type > to_char_type(const int_type& __c) > { return static_cast<char_type>(__c); } > > static int_type > to_int_type(const char_type& __c) > { return static_cast<int_type>(__c); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() > { return static_cast<int_type>(-1); } > > static int_type > not_eof(const int_type& __c) > { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } > }; > > template<typename _CharT> > int > char_traits<_CharT>:: > compare(const char_type* __s1, const char_type* __s2, std::size_t __n) > { > for (std::size_t __i = 0; __i < __n; ++__i) > if (lt(__s1[__i], __s2[__i])) > return -1; > else if (lt(__s2[__i], __s1[__i])) > return 1; > return 0; > } > > template<typename _CharT> > std::size_t > char_traits<_CharT>:: > length(const char_type* __p) > { > std::size_t __i = 0; > while (!eq(__p[__i], char_type())) > ++__i; > return __i; > } > > template<typename _CharT> > const typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > find(const char_type* __s, std::size_t __n, const char_type& __a) > { > for (std::size_t __i = 0; __i < __n; ++__i) > if (eq(__s[__i], __a)) > return __s + __i; > return 0; > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > move(char_type* __s1, const char_type* __s2, std::size_t __n) > { > return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, > __n * sizeof(char_type))); > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > copy(char_type* __s1, const char_type* __s2, std::size_t __n) > { > > std::copy(__s2, __s2 + __n, __s1); > return __s1; > } > > template<typename _CharT> > typename char_traits<_CharT>::char_type* > char_traits<_CharT>:: > assign(char_type* __s, std::size_t __n, char_type __a) > { > > std::fill_n(__s, __n, __a); > return __s; > } > > >} > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 226 "/usr/include/c++/4.8.2/bits/char_traits.h" 3 > template<class _CharT> > struct char_traits : public __gnu_cxx::char_traits<_CharT> > { }; > > > > template<> > struct char_traits<char> > { > typedef char char_type; > typedef int int_type; > typedef streampos pos_type; > typedef streamoff off_type; > typedef mbstate_t state_type; > > static void > assign(char_type& __c1, const char_type& __c2) > { __c1 = __c2; } > > static bool > eq(const char_type& __c1, const char_type& __c2) > { return __c1 == __c2; } > > static bool > lt(const char_type& __c1, const char_type& __c2) > { return __c1 < __c2; } > > static int > compare(const char_type* __s1, const char_type* __s2, size_t __n) > { return __builtin_memcmp(__s1, __s2, __n); } > > static size_t > length(const char_type* __s) > { return __builtin_strlen(__s); } > > static const char_type* > find(const char_type* __s, size_t __n, const char_type& __a) > { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); } > > static char_type* > move(char_type* __s1, const char_type* __s2, size_t __n) > { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); } > > static char_type* > copy(char_type* __s1, const char_type* __s2, size_t __n) > { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); } > > static char_type* > assign(char_type* __s, size_t __n, char_type __a) > { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); } > > static char_type > to_char_type(const int_type& __c) > { return static_cast<char_type>(__c); } > > > > static int_type > to_int_type(const char_type& __c) > { return static_cast<int_type>(static_cast<unsigned char>(__c)); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() > { return static_cast<int_type>(-1); } > > static int_type > not_eof(const int_type& __c) > { return (__c == eof()) ? 0 : __c; } > }; > > > > > template<> > struct char_traits<wchar_t> > { > typedef wchar_t char_type; > typedef wint_t int_type; > typedef streamoff off_type; > typedef wstreampos pos_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 wmemcmp(__s1, __s2, __n); } > > static size_t > length(const char_type* __s) > { return wcslen(__s); } > > static const char_type* > find(const char_type* __s, size_t __n, const char_type& __a) > { return wmemchr(__s, __a, __n); } > > static char_type* > move(char_type* __s1, const char_type* __s2, size_t __n) > { return wmemmove(__s1, __s2, __n); } > > static char_type* > copy(char_type* __s1, const char_type* __s2, size_t __n) > { return wmemcpy(__s1, __s2, __n); } > > static char_type* > assign(char_type* __s, size_t __n, char_type __a) > { return wmemset(__s, __a, __n); } > > static char_type > to_char_type(const int_type& __c) > { return char_type(__c); } > > static int_type > to_int_type(const char_type& __c) > { return int_type(__c); } > > static bool > eq_int_type(const int_type& __c1, const int_type& __c2) > { return __c1 == __c2; } > > static int_type > eof() > { return static_cast<int_type>((0xffffffffu)); } > > static int_type > not_eof(const int_type& __c) > { return eq_int_type(__c, eof()) ? 0 : __c; } > }; > > > >} ># 41 "/usr/include/c++/4.8.2/ios" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/localefwd.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/localefwd.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/localefwd.h" 3 > > ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++locale.h" 1 3 ># 39 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++locale.h" 3 ># 40 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++locale.h" 3 > ># 1 "/usr/include/c++/4.8.2/clocale" 1 3 ># 39 "/usr/include/c++/4.8.2/clocale" 3 ># 40 "/usr/include/c++/4.8.2/clocale" 3 > > ># 1 "/usr/include/locale.h" 1 3 4 ># 29 "/usr/include/locale.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 30 "/usr/include/locale.h" 2 3 4 ># 1 "/usr/include/bits/locale.h" 1 3 4 ># 31 "/usr/include/locale.h" 2 3 4 > >extern "C" { ># 51 "/usr/include/locale.h" 3 4 > > > >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 "/usr/include/locale.h" 3 4 >}; > > > >extern char *setlocale (int __category, const char *__locale) throw (); > > >extern struct lconv *localeconv (void) throw (); ># 152 "/usr/include/locale.h" 3 4 >extern __locale_t newlocale (int __category_mask, const char *__locale, > __locale_t __base) throw (); ># 187 "/usr/include/locale.h" 3 4 >extern __locale_t duplocale (__locale_t __dataset) throw (); > > > >extern void freelocale (__locale_t __dataset) throw (); > > > > > > >extern __locale_t uselocale (__locale_t __dataset) throw (); > > > > > > > >} ># 43 "/usr/include/c++/4.8.2/clocale" 2 3 ># 51 "/usr/include/c++/4.8.2/clocale" 3 >namespace std >{ > using ::lconv; > using ::setlocale; > using ::localeconv; >} ># 42 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++locale.h" 2 3 > > > > > > >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ > > > extern "C" __typeof(uselocale) __uselocale; > > >} > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > typedef __locale_t __c_locale; > > > > > > inline int > __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), > char* __out, > const int __size __attribute__ ((__unused__)), > const char* __fmt, ...) > { > > __c_locale __old = __gnu_cxx::__uselocale(__cloc); ># 88 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++locale.h" 3 > __builtin_va_list __args; > __builtin_va_start(__args, __fmt); > > > const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); > > > > > __builtin_va_end(__args); > > > __gnu_cxx::__uselocale(__old); > > > > > > > > return __ret; > } > > >} ># 41 "/usr/include/c++/4.8.2/bits/localefwd.h" 2 3 > ># 1 "/usr/include/c++/4.8.2/cctype" 1 3 ># 39 "/usr/include/c++/4.8.2/cctype" 3 ># 40 "/usr/include/c++/4.8.2/cctype" 3 > > ># 1 "/usr/include/ctype.h" 1 3 4 ># 29 "/usr/include/ctype.h" 3 4 >extern "C" { ># 47 "/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)) >}; ># 80 "/usr/include/ctype.h" 3 4 >extern const unsigned short int **__ctype_b_loc (void) > throw () __attribute__ ((__const__)); >extern const __int32_t **__ctype_tolower_loc (void) > throw () __attribute__ ((__const__)); >extern const __int32_t **__ctype_toupper_loc (void) > throw () __attribute__ ((__const__)); ># 105 "/usr/include/ctype.h" 3 4 > > > > > > >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 (); ># 137 "/usr/include/ctype.h" 3 4 >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 (); ># 272 "/usr/include/ctype.h" 3 4 >extern int isalnum_l (int, __locale_t) throw (); >extern int isalpha_l (int, __locale_t) throw (); >extern int iscntrl_l (int, __locale_t) throw (); >extern int isdigit_l (int, __locale_t) throw (); >extern int islower_l (int, __locale_t) throw (); >extern int isgraph_l (int, __locale_t) throw (); >extern int isprint_l (int, __locale_t) throw (); >extern int ispunct_l (int, __locale_t) throw (); >extern int isspace_l (int, __locale_t) throw (); >extern int isupper_l (int, __locale_t) throw (); >extern int isxdigit_l (int, __locale_t) throw (); > >extern int isblank_l (int, __locale_t) throw (); > > > >extern int __tolower_l (int __c, __locale_t __l) throw (); >extern int tolower_l (int __c, __locale_t __l) throw (); > > >extern int __toupper_l (int __c, __locale_t __l) throw (); >extern int toupper_l (int __c, __locale_t __l) throw (); ># 348 "/usr/include/ctype.h" 3 4 >} ># 43 "/usr/include/c++/4.8.2/cctype" 2 3 ># 62 "/usr/include/c++/4.8.2/cctype" 3 >namespace std >{ > 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; >} ># 43 "/usr/include/c++/4.8.2/bits/localefwd.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 55 "/usr/include/c++/4.8.2/bits/localefwd.h" 3 > class locale; > > template<typename _Facet> > bool > has_facet(const locale&) throw(); > > template<typename _Facet> > const _Facet& > use_facet(const locale&); > > > template<typename _CharT> > bool > isspace(_CharT, const locale&); > > template<typename _CharT> > bool > isprint(_CharT, const locale&); > > template<typename _CharT> > bool > iscntrl(_CharT, const locale&); > > template<typename _CharT> > bool > isupper(_CharT, const locale&); > > template<typename _CharT> > bool > islower(_CharT, const locale&); > > template<typename _CharT> > bool > isalpha(_CharT, const locale&); > > template<typename _CharT> > bool > isdigit(_CharT, const locale&); > > template<typename _CharT> > bool > ispunct(_CharT, const locale&); > > template<typename _CharT> > bool > isxdigit(_CharT, const locale&); > > template<typename _CharT> > bool > isalnum(_CharT, const locale&); > > template<typename _CharT> > bool > isgraph(_CharT, const locale&); > > template<typename _CharT> > _CharT > toupper(_CharT, const locale&); > > template<typename _CharT> > _CharT > tolower(_CharT, const locale&); > > > class ctype_base; > template<typename _CharT> > class ctype; > template<> class ctype<char>; > > template<> class ctype<wchar_t>; > > template<typename _CharT> > class ctype_byname; > > > class codecvt_base; > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt; > template<> class codecvt<char, char, mbstate_t>; > > template<> class codecvt<wchar_t, char, mbstate_t>; > > template<typename _InternT, typename _ExternT, typename _StateT> > class codecvt_byname; > > > > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class num_get; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class num_put; > > template<typename _CharT> class numpunct; > template<typename _CharT> class numpunct_byname; > > > template<typename _CharT> > class collate; > template<typename _CharT> class > collate_byname; > > > class time_base; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class time_get; > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class time_get_byname; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class time_put; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class time_put_byname; > > > class money_base; > > template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > > class money_get; > template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > > class money_put; > > template<typename _CharT, bool _Intl = false> > class moneypunct; > template<typename _CharT, bool _Intl = false> > class moneypunct_byname; > > > class messages_base; > template<typename _CharT> > class messages; > template<typename _CharT> > class messages_byname; > > >} ># 42 "/usr/include/c++/4.8.2/ios" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/ios_base.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > ># 1 "/usr/include/c++/4.8.2/ext/atomicity.h" 1 3 ># 32 "/usr/include/c++/4.8.2/ext/atomicity.h" 3 ># 33 "/usr/include/c++/4.8.2/ext/atomicity.h" 3 > > ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr.h" 1 3 ># 30 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr.h" 3 >#pragma GCC visibility push(default) ># 148 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr.h" 3 ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr-default.h" 1 3 ># 47 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr-default.h" 3 >typedef pthread_t __gthread_t; >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; >typedef struct timespec __gthread_time_t; ># 101 "/usr/include/c++/4.8.2/aarch64-redhat-linux/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_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join"))); >static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal"))); >static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self"))); >static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach"))); > >static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel"))); > >static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield"))); > >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_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock"))); > >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_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy"))); > >static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init"))); >static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast"))); >static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal"))); >static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait"))); >static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait"))); >static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy"))); > >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"))); ># 236 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr-default.h" 3 >static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create"))); ># 246 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr-default.h" 3 >static inline int >__gthread_active_p (void) >{ > static void *const __gthread_active_ptr > = __extension__ (void *) &__gthrw___pthread_key_create; > return __gthread_active_ptr != 0; >} ># 658 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr-default.h" 3 >static inline int >__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), > void *__args) >{ > return __gthrw_pthread_create (__threadid, __null, __func, __args); >} > >static inline int >__gthread_join (__gthread_t __threadid, void **__value_ptr) >{ > return __gthrw_pthread_join (__threadid, __value_ptr); >} > >static inline int >__gthread_detach (__gthread_t __threadid) >{ > return __gthrw_pthread_detach (__threadid); >} > >static inline int >__gthread_equal (__gthread_t __t1, __gthread_t __t2) >{ > return __gthrw_pthread_equal (__t1, __t2); >} > >static inline __gthread_t >__gthread_self (void) >{ > return __gthrw_pthread_self (); >} > >static inline int >__gthread_yield (void) >{ > return __gthrw_sched_yield (); >} > >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 void >__gthread_mutex_init_function (__gthread_mutex_t *__mutex) >{ > if (__gthread_active_p ()) > __gthrw_pthread_mutex_init (__mutex, __null); >} > >static inline int >__gthread_mutex_destroy (__gthread_mutex_t *__mutex) >{ > if (__gthread_active_p ()) > return __gthrw_pthread_mutex_destroy (__mutex); > else > return 0; >} > >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_timedlock (__gthread_mutex_t *__mutex, > const __gthread_time_t *__abs_timeout) >{ > if (__gthread_active_p ()) > return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout); > 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; >} ># 807 "/usr/include/c++/4.8.2/aarch64-redhat-linux/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_timedlock (__gthread_recursive_mutex_t *__mutex, > const __gthread_time_t *__abs_timeout) >{ > return __gthread_mutex_timedlock (__mutex, __abs_timeout); >} > > >static inline int >__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) >{ > return __gthread_mutex_unlock (__mutex); >} > >static inline int >__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) >{ > return __gthread_mutex_destroy (__mutex); >} ># 849 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr-default.h" 3 >static inline int >__gthread_cond_broadcast (__gthread_cond_t *__cond) >{ > return __gthrw_pthread_cond_broadcast (__cond); >} > >static inline int >__gthread_cond_signal (__gthread_cond_t *__cond) >{ > return __gthrw_pthread_cond_signal (__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_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, > const __gthread_time_t *__abs_timeout) >{ > return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout); >} > >static inline int >__gthread_cond_wait_recursive (__gthread_cond_t *__cond, > __gthread_recursive_mutex_t *__mutex) >{ > return __gthread_cond_wait (__cond, __mutex); >} > >static inline int >__gthread_cond_destroy (__gthread_cond_t* __cond) >{ > return __gthrw_pthread_cond_destroy (__cond); >} ># 149 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/gthr.h" 2 3 > > >#pragma GCC visibility pop ># 36 "/usr/include/c++/4.8.2/ext/atomicity.h" 2 3 ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/atomic_word.h" 1 3 ># 32 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/atomic_word.h" 3 >typedef int _Atomic_word; ># 37 "/usr/include/c++/4.8.2/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 __atomic_fetch_add(__mem, __val, 4); } > > static inline void > __atomic_add(volatile _Atomic_word* __mem, int __val) > { __atomic_fetch_add(__mem, __val, 4); } ># 64 "/usr/include/c++/4.8.2/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); > > > > } > > >} ># 40 "/usr/include/c++/4.8.2/bits/ios_base.h" 2 3 > ># 1 "/usr/include/c++/4.8.2/bits/locale_classes.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > > ># 1 "/usr/include/c++/4.8.2/string" 1 3 ># 36 "/usr/include/c++/4.8.2/string" 3 ># 37 "/usr/include/c++/4.8.2/string" 3 > > > > ># 1 "/usr/include/c++/4.8.2/bits/allocator.h" 1 3 ># 46 "/usr/include/c++/4.8.2/bits/allocator.h" 3 ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++allocator.h" 1 3 ># 33 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++allocator.h" 3 ># 1 "/usr/include/c++/4.8.2/ext/new_allocator.h" 1 3 ># 40 "/usr/include/c++/4.8.2/ext/new_allocator.h" 3 >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ > > > using std::size_t; > using std::ptrdiff_t; ># 57 "/usr/include/c++/4.8.2/ext/new_allocator.h" 3 > template<typename _Tp> > class new_allocator > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef const _Tp* const_pointer; > typedef _Tp& reference; > typedef const _Tp& const_reference; > typedef _Tp value_type; > > template<typename _Tp1> > struct rebind > { typedef new_allocator<_Tp1> other; }; > > > > > > > > new_allocator() throw() { } > > new_allocator(const new_allocator&) throw() { } > > template<typename _Tp1> > new_allocator(const new_allocator<_Tp1>&) throw() { } > > ~new_allocator() throw() { } > > pointer > address(reference __x) const > { return std::__addressof(__x); } > > const_pointer > address(const_reference __x) const > { return std::__addressof(__x); } > > > > pointer > allocate(size_type __n, const void* = 0) > { > if (__n > this->max_size()) > 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); } ># 128 "/usr/include/c++/4.8.2/ext/new_allocator.h" 3 > void > construct(pointer __p, const _Tp& __val) > { ::new((void *)__p) _Tp(__val); } > > void > destroy(pointer __p) { __p->~_Tp(); } > > }; > > template<typename _Tp> > inline bool > operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) > { return true; } > > template<typename _Tp> > inline bool > operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) > { return false; } > > >} ># 34 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/c++allocator.h" 2 3 ># 47 "/usr/include/c++/4.8.2/bits/allocator.h" 2 3 > > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 62 "/usr/include/c++/4.8.2/bits/allocator.h" 3 > template<> > class allocator<void> > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef void* pointer; > typedef const void* const_pointer; > typedef void value_type; > > template<typename _Tp1> > struct rebind > { typedef allocator<_Tp1> other; }; > > > > > > > }; ># 91 "/usr/include/c++/4.8.2/bits/allocator.h" 3 > template<typename _Tp> > class allocator: public __gnu_cxx::new_allocator<_Tp> > { > public: > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp* pointer; > typedef const _Tp* const_pointer; > typedef _Tp& reference; > typedef const _Tp& const_reference; > typedef _Tp value_type; > > template<typename _Tp1> > struct rebind > { typedef allocator<_Tp1> other; }; > > > > > > > > allocator() throw() { } > > allocator(const allocator& __a) throw() > : __gnu_cxx::new_allocator<_Tp>(__a) { } > > template<typename _Tp1> > allocator(const allocator<_Tp1>&) throw() { } > > ~allocator() throw() { } > > > }; > > template<typename _T1, typename _T2> > inline bool > operator==(const allocator<_T1>&, const allocator<_T2>&) > { return true; } > > template<typename _Tp> > inline bool > operator==(const allocator<_Tp>&, const allocator<_Tp>&) > { return true; } > > template<typename _T1, typename _T2> > inline bool > operator!=(const allocator<_T1>&, const allocator<_T2>&) > { return false; } > > template<typename _Tp> > inline bool > operator!=(const allocator<_Tp>&, const allocator<_Tp>&) > { return false; } > > > > > > > extern template class allocator<char>; > extern template class allocator<wchar_t>; > > > > > > > template<typename _Alloc, bool = __is_empty(_Alloc)> > struct __alloc_swap > { static void _S_do_it(_Alloc&, _Alloc&) { } }; > > template<typename _Alloc> > struct __alloc_swap<_Alloc, false> > { > static void > _S_do_it(_Alloc& __one, _Alloc& __two) > { > > if (__one != __two) > swap(__one, __two); > } > }; > > > template<typename _Alloc, bool = __is_empty(_Alloc)> > struct __alloc_neq > { > static bool > _S_do_it(const _Alloc&, const _Alloc&) > { return false; } > }; > > template<typename _Alloc> > struct __alloc_neq<_Alloc, false> > { > static bool > _S_do_it(const _Alloc& __one, const _Alloc& __two) > { return __one != __two; } > }; ># 218 "/usr/include/c++/4.8.2/bits/allocator.h" 3 > >} ># 42 "/usr/include/c++/4.8.2/string" 2 3 > > ># 1 "/usr/include/c++/4.8.2/bits/ostream_insert.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/ostream_insert.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/ostream_insert.h" 3 > > ># 1 "/usr/include/c++/4.8.2/bits/cxxabi_forced.h" 1 3 ># 34 "/usr/include/c++/4.8.2/bits/cxxabi_forced.h" 3 ># 35 "/usr/include/c++/4.8.2/bits/cxxabi_forced.h" 3 > >#pragma GCC visibility push(default) > > >namespace __cxxabiv1 >{ > > > > > > > > class __forced_unwind > { > virtual ~__forced_unwind() throw(); > > > virtual void __pure_dummy() = 0; > }; >} > > >#pragma GCC visibility pop ># 37 "/usr/include/c++/4.8.2/bits/ostream_insert.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits> > inline void > __ostream_write(basic_ostream<_CharT, _Traits>& __out, > const _CharT* __s, streamsize __n) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef typename __ostream_type::ios_base __ios_base; > > const streamsize __put = __out.rdbuf()->sputn(__s, __n); > if (__put != __n) > __out.setstate(__ios_base::badbit); > } > > template<typename _CharT, typename _Traits> > inline void > __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef typename __ostream_type::ios_base __ios_base; > > const _CharT __c = __out.fill(); > for (; __n > 0; --__n) > { > const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); > if (_Traits::eq_int_type(__put, _Traits::eof())) > { > __out.setstate(__ios_base::badbit); > break; > } > } > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > __ostream_insert(basic_ostream<_CharT, _Traits>& __out, > const _CharT* __s, streamsize __n) > { > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef typename __ostream_type::ios_base __ios_base; > > typename __ostream_type::sentry __cerb(__out); > if (__cerb) > { > try > { > const streamsize __w = __out.width(); > if (__w > __n) > { > const bool __left = ((__out.flags() > & __ios_base::adjustfield) > == __ios_base::left); > if (!__left) > __ostream_fill(__out, __w - __n); > if (__out.good()) > __ostream_write(__out, __s, __n); > if (__left && __out.good()) > __ostream_fill(__out, __w - __n); > } > else > __ostream_write(__out, __s, __n); > __out.width(0); > } > catch(__cxxabiv1::__forced_unwind&) > { > __out._M_setstate(__ios_base::badbit); > throw; > } > catch(...) > { __out._M_setstate(__ios_base::badbit); } > } > return __out; > } > > > > > extern template ostream& __ostream_insert(ostream&, const char*, streamsize); > > > extern template wostream& __ostream_insert(wostream&, const wchar_t*, > streamsize); > > > > >} ># 45 "/usr/include/c++/4.8.2/string" 2 3 > > > ># 1 "/usr/include/c++/4.8.2/bits/stl_function.h" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 100 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Arg, typename _Result> > struct unary_function > { > > typedef _Arg argument_type; > > > typedef _Result result_type; > }; > > > > > template<typename _Arg1, typename _Arg2, typename _Result> > struct binary_function > { > > typedef _Arg1 first_argument_type; > > > typedef _Arg2 second_argument_type; > > > typedef _Result result_type; > }; ># 139 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Tp> > struct plus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x + __y; } > }; > > > template<typename _Tp> > struct minus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x - __y; } > }; > > > template<typename _Tp> > struct multiplies : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x * __y; } > }; > > > template<typename _Tp> > struct divides : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x / __y; } > }; > > > template<typename _Tp> > struct modulus : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x % __y; } > }; > > > template<typename _Tp> > struct negate : public unary_function<_Tp, _Tp> > { > _Tp > operator()(const _Tp& __x) const > { return -__x; } > }; ># 203 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Tp> > struct equal_to : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x == __y; } > }; > > > template<typename _Tp> > struct not_equal_to : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x != __y; } > }; > > > template<typename _Tp> > struct greater : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x > __y; } > }; > > > template<typename _Tp> > struct less : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x < __y; } > }; > > > template<typename _Tp> > struct greater_equal : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x >= __y; } > }; > > > template<typename _Tp> > struct less_equal : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x <= __y; } > }; ># 267 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Tp> > struct logical_and : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x && __y; } > }; > > > template<typename _Tp> > struct logical_or : public binary_function<_Tp, _Tp, bool> > { > bool > operator()(const _Tp& __x, const _Tp& __y) const > { return __x || __y; } > }; > > > template<typename _Tp> > struct logical_not : public unary_function<_Tp, bool> > { > bool > operator()(const _Tp& __x) const > { return !__x; } > }; > > > > > template<typename _Tp> > struct bit_and : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x & __y; } > }; > > template<typename _Tp> > struct bit_or : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x | __y; } > }; > > template<typename _Tp> > struct bit_xor : public binary_function<_Tp, _Tp, _Tp> > { > _Tp > operator()(const _Tp& __x, const _Tp& __y) const > { return __x ^ __y; } > }; ># 350 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Predicate> > class unary_negate > : public unary_function<typename _Predicate::argument_type, bool> > { > protected: > _Predicate _M_pred; > > public: > explicit > unary_negate(const _Predicate& __x) : _M_pred(__x) { } > > bool > operator()(const typename _Predicate::argument_type& __x) const > { return !_M_pred(__x); } > }; > > > template<typename _Predicate> > inline unary_negate<_Predicate> > not1(const _Predicate& __pred) > { return unary_negate<_Predicate>(__pred); } > > > template<typename _Predicate> > class binary_negate > : public binary_function<typename _Predicate::first_argument_type, > typename _Predicate::second_argument_type, bool> > { > protected: > _Predicate _M_pred; > > public: > explicit > binary_negate(const _Predicate& __x) : _M_pred(__x) { } > > bool > operator()(const typename _Predicate::first_argument_type& __x, > const typename _Predicate::second_argument_type& __y) const > { return !_M_pred(__x, __y); } > }; > > > template<typename _Predicate> > inline binary_negate<_Predicate> > not2(const _Predicate& __pred) > { return binary_negate<_Predicate>(__pred); } ># 421 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Arg, typename _Result> > class pointer_to_unary_function : public unary_function<_Arg, _Result> > { > protected: > _Result (*_M_ptr)(_Arg); > > public: > pointer_to_unary_function() { } > > explicit > pointer_to_unary_function(_Result (*__x)(_Arg)) > : _M_ptr(__x) { } > > _Result > operator()(_Arg __x) const > { return _M_ptr(__x); } > }; > > > template<typename _Arg, typename _Result> > inline pointer_to_unary_function<_Arg, _Result> > ptr_fun(_Result (*__x)(_Arg)) > { return pointer_to_unary_function<_Arg, _Result>(__x); } > > > template<typename _Arg1, typename _Arg2, typename _Result> > class pointer_to_binary_function > : public binary_function<_Arg1, _Arg2, _Result> > { > protected: > _Result (*_M_ptr)(_Arg1, _Arg2); > > public: > pointer_to_binary_function() { } > > explicit > pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) > : _M_ptr(__x) { } > > _Result > operator()(_Arg1 __x, _Arg2 __y) const > { return _M_ptr(__x, __y); } > }; > > > template<typename _Arg1, typename _Arg2, typename _Result> > inline pointer_to_binary_function<_Arg1, _Arg2, _Result> > ptr_fun(_Result (*__x)(_Arg1, _Arg2)) > { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } > > > template<typename _Tp> > struct _Identity > : public unary_function<_Tp,_Tp> > { > _Tp& > operator()(_Tp& __x) const > { return __x; } > > const _Tp& > operator()(const _Tp& __x) const > { return __x; } > }; > > template<typename _Pair> > struct _Select1st > : public unary_function<_Pair, typename _Pair::first_type> > { > typename _Pair::first_type& > operator()(_Pair& __x) const > { return __x.first; } > > const typename _Pair::first_type& > operator()(const _Pair& __x) const > { return __x.first; } ># 508 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > }; > > template<typename _Pair> > struct _Select2nd > : public unary_function<_Pair, typename _Pair::second_type> > { > typename _Pair::second_type& > operator()(_Pair& __x) const > { return __x.second; } > > const typename _Pair::second_type& > operator()(const _Pair& __x) const > { return __x.second; } > }; ># 541 "/usr/include/c++/4.8.2/bits/stl_function.h" 3 > template<typename _Ret, typename _Tp> > class mem_fun_t : public unary_function<_Tp*, _Ret> > { > public: > explicit > mem_fun_t(_Ret (_Tp::*__pf)()) > : _M_f(__pf) { } > > _Ret > operator()(_Tp* __p) const > { return (__p->*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)(); > }; > > > > template<typename _Ret, typename _Tp> > class const_mem_fun_t : public unary_function<const _Tp*, _Ret> > { > public: > explicit > const_mem_fun_t(_Ret (_Tp::*__pf)() const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp* __p) const > { return (__p->*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)() const; > }; > > > > template<typename _Ret, typename _Tp> > class mem_fun_ref_t : public unary_function<_Tp, _Ret> > { > public: > explicit > mem_fun_ref_t(_Ret (_Tp::*__pf)()) > : _M_f(__pf) { } > > _Ret > operator()(_Tp& __r) const > { return (__r.*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)(); > }; > > > > template<typename _Ret, typename _Tp> > class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> > { > public: > explicit > const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp& __r) const > { return (__r.*_M_f)(); } > > private: > _Ret (_Tp::*_M_f)() const; > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> > { > public: > explicit > mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) > : _M_f(__pf) { } > > _Ret > operator()(_Tp* __p, _Arg __x) const > { return (__p->*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg); > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret> > { > public: > explicit > const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp* __p, _Arg __x) const > { return (__p->*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg) const; > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> > { > public: > explicit > mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) > : _M_f(__pf) { } > > _Ret > operator()(_Tp& __r, _Arg __x) const > { return (__r.*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg); > }; > > > > template<typename _Ret, typename _Tp, typename _Arg> > class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> > { > public: > explicit > const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) > : _M_f(__pf) { } > > _Ret > operator()(const _Tp& __r, _Arg __x) const > { return (__r.*_M_f)(__x); } > > private: > _Ret (_Tp::*_M_f)(_Arg) const; > }; > > > > template<typename _Ret, typename _Tp> > inline mem_fun_t<_Ret, _Tp> > mem_fun(_Ret (_Tp::*__f)()) > { return mem_fun_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp> > inline const_mem_fun_t<_Ret, _Tp> > mem_fun(_Ret (_Tp::*__f)() const) > { return const_mem_fun_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp> > inline mem_fun_ref_t<_Ret, _Tp> > mem_fun_ref(_Ret (_Tp::*__f)()) > { return mem_fun_ref_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp> > inline const_mem_fun_ref_t<_Ret, _Tp> > mem_fun_ref(_Ret (_Tp::*__f)() const) > { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline mem_fun1_t<_Ret, _Tp, _Arg> > mem_fun(_Ret (_Tp::*__f)(_Arg)) > { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline const_mem_fun1_t<_Ret, _Tp, _Arg> > mem_fun(_Ret (_Tp::*__f)(_Arg) const) > { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline mem_fun1_ref_t<_Ret, _Tp, _Arg> > mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) > { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } > > template<typename _Ret, typename _Tp, typename _Arg> > inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> > mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) > { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } > > > > >} > > ># 1 "/usr/include/c++/4.8.2/backward/binders.h" 1 3 ># 59 "/usr/include/c++/4.8.2/backward/binders.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 103 "/usr/include/c++/4.8.2/backward/binders.h" 3 > template<typename _Operation> > class binder1st > : public unary_function<typename _Operation::second_argument_type, > typename _Operation::result_type> > { > protected: > _Operation op; > typename _Operation::first_argument_type value; > > public: > binder1st(const _Operation& __x, > const typename _Operation::first_argument_type& __y) > : op(__x), value(__y) { } > > typename _Operation::result_type > operator()(const typename _Operation::second_argument_type& __x) const > { return op(value, __x); } > > > > typename _Operation::result_type > operator()(typename _Operation::second_argument_type& __x) const > { return op(value, __x); } > } ; > > > template<typename _Operation, typename _Tp> > inline binder1st<_Operation> > bind1st(const _Operation& __fn, const _Tp& __x) > { > typedef typename _Operation::first_argument_type _Arg1_type; > return binder1st<_Operation>(__fn, _Arg1_type(__x)); > } > > > template<typename _Operation> > class binder2nd > : public unary_function<typename _Operation::first_argument_type, > typename _Operation::result_type> > { > protected: > _Operation op; > typename _Operation::second_argument_type value; > > public: > binder2nd(const _Operation& __x, > const typename _Operation::second_argument_type& __y) > : op(__x), value(__y) { } > > typename _Operation::result_type > operator()(const typename _Operation::first_argument_type& __x) const > { return op(__x, value); } > > > > typename _Operation::result_type > operator()(typename _Operation::first_argument_type& __x) const > { return op(__x, value); } > } ; > > > template<typename _Operation, typename _Tp> > inline binder2nd<_Operation> > bind2nd(const _Operation& __fn, const _Tp& __x) > { > typedef typename _Operation::second_argument_type _Arg2_type; > return binder2nd<_Operation>(__fn, _Arg2_type(__x)); > } > > > >} ># 732 "/usr/include/c++/4.8.2/bits/stl_function.h" 2 3 ># 49 "/usr/include/c++/4.8.2/string" 2 3 > > ># 1 "/usr/include/c++/4.8.2/bits/range_access.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/range_access.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/range_access.h" 3 ># 52 "/usr/include/c++/4.8.2/string" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/basic_string.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > > > > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 111 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_string > { > typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; > > > public: > typedef _Traits traits_type; > typedef typename _Traits::char_type value_type; > typedef _Alloc allocator_type; > typedef typename _CharT_alloc_type::size_type size_type; > typedef typename _CharT_alloc_type::difference_type difference_type; > typedef typename _CharT_alloc_type::reference reference; > typedef typename _CharT_alloc_type::const_reference const_reference; > typedef typename _CharT_alloc_type::pointer pointer; > typedef typename _CharT_alloc_type::const_pointer const_pointer; > typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; > typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string> > const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > > private: ># 148 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > struct _Rep_base > { > size_type _M_length; > size_type _M_capacity; > _Atomic_word _M_refcount; > }; > > struct _Rep : _Rep_base > { > > typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc; ># 173 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > static const size_type _S_max_size; > static const _CharT _S_terminal; > > > > static size_type _S_empty_rep_storage[]; > > static _Rep& > _S_empty_rep() > { > > > > void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage); > return *reinterpret_cast<_Rep*>(__p); > } > > bool > _M_is_leaked() const > { return this->_M_refcount < 0; } > > bool > _M_is_shared() const > { return this->_M_refcount > 0; } > > void > _M_set_leaked() > { this->_M_refcount = -1; } > > void > _M_set_sharable() > { this->_M_refcount = 0; } > > void > _M_set_length_and_sharable(size_type __n) > { > > if (__builtin_expect(this != &_S_empty_rep(), false)) > > { > this->_M_set_sharable(); > this->_M_length = __n; > traits_type::assign(this->_M_refdata()[__n], _S_terminal); > > > } > } > > _CharT* > _M_refdata() throw() > { return reinterpret_cast<_CharT*>(this + 1); } > > _CharT* > _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) > { > return (!_M_is_leaked() && __alloc1 == __alloc2) > ? _M_refcopy() : _M_clone(__alloc1); > } > > > static _Rep* > _S_create(size_type, size_type, const _Alloc&); > > void > _M_dispose(const _Alloc& __a) > { > > if (__builtin_expect(this != &_S_empty_rep(), false)) > > { > > ; > if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, > -1) <= 0) > { > ; > _M_destroy(__a); > } > } > } > > void > _M_destroy(const _Alloc&) throw(); > > _CharT* > _M_refcopy() throw() > { > > if (__builtin_expect(this != &_S_empty_rep(), false)) > > __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1); > return _M_refdata(); > } > > _CharT* > _M_clone(const _Alloc&, size_type __res = 0); > }; > > > struct _Alloc_hider : _Alloc > { > _Alloc_hider(_CharT* __dat, const _Alloc& __a) > : _Alloc(__a), _M_p(__dat) { } > > _CharT* _M_p; > }; > > public: > > > > > static const size_type npos = static_cast<size_type>(-1); > > private: > > mutable _Alloc_hider _M_dataplus; > > _CharT* > _M_data() const > { return _M_dataplus._M_p; } > > _CharT* > _M_data(_CharT* __p) > { return (_M_dataplus._M_p = __p); } > > _Rep* > _M_rep() const > { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } > > > > iterator > _M_ibegin() const > { return iterator(_M_data()); } > > iterator > _M_iend() const > { return iterator(_M_data() + this->size()); } > > void > _M_leak() > { > if (!_M_rep()->_M_is_leaked()) > _M_leak_hard(); > } > > size_type > _M_check(size_type __pos, const char* __s) const > { > if (__pos > this->size()) > __throw_out_of_range((__s)); > return __pos; > } > > void > _M_check_length(size_type __n1, size_type __n2, const char* __s) const > { > if (this->max_size() - (this->size() - __n1) < __n2) > __throw_length_error((__s)); > } > > > size_type > _M_limit(size_type __pos, size_type __off) const > { > const bool __testoff = __off < this->size() - __pos; > return __testoff ? __off : this->size() - __pos; > } > > > bool > _M_disjunct(const _CharT* __s) const > { > return (less<const _CharT*>()(__s, _M_data()) > || less<const _CharT*>()(_M_data() + this->size(), __s)); > } > > > > static void > _M_copy(_CharT* __d, const _CharT* __s, size_type __n) > { > if (__n == 1) > traits_type::assign(*__d, *__s); > else > traits_type::copy(__d, __s, __n); > } > > static void > _M_move(_CharT* __d, const _CharT* __s, size_type __n) > { > if (__n == 1) > traits_type::assign(*__d, *__s); > else > traits_type::move(__d, __s, __n); > } > > static void > _M_assign(_CharT* __d, size_type __n, _CharT __c) > { > if (__n == 1) > traits_type::assign(*__d, __c); > else > traits_type::assign(__d, __n, __c); > } > > > > template<class _Iterator> > static void > _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) > { > for (; __k1 != __k2; ++__k1, ++__p) > traits_type::assign(*__p, *__k1); > } > > static void > _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) > { _S_copy_chars(__p, __k1.base(), __k2.base()); } > > static void > _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) > { _S_copy_chars(__p, __k1.base(), __k2.base()); } > > static void > _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) > { _M_copy(__p, __k1, __k2 - __k1); } > > static void > _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) > { _M_copy(__p, __k1, __k2 - __k1); } > > static int > _S_compare(size_type __n1, size_type __n2) > { > const difference_type __d = difference_type(__n1 - __n2); > > if (__d > __gnu_cxx::__numeric_traits<int>::__max) > return __gnu_cxx::__numeric_traits<int>::__max; > else if (__d < __gnu_cxx::__numeric_traits<int>::__min) > return __gnu_cxx::__numeric_traits<int>::__min; > else > return int(__d); > } > > void > _M_mutate(size_type __pos, size_type __len1, size_type __len2); > > void > _M_leak_hard(); > > static _Rep& > _S_empty_rep() > { return _Rep::_S_empty_rep(); } > > public: > > > > > > > > basic_string() > > : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } > > > > > > > > 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); ># 483 "/usr/include/c++/4.8.2/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()); ># 531 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string(_InputIterator __beg, _InputIterator __end, > const _Alloc& __a = _Alloc()); > > > > > ~basic_string() > { _M_rep()->_M_dispose(this->get_allocator()); } > > > > > > basic_string& > operator=(const basic_string& __str) > { return this->assign(__str); } > > > > > > basic_string& > operator=(const _CharT* __s) > { return this->assign(__s); } ># 564 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > operator=(_CharT __c) > { > this->assign(1, __c); > return *this; > } ># 604 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > 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()); } ># 710 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > 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; } ># 739 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > void > resize(size_type __n, _CharT __c); ># 752 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > void > resize(size_type __n) > { this->resize(__n, _CharT()); } ># 775 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > capacity() const > { return _M_rep()->_M_capacity; } ># 796 "/usr/include/c++/4.8.2/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; } ># 825 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > const_reference > operator[] (size_type __pos) const > { > ; > return _M_data()[__pos]; > } ># 842 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > reference > operator[](size_type __pos) > { > > ; > > ; > _M_leak(); > return _M_data()[__pos]; > } ># 863 "/usr/include/c++/4.8.2/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]; > } ># 882 "/usr/include/c++/4.8.2/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]; > } ># 931 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > 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; > } ># 972 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > append(const basic_string& __str); ># 988 "/usr/include/c++/4.8.2/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)); > } ># 1020 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > append(size_type __n, _CharT __c); ># 1042 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > append(_InputIterator __first, _InputIterator __last) > { return this->replace(_M_iend(), _M_iend(), __first, __last); } > > > > > > void > push_back(_CharT __c) > { > const size_type __len = 1 + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > traits_type::assign(_M_data()[this->size()], __c); > _M_rep()->_M_set_length_and_sharable(__len); > } > > > > > > > basic_string& > assign(const basic_string& __str); ># 1099 "/usr/include/c++/4.8.2/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)); } ># 1115 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > assign(const _CharT* __s, size_type __n); ># 1127 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > assign(const _CharT* __s) > { > ; > return this->assign(__s, traits_type::length(__s)); > } ># 1143 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > assign(size_type __n, _CharT __c) > { return _M_replace_aux(size_type(0), this->size(), __n, __c); } ># 1155 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > assign(_InputIterator __first, _InputIterator __last) > { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } ># 1184 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > void > insert(iterator __p, size_type __n, _CharT __c) > { this->replace(__p, __p, __n, __c); } ># 1200 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<class _InputIterator> > void > insert(iterator __p, _InputIterator __beg, _InputIterator __end) > { this->replace(__p, __p, __beg, __end); } ># 1232 "/usr/include/c++/4.8.2/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()); } ># 1254 "/usr/include/c++/4.8.2/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)); } ># 1277 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, const _CharT* __s, size_type __n); ># 1295 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > insert(size_type __pos, const _CharT* __s) > { > ; > return this->insert(__pos, __s, traits_type::length(__s)); > } ># 1318 "/usr/include/c++/4.8.2/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); } ># 1336 "/usr/include/c++/4.8.2/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); > } ># 1361 "/usr/include/c++/4.8.2/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; > } ># 1377 "/usr/include/c++/4.8.2/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); > } ># 1397 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > iterator > erase(iterator __first, iterator __last); ># 1428 "/usr/include/c++/4.8.2/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()); } ># 1450 "/usr/include/c++/4.8.2/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)); } ># 1475 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > basic_string& > replace(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2); ># 1495 "/usr/include/c++/4.8.2/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)); > } ># 1519 "/usr/include/c++/4.8.2/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); } ># 1537 "/usr/include/c++/4.8.2/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()); } ># 1556 "/usr/include/c++/4.8.2/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); > } ># 1577 "/usr/include/c++/4.8.2/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)); > } ># 1598 "/usr/include/c++/4.8.2/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); > } ># 1621 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<class _InputIterator> > basic_string& > replace(iterator __i1, iterator __i2, > _InputIterator __k1, _InputIterator __k2) > { > > ; > ; > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); > } > > > > basic_string& > replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) > { > > ; > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1, __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, > const _CharT* __k1, const _CharT* __k2) > { > > ; > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1, __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) > { > > ; > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1.base(), __k2 - __k1); > } > > basic_string& > replace(iterator __i1, iterator __i2, > const_iterator __k1, const_iterator __k2) > { > > ; > ; > return this->replace(__i1 - _M_ibegin(), __i2 - __i1, > __k1.base(), __k2 - __k1); > } ># 1697 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > private: > template<class _Integer> > basic_string& > _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n, > _Integer __val, __true_type) > { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); } > > template<class _InputIterator> > basic_string& > _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, > _InputIterator __k2, __false_type); > > basic_string& > _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, > _CharT __c); > > basic_string& > _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, > size_type __n2); > > > > template<class _InIterator> > static _CharT* > _S_construct_aux(_InIterator __beg, _InIterator __end, > const _Alloc& __a, __false_type) > { > typedef typename iterator_traits<_InIterator>::iterator_category _Tag; > return _S_construct(__beg, __end, __a, _Tag()); > } > > > > template<class _Integer> > static _CharT* > _S_construct_aux(_Integer __beg, _Integer __end, > const _Alloc& __a, __true_type) > { return _S_construct_aux_2(static_cast<size_type>(__beg), > __end, __a); } > > static _CharT* > _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a) > { return _S_construct(__req, __c, __a); } > > template<class _InIterator> > static _CharT* > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a) > { > typedef typename std::__is_integer<_InIterator>::__type _Integral; > return _S_construct_aux(__beg, __end, __a, _Integral()); > } > > > template<class _InIterator> > static _CharT* > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > input_iterator_tag); > > > > template<class _FwdIterator> > static _CharT* > _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, > forward_iterator_tag); > > static _CharT* > _S_construct(size_type __req, _CharT __c, const _Alloc& __a); > > public: ># 1779 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > copy(_CharT* __s, size_type __n, size_type __pos = 0) const; ># 1789 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > void > swap(basic_string& __s); ># 1799 "/usr/include/c++/4.8.2/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; } ># 1832 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find(const _CharT* __s, size_type __pos, size_type __n) const; ># 1845 "/usr/include/c++/4.8.2/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()); } ># 1860 "/usr/include/c++/4.8.2/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)); > } ># 1877 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find(_CharT __c, size_type __pos = 0) const ; ># 1890 "/usr/include/c++/4.8.2/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()); } ># 1907 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > rfind(const _CharT* __s, size_type __pos, size_type __n) const; ># 1920 "/usr/include/c++/4.8.2/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)); > } ># 1937 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > rfind(_CharT __c, size_type __pos = npos) const ; ># 1951 "/usr/include/c++/4.8.2/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()); } ># 1968 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; ># 1981 "/usr/include/c++/4.8.2/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)); > } ># 2000 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_first_of(_CharT __c, size_type __pos = 0) const > { return this->find(__c, __pos); } ># 2015 "/usr/include/c++/4.8.2/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()); } ># 2032 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; ># 2045 "/usr/include/c++/4.8.2/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)); > } ># 2064 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_last_of(_CharT __c, size_type __pos = npos) const > { return this->rfind(__c, __pos); } ># 2078 "/usr/include/c++/4.8.2/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()); } ># 2095 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_first_not_of(const _CharT* __s, size_type __pos, > size_type __n) const; ># 2109 "/usr/include/c++/4.8.2/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)); > } ># 2126 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_first_not_of(_CharT __c, size_type __pos = 0) const > ; ># 2141 "/usr/include/c++/4.8.2/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()); } ># 2158 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_last_not_of(const _CharT* __s, size_type __pos, > size_type __n) const; ># 2172 "/usr/include/c++/4.8.2/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)); > } ># 2189 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > size_type > find_last_not_of(_CharT __c, size_type __pos = npos) const > ; ># 2205 "/usr/include/c++/4.8.2/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); } ># 2224 "/usr/include/c++/4.8.2/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; > } ># 2256 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n, const basic_string& __str) const; ># 2282 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > int > compare(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) const; ># 2300 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > int > compare(const _CharT* __s) const; ># 2324 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n1, const _CharT* __s) const; ># 2351 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > int > compare(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) const; > }; ># 2363 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > basic_string<_CharT, _Traits, _Alloc> __str(__lhs); > __str.append(__rhs); > return __str; > } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT,_Traits,_Alloc> > operator+(const _CharT* __lhs, > const basic_string<_CharT,_Traits,_Alloc>& __rhs); > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT,_Traits,_Alloc> > operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { > basic_string<_CharT, _Traits, _Alloc> __str(__lhs); > __str.append(__rhs); > return __str; > } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_string<_CharT, _Traits, _Alloc> > operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > __string_type __str(__lhs); > __str.append(__size_type(1), __rhs); > return __str; > } ># 2484 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) == 0; } > > template<typename _CharT> > inline > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type > operator==(const basic_string<_CharT>& __lhs, > const basic_string<_CharT>& __rhs) > { return (__lhs.size() == __rhs.size() > && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(), > __lhs.size())); } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) == 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) == 0; } ># 2530 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return !(__lhs == __rhs); } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return !(__lhs == __rhs); } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return !(__lhs == __rhs); } ># 2567 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) < 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) < 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) > 0; } ># 2604 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) > 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) > 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) < 0; } ># 2641 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) <= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) <= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator<=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) >= 0; } ># 2678 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __lhs.compare(__rhs) >= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, > const _CharT* __rhs) > { return __lhs.compare(__rhs) >= 0; } > > > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > inline bool > operator>=(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { return __rhs.compare(__lhs) <= 0; } ># 2715 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline void > swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, > basic_string<_CharT, _Traits, _Alloc>& __rhs) > { __lhs.swap(__rhs); } ># 2733 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str); > > template<> > basic_istream<char>& > operator>>(basic_istream<char>& __is, basic_string<char>& __str); ># 2751 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __os, > const basic_string<_CharT, _Traits, _Alloc>& __str) > { > > > return __ostream_insert(__os, __str.data(), __str.size()); > } ># 2774 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); ># 2791 "/usr/include/c++/4.8.2/bits/basic_string.h" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > inline basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __is, > basic_string<_CharT, _Traits, _Alloc>& __str) > { return getline(__is, __str, __is.widen('\n')); } > > template<> > basic_istream<char>& > getline(basic_istream<char>& __in, basic_string<char>& __str, > char __delim); > > > template<> > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str, > wchar_t __delim); > > > >} ># 53 "/usr/include/c++/4.8.2/string" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/basic_string.tcc" 1 3 ># 40 "/usr/include/c++/4.8.2/bits/basic_string.tcc" 3 ># 41 "/usr/include/c++/4.8.2/bits/basic_string.tcc" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits, typename _Alloc> > const typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; > > template<typename _CharT, typename _Traits, typename _Alloc> > const _CharT > basic_string<_CharT, _Traits, _Alloc>:: > _Rep::_S_terminal = _CharT(); > > template<typename _CharT, typename _Traits, typename _Alloc> > const typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>::npos; > > > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[ > (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) / > sizeof(size_type)]; > > > > > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InIterator> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > input_iterator_tag) > { > > if (__beg == __end && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > _CharT __buf[128]; > size_type __len = 0; > while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT)) > { > __buf[__len++] = *__beg; > ++__beg; > } > _Rep* __r = _Rep::_S_create(__len, size_type(0), __a); > _M_copy(__r->_M_refdata(), __buf, __len); > try > { > while (__beg != __end) > { > if (__len == __r->_M_capacity) > { > > _Rep* __another = _Rep::_S_create(__len + 1, __len, __a); > _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len); > __r->_M_destroy(__a); > __r = __another; > } > __r->_M_refdata()[__len++] = *__beg; > ++__beg; > } > } > catch(...) > { > __r->_M_destroy(__a); > throw; > } > __r->_M_set_length_and_sharable(__len); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > template <typename _InIterator> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, > forward_iterator_tag) > { > > if (__beg == __end && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) > __throw_logic_error(("basic_string::_S_construct null not valid")); > > const size_type __dnew = static_cast<size_type>(std::distance(__beg, > __end)); > > _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); > try > { _S_copy_chars(__r->_M_refdata(), __beg, __end); } > catch(...) > { > __r->_M_destroy(__a); > throw; > } > __r->_M_set_length_and_sharable(__dnew); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > _CharT* > basic_string<_CharT, _Traits, _Alloc>:: > _S_construct(size_type __n, _CharT __c, const _Alloc& __a) > { > > if (__n == 0 && __a == _Alloc()) > return _S_empty_rep()._M_refdata(); > > > _Rep* __r = _Rep::_S_create(__n, size_type(0), __a); > if (__n) > _M_assign(__r->_M_refdata(), __n, __c); > > __r->_M_set_length_and_sharable(__n); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str) > : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()), > __str.get_allocator()), > __str.get_allocator()) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _Alloc& __a) > : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str, size_type __pos, size_type __n) > : _M_dataplus(_S_construct(__str._M_data() > + __str._M_check(__pos, > "basic_string::basic_string"), > __str._M_data() + __str._M_limit(__pos, __n) > + __pos, _Alloc()), _Alloc()) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const basic_string& __str, size_type __pos, > size_type __n, const _Alloc& __a) > : _M_dataplus(_S_construct(__str._M_data() > + __str._M_check(__pos, > "basic_string::basic_string"), > __str._M_data() + __str._M_limit(__pos, __n) > + __pos, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) > : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(const _CharT* __s, const _Alloc& __a) > : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : > __s + npos, __a), __a) > { } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(size_type __n, _CharT __c, const _Alloc& __a) > : _M_dataplus(_S_construct(__n, __c, __a), __a) > { } > > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InputIterator> > basic_string<_CharT, _Traits, _Alloc>:: > basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) > : _M_dataplus(_S_construct(__beg, __end, __a), __a) > { } ># 240 "/usr/include/c++/4.8.2/bits/basic_string.tcc" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > assign(const basic_string& __str) > { > if (_M_rep() != __str._M_rep()) > { > > const allocator_type __a = this->get_allocator(); > _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); > _M_rep()->_M_dispose(__a); > _M_data(__tmp); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > assign(const _CharT* __s, size_type __n) > { > ; > _M_check_length(this->size(), __n, "basic_string::assign"); > if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) > return _M_replace_safe(size_type(0), this->size(), __s, __n); > else > { > > const size_type __pos = __s - _M_data(); > if (__pos >= __n) > _M_copy(_M_data(), __s, __n); > else if (__pos) > _M_move(_M_data(), __s, __n); > _M_rep()->_M_set_length_and_sharable(__n); > return *this; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(size_type __n, _CharT __c) > { > if (__n) > { > _M_check_length(size_type(0), __n, "basic_string::append"); > const size_type __len = __n + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > _M_assign(_M_data() + this->size(), __n, __c); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const _CharT* __s, size_type __n) > { > ; > if (__n) > { > _M_check_length(size_type(0), __n, "basic_string::append"); > const size_type __len = __n + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > { > if (_M_disjunct(__s)) > this->reserve(__len); > else > { > const size_type __off = __s - _M_data(); > this->reserve(__len); > __s = _M_data() + __off; > } > } > _M_copy(_M_data() + this->size(), __s, __n); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const basic_string& __str) > { > const size_type __size = __str.size(); > if (__size) > { > const size_type __len = __size + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > _M_copy(_M_data() + this->size(), __str._M_data(), __size); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > append(const basic_string& __str, size_type __pos, size_type __n) > { > __str._M_check(__pos, "basic_string::append"); > __n = __str._M_limit(__pos, __n); > if (__n) > { > const size_type __len = __n + this->size(); > if (__len > this->capacity() || _M_rep()->_M_is_shared()) > this->reserve(__len); > _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n); > _M_rep()->_M_set_length_and_sharable(__len); > } > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > insert(size_type __pos, const _CharT* __s, size_type __n) > { > ; > _M_check(__pos, "basic_string::insert"); > _M_check_length(size_type(0), __n, "basic_string::insert"); > if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) > return _M_replace_safe(__pos, size_type(0), __s, __n); > else > { > > const size_type __off = __s - _M_data(); > _M_mutate(__pos, 0, __n); > __s = _M_data() + __off; > _CharT* __p = _M_data() + __pos; > if (__s + __n <= __p) > _M_copy(__p, __s, __n); > else if (__s >= __p) > _M_copy(__p, __s + __n, __n); > else > { > const size_type __nleft = __p - __s; > _M_copy(__p, __s, __nleft); > _M_copy(__p + __nleft, __p + __n, __n - __nleft); > } > return *this; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::iterator > basic_string<_CharT, _Traits, _Alloc>:: > erase(iterator __first, iterator __last) > { > > ; > > > > > const size_type __size = __last - __first; > if (__size) > { > const size_type __pos = __first - _M_ibegin(); > _M_mutate(__pos, __size, size_type(0)); > _M_rep()->_M_set_leaked(); > return iterator(_M_data() + __pos); > } > else > return __first; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > replace(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) > { > ; > _M_check(__pos, "basic_string::replace"); > __n1 = _M_limit(__pos, __n1); > _M_check_length(__n1, __n2, "basic_string::replace"); > bool __left; > if (_M_disjunct(__s) || _M_rep()->_M_is_shared()) > return _M_replace_safe(__pos, __n1, __s, __n2); > else if ((__left = __s + __n2 <= _M_data() + __pos) > || _M_data() + __pos + __n1 <= __s) > { > > size_type __off = __s - _M_data(); > __left ? __off : (__off += __n2 - __n1); > _M_mutate(__pos, __n1, __n2); > _M_copy(_M_data() + __pos, _M_data() + __off, __n2); > return *this; > } > else > { > > const basic_string __tmp(__s, __n2); > return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2); > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _M_destroy(const _Alloc& __a) throw () > { > const size_type __size = sizeof(_Rep_base) + > (this->_M_capacity + 1) * sizeof(_CharT); > _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > _M_leak_hard() > { > > if (_M_rep() == &_S_empty_rep()) > return; > > if (_M_rep()->_M_is_shared()) > _M_mutate(0, 0, 0); > _M_rep()->_M_set_leaked(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > _M_mutate(size_type __pos, size_type __len1, size_type __len2) > { > const size_type __old_size = this->size(); > const size_type __new_size = __old_size + __len2 - __len1; > const size_type __how_much = __old_size - __pos - __len1; > > if (__new_size > this->capacity() || _M_rep()->_M_is_shared()) > { > > const allocator_type __a = get_allocator(); > _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a); > > if (__pos) > _M_copy(__r->_M_refdata(), _M_data(), __pos); > if (__how_much) > _M_copy(__r->_M_refdata() + __pos + __len2, > _M_data() + __pos + __len1, __how_much); > > _M_rep()->_M_dispose(__a); > _M_data(__r->_M_refdata()); > } > else if (__how_much && __len1 != __len2) > { > > _M_move(_M_data() + __pos + __len2, > _M_data() + __pos + __len1, __how_much); > } > _M_rep()->_M_set_length_and_sharable(__new_size); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > reserve(size_type __res) > { > if (__res != this->capacity() || _M_rep()->_M_is_shared()) > { > > if (__res < this->size()) > __res = this->size(); > const allocator_type __a = get_allocator(); > _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); > _M_rep()->_M_dispose(__a); > _M_data(__tmp); > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > swap(basic_string& __s) > { > if (_M_rep()->_M_is_leaked()) > _M_rep()->_M_set_sharable(); > if (__s._M_rep()->_M_is_leaked()) > __s._M_rep()->_M_set_sharable(); > if (this->get_allocator() == __s.get_allocator()) > { > _CharT* __tmp = _M_data(); > _M_data(__s._M_data()); > __s._M_data(__tmp); > } > > else > { > const basic_string __tmp1(_M_ibegin(), _M_iend(), > __s.get_allocator()); > const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), > this->get_allocator()); > *this = __tmp2; > __s = __tmp1; > } > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::_Rep* > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _S_create(size_type __capacity, size_type __old_capacity, > const _Alloc& __alloc) > { > > > if (__capacity > _S_max_size) > __throw_length_error(("basic_string::_S_create")); ># 577 "/usr/include/c++/4.8.2/bits/basic_string.tcc" 3 > const size_type __pagesize = 4096; > const size_type __malloc_header_size = 4 * sizeof(void*); > > > > > > > > if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) > __capacity = 2 * __old_capacity; > > > > > size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > > const size_type __adj_size = __size + __malloc_header_size; > if (__adj_size > __pagesize && __capacity > __old_capacity) > { > const size_type __extra = __pagesize - __adj_size % __pagesize; > __capacity += __extra / sizeof(_CharT); > > if (__capacity > _S_max_size) > __capacity = _S_max_size; > __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); > } > > > > void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); > _Rep *__p = new (__place) _Rep; > __p->_M_capacity = __capacity; > > > > > > > > __p->_M_set_sharable(); > return __p; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > _CharT* > basic_string<_CharT, _Traits, _Alloc>::_Rep:: > _M_clone(const _Alloc& __alloc, size_type __res) > { > > const size_type __requested_cap = this->_M_length + __res; > _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity, > __alloc); > if (this->_M_length) > _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length); > > __r->_M_set_length_and_sharable(this->_M_length); > return __r->_M_refdata(); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > void > basic_string<_CharT, _Traits, _Alloc>:: > resize(size_type __n, _CharT __c) > { > const size_type __size = this->size(); > _M_check_length(__size, __n, "basic_string::resize"); > if (__size < __n) > this->append(__n - __size, __c); > else if (__n < __size) > this->erase(__n); > > } > > template<typename _CharT, typename _Traits, typename _Alloc> > template<typename _InputIterator> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1, > _InputIterator __k2, __false_type) > { > const basic_string __s(__k1, __k2); > const size_type __n1 = __i2 - __i1; > _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch"); > return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(), > __s.size()); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, > _CharT __c) > { > _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); > _M_mutate(__pos1, __n1, __n2); > if (__n2) > _M_assign(_M_data() + __pos1, __n2, __c); > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc>& > basic_string<_CharT, _Traits, _Alloc>:: > _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s, > size_type __n2) > { > _M_mutate(__pos1, __n1, __n2); > if (__n2) > _M_copy(_M_data() + __pos1, __s, __n2); > return *this; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(const _CharT* __lhs, > const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > ; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > const __size_type __len = _Traits::length(__lhs); > __string_type __str; > __str.reserve(__len + __rhs.size()); > __str.append(__lhs, __len); > __str.append(__rhs); > return __str; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_string<_CharT, _Traits, _Alloc> > operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) > { > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > __string_type __str; > const __size_type __len = __rhs.size(); > __str.reserve(__len + 1); > __str.append(__size_type(1), __lhs); > __str.append(__rhs); > return __str; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > copy(_CharT* __s, size_type __n, size_type __pos) const > { > _M_check(__pos, "basic_string::copy"); > __n = _M_limit(__pos, __n); > ; > if (__n) > _M_copy(__s, _M_data() + __pos, __n); > > return __n; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > const size_type __size = this->size(); > const _CharT* __data = _M_data(); > > if (__n == 0) > return __pos <= __size ? __pos : npos; > > if (__n <= __size) > { > for (; __pos <= __size - __n; ++__pos) > if (traits_type::eq(__data[__pos], __s[0]) > && traits_type::compare(__data + __pos + 1, > __s + 1, __n - 1) == 0) > return __pos; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find(_CharT __c, size_type __pos) const > { > size_type __ret = npos; > const size_type __size = this->size(); > if (__pos < __size) > { > const _CharT* __data = _M_data(); > const size_type __n = __size - __pos; > const _CharT* __p = traits_type::find(__data + __pos, __n, __c); > if (__p) > __ret = __p - __data; > } > return __ret; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > rfind(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > const size_type __size = this->size(); > if (__n <= __size) > { > __pos = std::min(size_type(__size - __n), __pos); > const _CharT* __data = _M_data(); > do > { > if (traits_type::compare(__data + __pos, __s, __n) == 0) > return __pos; > } > while (__pos-- > 0); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > rfind(_CharT __c, size_type __pos) const > { > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > for (++__size; __size-- > 0; ) > if (traits_type::eq(_M_data()[__size], __c)) > return __size; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > for (; __n && __pos < this->size(); ++__pos) > { > const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); > if (__p) > return __pos; > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > size_type __size = this->size(); > if (__size && __n) > { > if (--__size > __pos) > __size = __pos; > do > { > if (traits_type::find(__s, __n, _M_data()[__size])) > return __size; > } > while (__size-- != 0); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > for (; __pos < this->size(); ++__pos) > if (!traits_type::find(__s, __n, _M_data()[__pos])) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_first_not_of(_CharT __c, size_type __pos) const > { > for (; __pos < this->size(); ++__pos) > if (!traits_type::eq(_M_data()[__pos], __c)) > return __pos; > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const > { > ; > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > do > { > if (!traits_type::find(__s, __n, _M_data()[__size])) > return __size; > } > while (__size--); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > typename basic_string<_CharT, _Traits, _Alloc>::size_type > basic_string<_CharT, _Traits, _Alloc>:: > find_last_not_of(_CharT __c, size_type __pos) const > { > size_type __size = this->size(); > if (__size) > { > if (--__size > __pos) > __size = __pos; > do > { > if (!traits_type::eq(_M_data()[__size], __c)) > return __size; > } > while (__size--); > } > return npos; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n, const basic_string& __str) const > { > _M_check(__pos, "basic_string::compare"); > __n = _M_limit(__pos, __n); > const size_type __osize = __str.size(); > const size_type __len = std::min(__n, __osize); > int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); > if (!__r) > __r = _S_compare(__n, __osize); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(size_type __pos1, size_type __n1, const basic_string& __str, > size_type __pos2, size_type __n2) const > { > _M_check(__pos1, "basic_string::compare"); > __str._M_check(__pos2, "basic_string::compare"); > __n1 = _M_limit(__pos1, __n1); > __n2 = __str._M_limit(__pos2, __n2); > const size_type __len = std::min(__n1, __n2); > int __r = traits_type::compare(_M_data() + __pos1, > __str.data() + __pos2, __len); > if (!__r) > __r = _S_compare(__n1, __n2); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string<_CharT, _Traits, _Alloc>:: > compare(const _CharT* __s) const > { > ; > const size_type __size = this->size(); > const size_type __osize = traits_type::length(__s); > const size_type __len = std::min(__size, __osize); > int __r = traits_type::compare(_M_data(), __s, __len); > if (!__r) > __r = _S_compare(__size, __osize); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string <_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n1, const _CharT* __s) const > { > ; > _M_check(__pos, "basic_string::compare"); > __n1 = _M_limit(__pos, __n1); > const size_type __osize = traits_type::length(__s); > const size_type __len = std::min(__n1, __osize); > int __r = traits_type::compare(_M_data() + __pos, __s, __len); > if (!__r) > __r = _S_compare(__n1, __osize); > return __r; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > int > basic_string <_CharT, _Traits, _Alloc>:: > compare(size_type __pos, size_type __n1, const _CharT* __s, > size_type __n2) const > { > ; > _M_check(__pos, "basic_string::compare"); > __n1 = _M_limit(__pos, __n1); > const size_type __len = std::min(__n1, __n2); > int __r = traits_type::compare(_M_data() + __pos, __s, __len); > if (!__r) > __r = _S_compare(__n1, __n2); > return __r; > } > > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT, _Traits, _Alloc>& __str) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __istream_type::ios_base __ios_base; > typedef typename __istream_type::int_type __int_type; > typedef typename __string_type::size_type __size_type; > typedef ctype<_CharT> __ctype_type; > typedef typename __ctype_type::ctype_base __ctype_base; > > __size_type __extracted = 0; > typename __ios_base::iostate __err = __ios_base::goodbit; > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > try > { > > __str.erase(); > _CharT __buf[128]; > __size_type __len = 0; > const streamsize __w = __in.width(); > const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) > : __str.max_size(); > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > const __int_type __eof = _Traits::eof(); > __int_type __c = __in.rdbuf()->sgetc(); > > while (__extracted < __n > && !_Traits::eq_int_type(__c, __eof) > && !__ct.is(__ctype_base::space, > _Traits::to_char_type(__c))) > { > if (__len == sizeof(__buf) / sizeof(_CharT)) > { > __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); > __len = 0; > } > __buf[__len++] = _Traits::to_char_type(__c); > ++__extracted; > __c = __in.rdbuf()->snextc(); > } > __str.append(__buf, __len); > > if (_Traits::eq_int_type(__c, __eof)) > __err |= __ios_base::eofbit; > __in.width(0); > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(__ios_base::badbit); > throw; > } > catch(...) > { > > > > __in._M_setstate(__ios_base::badbit); > } > } > > if (!__extracted) > __err |= __ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > template<typename _CharT, typename _Traits, typename _Alloc> > basic_istream<_CharT, _Traits>& > getline(basic_istream<_CharT, _Traits>& __in, > basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_string<_CharT, _Traits, _Alloc> __string_type; > typedef typename __istream_type::ios_base __ios_base; > typedef typename __istream_type::int_type __int_type; > typedef typename __string_type::size_type __size_type; > > __size_type __extracted = 0; > const __size_type __n = __str.max_size(); > typename __ios_base::iostate __err = __ios_base::goodbit; > typename __istream_type::sentry __cerb(__in, true); > if (__cerb) > { > try > { > __str.erase(); > const __int_type __idelim = _Traits::to_int_type(__delim); > const __int_type __eof = _Traits::eof(); > __int_type __c = __in.rdbuf()->sgetc(); > > while (__extracted < __n > && !_Traits::eq_int_type(__c, __eof) > && !_Traits::eq_int_type(__c, __idelim)) > { > __str += _Traits::to_char_type(__c); > ++__extracted; > __c = __in.rdbuf()->snextc(); > } > > if (_Traits::eq_int_type(__c, __eof)) > __err |= __ios_base::eofbit; > else if (_Traits::eq_int_type(__c, __idelim)) > { > ++__extracted; > __in.rdbuf()->sbumpc(); > } > else > __err |= __ios_base::failbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(__ios_base::badbit); > throw; > } > catch(...) > { > > > > __in._M_setstate(__ios_base::badbit); > } > } > if (!__extracted) > __err |= __ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > > > > extern template class basic_string<char>; > extern template > basic_istream<char>& > operator>>(basic_istream<char>&, string&); > extern template > basic_ostream<char>& > operator<<(basic_ostream<char>&, const string&); > extern template > basic_istream<char>& > getline(basic_istream<char>&, string&, char); > extern template > basic_istream<char>& > getline(basic_istream<char>&, string&); > > > extern template class basic_string<wchar_t>; > extern template > basic_istream<wchar_t>& > operator>>(basic_istream<wchar_t>&, wstring&); > extern template > basic_ostream<wchar_t>& > operator<<(basic_ostream<wchar_t>&, const wstring&); > extern template > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>&, wstring&, wchar_t); > extern template > basic_istream<wchar_t>& > getline(basic_istream<wchar_t>&, wstring&); > > > > >} ># 54 "/usr/include/c++/4.8.2/string" 2 3 ># 41 "/usr/include/c++/4.8.2/bits/locale_classes.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 62 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > class locale > { > public: > > > typedef int category; > > > class facet; > class id; > class _Impl; > > friend class facet; > friend class _Impl; > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Cache> > friend struct __use_cache; ># 98 "/usr/include/c++/4.8.2/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); ># 117 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > locale() throw(); ># 126 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > locale(const locale& __other) throw(); ># 136 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > explicit > locale(const char* __s); ># 151 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > locale(const locale& __base, const char* __s, category __cat); ># 164 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > locale(const locale& __base, const locale& __add, category __cat); ># 177 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > template<typename _Facet> > locale(const locale& __other, _Facet* __f); > > > ~locale() throw(); ># 191 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > const locale& > operator=(const locale& __other) throw(); ># 206 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > template<typename _Facet> > locale > combine(const locale& __other) const; > > > > > > > string > name() const; ># 225 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > bool > operator==(const locale& __other) const throw(); > > > > > > > > bool > operator!=(const locale& __other) const throw() > { return !(this->operator==(__other)); } ># 253 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > template<typename _Char, typename _Traits, typename _Alloc> > bool > operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, > const basic_string<_Char, _Traits, _Alloc>& __s2) const; ># 269 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > static locale > global(const locale& __loc); > > > > > static const locale& > classic(); > > private: > > _Impl* _M_impl; > > > static _Impl* _S_classic; > > > static _Impl* _S_global; > > > > > > static const char* const* const _S_categories; ># 304 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > enum { _S_categories_size = 6 + 6 }; > > > static __gthread_once_t _S_once; > > > explicit > locale(_Impl*) throw(); > > static void > _S_initialize(); > > static void > _S_initialize_once() throw(); > > static category > _S_normalize_category(category); > > void > _M_coalesce(const locale& __base, const locale& __add, category __cat); > }; ># 338 "/usr/include/c++/4.8.2/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: ># 369 "/usr/include/c++/4.8.2/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) throw(); > > static void > _S_destroy_c_locale(__c_locale& __cloc); > > static __c_locale > _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); > > > > static __c_locale > _S_get_c_locale(); > > __attribute__ ((__const__)) static const char* > _S_get_c_name() throw(); > > 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&); > }; ># 436 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > class locale::id > { > private: > friend class locale; > friend class locale::_Impl; > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > > > > mutable size_t _M_index; > > > static _Atomic_word _S_refcount; > > void > operator=(const id&); > > id(const id&); > > public: > > > > id() { } > > size_t > _M_id() const throw(); > }; > > > > class locale::_Impl > { > public: > > friend class locale; > friend class locale::facet; > > template<typename _Facet> > friend bool > has_facet(const locale&) throw(); > > template<typename _Facet> > friend const _Facet& > use_facet(const locale&); > > template<typename _Cache> > friend struct __use_cache; > > private: > > _Atomic_word _M_refcount; > const facet** _M_facets; > size_t _M_facets_size; > const facet** _M_caches; > char** _M_names; > static const locale::id* const _S_id_ctype[]; > static const locale::id* const _S_id_numeric[]; > static const locale::id* const _S_id_collate[]; > static const locale::id* const _S_id_time[]; > static const locale::id* const _S_id_monetary[]; > static const locale::id* const _S_id_messages[]; > static const locale::id* const* const _S_facet_categories[]; > > void > _M_add_reference() throw() > { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } > > void > _M_remove_reference() throw() > { > > ; > if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) > { > ; > try > { delete this; } > catch(...) > { } > } > } > > _Impl(const _Impl&, size_t); > _Impl(const char*, size_t); > _Impl(size_t) throw(); > > ~_Impl() throw(); > > _Impl(const _Impl&); > > void > operator=(const _Impl&); > > bool > _M_check_same_name() > { > bool __ret = true; > if (_M_names[1]) > > for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) > __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; > return __ret; > } > > void > _M_replace_categories(const _Impl*, category); > > void > _M_replace_category(const _Impl*, const locale::id* const*); > > void > _M_replace_facet(const _Impl*, const locale::id*); > > void > _M_install_facet(const locale::id*, const facet*); > > template<typename _Facet> > void > _M_init_facet(_Facet* __facet) > { _M_install_facet(&_Facet::id, __facet); } > > void > _M_install_cache(const facet*, size_t); > }; ># 583 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > template<typename _CharT> > class collate : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > protected: > > > __c_locale _M_c_locale_collate; > > public: > > static locale::id id; ># 610 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > explicit > collate(size_t __refs = 0) > : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) > { } ># 624 "/usr/include/c++/4.8.2/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)) > { } ># 641 "/usr/include/c++/4.8.2/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); } ># 660 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > string_type > transform(const _CharT* __lo, const _CharT* __hi) const > { return this->do_transform(__lo, __hi); } ># 674 "/usr/include/c++/4.8.2/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 throw(); > > size_t > _M_transform(_CharT*, const _CharT*, size_t) const throw(); > > protected: > > virtual > ~collate() > { _S_destroy_c_locale(_M_c_locale_collate); } ># 703 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > virtual int > do_compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const; ># 717 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > virtual string_type > do_transform(const _CharT* __lo, const _CharT* __hi) const; ># 730 "/usr/include/c++/4.8.2/bits/locale_classes.h" 3 > virtual long > do_hash(const _CharT* __lo, const _CharT* __hi) const; > }; > > template<typename _CharT> > locale::id collate<_CharT>::id; > > > template<> > int > collate<char>::_M_compare(const char*, const char*) const throw(); > > template<> > size_t > collate<char>::_M_transform(char*, const char*, size_t) const throw(); > > > template<> > int > collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw(); > > template<> > size_t > collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); > > > > template<typename _CharT> > class collate_byname : public collate<_CharT> > { > public: > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > > explicit > collate_byname(const char* __s, size_t __refs = 0) > : collate<_CharT>(__refs) > { > if (__builtin_strcmp(__s, "C") != 0 > && __builtin_strcmp(__s, "POSIX") != 0) > { > this->_S_destroy_c_locale(this->_M_c_locale_collate); > this->_S_create_c_locale(this->_M_c_locale_collate, __s); > } > } > > protected: > virtual > ~collate_byname() { } > }; > > >} > ># 1 "/usr/include/c++/4.8.2/bits/locale_classes.tcc" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/locale_classes.tcc" 3 ># 38 "/usr/include/c++/4.8.2/bits/locale_classes.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _Facet> > locale:: > locale(const locale& __other, _Facet* __f) > { > _M_impl = new _Impl(*__other._M_impl, 1); > > try > { _M_impl->_M_install_facet(&_Facet::id, __f); } > catch(...) > { > _M_impl->_M_remove_reference(); > throw; > } > delete [] _M_impl->_M_names[0]; > _M_impl->_M_names[0] = 0; > } > > template<typename _Facet> > locale > locale:: > combine(const locale& __other) const > { > _Impl* __tmp = new _Impl(*_M_impl, 1); > try > { > __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); > } > catch(...) > { > __tmp->_M_remove_reference(); > throw; > } > return locale(__tmp); > } > > template<typename _CharT, typename _Traits, typename _Alloc> > bool > locale:: > operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, > const basic_string<_CharT, _Traits, _Alloc>& __s2) const > { > typedef std::collate<_CharT> __collate_type; > const __collate_type& __collate = use_facet<__collate_type>(*this); > return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), > __s2.data(), __s2.data() + __s2.length()) < 0); > } ># 102 "/usr/include/c++/4.8.2/bits/locale_classes.tcc" 3 > template<typename _Facet> > bool > has_facet(const locale& __loc) throw() > { > const size_t __i = _Facet::id._M_id(); > const locale::facet** __facets = __loc._M_impl->_M_facets; > return (__i < __loc._M_impl->_M_facets_size > > > > && static_cast<const _Facet*>(__facets[__i])); > > } ># 130 "/usr/include/c++/4.8.2/bits/locale_classes.tcc" 3 > template<typename _Facet> > const _Facet& > use_facet(const locale& __loc) > { > const size_t __i = _Facet::id._M_id(); > const locale::facet** __facets = __loc._M_impl->_M_facets; > if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) > __throw_bad_cast(); > > > > return static_cast<const _Facet&>(*__facets[__i]); > > } > > > > template<typename _CharT> > int > collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () > { return 0; } > > > template<typename _CharT> > size_t > collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () > { return 0; } > > template<typename _CharT> > int > collate<_CharT>:: > do_compare(const _CharT* __lo1, const _CharT* __hi1, > const _CharT* __lo2, const _CharT* __hi2) const > { > > > const string_type __one(__lo1, __hi1); > const string_type __two(__lo2, __hi2); > > const _CharT* __p = __one.c_str(); > const _CharT* __pend = __one.data() + __one.length(); > const _CharT* __q = __two.c_str(); > const _CharT* __qend = __two.data() + __two.length(); > > > > > for (;;) > { > const int __res = _M_compare(__p, __q); > if (__res) > return __res; > > __p += char_traits<_CharT>::length(__p); > __q += char_traits<_CharT>::length(__q); > if (__p == __pend && __q == __qend) > return 0; > else if (__p == __pend) > return -1; > else if (__q == __qend) > return 1; > > __p++; > __q++; > } > } > > template<typename _CharT> > typename collate<_CharT>::string_type > collate<_CharT>:: > do_transform(const _CharT* __lo, const _CharT* __hi) const > { > string_type __ret; > > > const string_type __str(__lo, __hi); > > const _CharT* __p = __str.c_str(); > const _CharT* __pend = __str.data() + __str.length(); > > size_t __len = (__hi - __lo) * 2; > > _CharT* __c = new _CharT[__len]; > > try > { > > > > for (;;) > { > > size_t __res = _M_transform(__c, __p, __len); > > > if (__res >= __len) > { > __len = __res + 1; > delete [] __c, __c = 0; > __c = new _CharT[__len]; > __res = _M_transform(__c, __p, __len); > } > > __ret.append(__c, __res); > __p += char_traits<_CharT>::length(__p); > if (__p == __pend) > break; > > __p++; > __ret.push_back(_CharT()); > } > } > catch(...) > { > delete [] __c; > throw; > } > > delete [] __c; > > return __ret; > } > > template<typename _CharT> > long > collate<_CharT>:: > do_hash(const _CharT* __lo, const _CharT* __hi) const > { > unsigned long __val = 0; > for (; __lo < __hi; ++__lo) > __val = > *__lo + ((__val << 7) > | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>:: > __digits - 7))); > return static_cast<long>(__val); > } > > > > > extern template class collate<char>; > extern template class collate_byname<char>; > > extern template > const collate<char>& > use_facet<collate<char> >(const locale&); > > extern template > bool > has_facet<collate<char> >(const locale&); > > > extern template class collate<wchar_t>; > extern template class collate_byname<wchar_t>; > > extern template > const collate<wchar_t>& > use_facet<collate<wchar_t> >(const locale&); > > extern template > bool > has_facet<collate<wchar_t> >(const locale&); > > > > >} ># 788 "/usr/include/c++/4.8.2/bits/locale_classes.h" 2 3 ># 42 "/usr/include/c++/4.8.2/bits/ios_base.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > > > enum _Ios_Fmtflags > { > _S_boolalpha = 1L << 0, > _S_dec = 1L << 1, > _S_fixed = 1L << 2, > _S_hex = 1L << 3, > _S_internal = 1L << 4, > _S_left = 1L << 5, > _S_oct = 1L << 6, > _S_right = 1L << 7, > _S_scientific = 1L << 8, > _S_showbase = 1L << 9, > _S_showpoint = 1L << 10, > _S_showpos = 1L << 11, > _S_skipws = 1L << 12, > _S_unitbuf = 1L << 13, > _S_uppercase = 1L << 14, > _S_adjustfield = _S_left | _S_right | _S_internal, > _S_basefield = _S_dec | _S_oct | _S_hex, > _S_floatfield = _S_scientific | _S_fixed, > _S_ios_fmtflags_end = 1L << 16 > }; > > inline _Ios_Fmtflags > operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) > { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Fmtflags > operator~(_Ios_Fmtflags __a) > { return _Ios_Fmtflags(~static_cast<int>(__a)); } > > inline const _Ios_Fmtflags& > operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a | __b; } > > inline const _Ios_Fmtflags& > operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a & __b; } > > inline const _Ios_Fmtflags& > operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) > { return __a = __a ^ __b; } > > > enum _Ios_Openmode > { > _S_app = 1L << 0, > _S_ate = 1L << 1, > _S_bin = 1L << 2, > _S_in = 1L << 3, > _S_out = 1L << 4, > _S_trunc = 1L << 5, > _S_ios_openmode_end = 1L << 16 > }; > > inline _Ios_Openmode > operator&(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Openmode > operator|(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Openmode > operator^(_Ios_Openmode __a, _Ios_Openmode __b) > { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Openmode > operator~(_Ios_Openmode __a) > { return _Ios_Openmode(~static_cast<int>(__a)); } > > inline const _Ios_Openmode& > operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a | __b; } > > inline const _Ios_Openmode& > operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a & __b; } > > inline const _Ios_Openmode& > operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) > { return __a = __a ^ __b; } > > > enum _Ios_Iostate > { > _S_goodbit = 0, > _S_badbit = 1L << 0, > _S_eofbit = 1L << 1, > _S_failbit = 1L << 2, > _S_ios_iostate_end = 1L << 16 > }; > > inline _Ios_Iostate > operator&(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); } > > inline _Ios_Iostate > operator|(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); } > > inline _Ios_Iostate > operator^(_Ios_Iostate __a, _Ios_Iostate __b) > { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); } > > inline _Ios_Iostate > operator~(_Ios_Iostate __a) > { return _Ios_Iostate(~static_cast<int>(__a)); } > > inline const _Ios_Iostate& > operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a | __b; } > > inline const _Ios_Iostate& > operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a & __b; } > > inline const _Ios_Iostate& > operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) > { return __a = __a ^ __b; } > > > enum _Ios_Seekdir > { > _S_beg = 0, > _S_cur = 1, > _S_end = 2, > _S_ios_seekdir_end = 1L << 16 > }; ># 199 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > enum event > { > erase_event, > imbue_event, > copyfmt_event > }; ># 436 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > typedef void (*event_callback) (event __e, ios_base& __b, int __i); ># 448 "/usr/include/c++/4.8.2/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() > { > > ; > int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); > if (__res == 0) > { > ; > } > return __res; > } > }; > > _Callback_list* _M_callbacks; > > void > _M_call_callbacks(event __ev) throw(); > > void > _M_dispose_callbacks(void) throw(); > > > 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() throw(); > > 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; } ># 561 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > fmtflags > flags(fmtflags __fmtfl) > { > fmtflags __old = _M_flags; > _M_flags = __fmtfl; > return __old; > } ># 577 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > fmtflags > setf(fmtflags __fmtfl) > { > fmtflags __old = _M_flags; > _M_flags |= __fmtfl; > return __old; > } ># 594 "/usr/include/c++/4.8.2/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; } ># 620 "/usr/include/c++/4.8.2/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; > } ># 671 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > static bool > sync_with_stdio(bool __sync = true); ># 683 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > locale > imbue(const locale& __loc) throw(); ># 694 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > locale > getloc() const > { return _M_ios_locale; } ># 705 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > const locale& > _M_getloc() const > { return _M_ios_locale; } ># 724 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > static int > xalloc() throw(); ># 740 "/usr/include/c++/4.8.2/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; > } ># 761 "/usr/include/c++/4.8.2/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; > } ># 778 "/usr/include/c++/4.8.2/bits/ios_base.h" 3 > virtual ~ios_base(); > > protected: > ios_base() throw (); > > > > 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; > } > > >} ># 43 "/usr/include/c++/4.8.2/ios" 2 3 ># 1 "/usr/include/c++/4.8.2/streambuf" 1 3 ># 36 "/usr/include/c++/4.8.2/streambuf" 3 ># 37 "/usr/include/c++/4.8.2/streambuf" 3 ># 45 "/usr/include/c++/4.8.2/streambuf" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits> > streamsize > __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, > basic_streambuf<_CharT, _Traits>*, bool&); ># 119 "/usr/include/c++/4.8.2/streambuf" 3 > template<typename _CharT, typename _Traits> > class basic_streambuf > { > public: > > > > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > > > > typedef basic_streambuf<char_type, traits_type> __streambuf_type; > > > friend class basic_ios<char_type, traits_type>; > friend class basic_istream<char_type, traits_type>; > friend class basic_ostream<char_type, traits_type>; > friend class istreambuf_iterator<char_type, traits_type>; > friend class ostreambuf_iterator<char_type, traits_type>; > > friend streamsize > __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); > > template<bool _IsMove, typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > _CharT2*>::__type > __copy_move_a2(istreambuf_iterator<_CharT2>, > istreambuf_iterator<_CharT2>, _CharT2*); > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > istreambuf_iterator<_CharT2> >::__type > find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > const _CharT2&); > > template<typename _CharT2, typename _Traits2> > friend basic_istream<_CharT2, _Traits2>& > operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); > > template<typename _CharT2, typename _Traits2, typename _Alloc> > friend basic_istream<_CharT2, _Traits2>& > operator>>(basic_istream<_CharT2, _Traits2>&, > basic_string<_CharT2, _Traits2, _Alloc>&); > > template<typename _CharT2, typename _Traits2, typename _Alloc> > friend basic_istream<_CharT2, _Traits2>& > getline(basic_istream<_CharT2, _Traits2>&, > basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); > > protected: > > > > > > > > char_type* _M_in_beg; > char_type* _M_in_cur; > char_type* _M_in_end; > char_type* _M_out_beg; > char_type* _M_out_cur; > char_type* _M_out_end; > > > locale _M_buf_locale; > > public: > > virtual > ~basic_streambuf() > { } ># 208 "/usr/include/c++/4.8.2/streambuf" 3 > locale > pubimbue(const locale& __loc) > { > locale __tmp(this->getloc()); > this->imbue(__loc); > _M_buf_locale = __loc; > return __tmp; > } ># 225 "/usr/include/c++/4.8.2/streambuf" 3 > locale > getloc() const > { return _M_buf_locale; } ># 238 "/usr/include/c++/4.8.2/streambuf" 3 > basic_streambuf* > pubsetbuf(char_type* __s, streamsize __n) > { return this->setbuf(__s, __n); } ># 250 "/usr/include/c++/4.8.2/streambuf" 3 > 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); } ># 262 "/usr/include/c++/4.8.2/streambuf" 3 > 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(); } ># 283 "/usr/include/c++/4.8.2/streambuf" 3 > streamsize > in_avail() > { > const streamsize __ret = this->egptr() - this->gptr(); > return __ret ? __ret : this->showmanyc(); > } ># 297 "/usr/include/c++/4.8.2/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; > } ># 315 "/usr/include/c++/4.8.2/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; > } ># 337 "/usr/include/c++/4.8.2/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; > } ># 356 "/usr/include/c++/4.8.2/streambuf" 3 > streamsize > sgetn(char_type* __s, streamsize __n) > { return this->xsgetn(__s, __n); } ># 371 "/usr/include/c++/4.8.2/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; > } ># 396 "/usr/include/c++/4.8.2/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; > } ># 423 "/usr/include/c++/4.8.2/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; > } ># 449 "/usr/include/c++/4.8.2/streambuf" 3 > streamsize > sputn(const char_type* __s, streamsize __n) > { return this->xsputn(__s, __n); } > > protected: ># 463 "/usr/include/c++/4.8.2/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()) > { } ># 481 "/usr/include/c++/4.8.2/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; } ># 497 "/usr/include/c++/4.8.2/streambuf" 3 > void > gbump(int __n) { _M_in_cur += __n; } ># 508 "/usr/include/c++/4.8.2/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; > } ># 528 "/usr/include/c++/4.8.2/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; } ># 544 "/usr/include/c++/4.8.2/streambuf" 3 > void > pbump(int __n) { _M_out_cur += __n; } ># 554 "/usr/include/c++/4.8.2/streambuf" 3 > void > setp(char_type* __pbeg, char_type* __pend) > { > _M_out_beg = _M_out_cur = __pbeg; > _M_out_end = __pend; > } ># 575 "/usr/include/c++/4.8.2/streambuf" 3 > virtual void > imbue(const locale& __loc) > { } ># 590 "/usr/include/c++/4.8.2/streambuf" 3 > virtual basic_streambuf<char_type,_Traits>* > setbuf(char_type*, streamsize) > { return this; } ># 601 "/usr/include/c++/4.8.2/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)); } ># 613 "/usr/include/c++/4.8.2/streambuf" 3 > virtual pos_type > seekpos(pos_type, > ios_base::openmode = ios_base::in | ios_base::out) > { return pos_type(off_type(-1)); } ># 626 "/usr/include/c++/4.8.2/streambuf" 3 > virtual int > sync() { return 0; } ># 648 "/usr/include/c++/4.8.2/streambuf" 3 > virtual streamsize > showmanyc() { return 0; } ># 664 "/usr/include/c++/4.8.2/streambuf" 3 > virtual streamsize > xsgetn(char_type* __s, streamsize __n); ># 686 "/usr/include/c++/4.8.2/streambuf" 3 > virtual int_type > underflow() > { return traits_type::eof(); } ># 699 "/usr/include/c++/4.8.2/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; > } ># 723 "/usr/include/c++/4.8.2/streambuf" 3 > virtual int_type > pbackfail(int_type __c = traits_type::eof()) > { return traits_type::eof(); } ># 741 "/usr/include/c++/4.8.2/streambuf" 3 > virtual streamsize > xsputn(const char_type* __s, streamsize __n); ># 767 "/usr/include/c++/4.8.2/streambuf" 3 > virtual int_type > overflow(int_type __c = traits_type::eof()) > { return traits_type::eof(); } > > > > public: ># 782 "/usr/include/c++/4.8.2/streambuf" 3 > void > stossc() > { > if (this->gptr() < this->egptr()) > this->gbump(1); > else > this->uflow(); > } > > > > void > __safe_gbump(streamsize __n) { _M_in_cur += __n; } > > void > __safe_pbump(streamsize __n) { _M_out_cur += __n; } > > private: > > > basic_streambuf(const basic_streambuf& __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_end), > _M_buf_locale(__sb._M_buf_locale) > { } > > basic_streambuf& > operator=(const basic_streambuf& __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_end; > _M_buf_locale = __sb._M_buf_locale; > return *this; > }; > }; > > > template<> > streamsize > __copy_streambufs_eof(basic_streambuf<char>* __sbin, > basic_streambuf<char>* __sbout, bool& __ineof); > > template<> > streamsize > __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin, > basic_streambuf<wchar_t>* __sbout, bool& __ineof); > > > >} > ># 1 "/usr/include/c++/4.8.2/bits/streambuf.tcc" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/streambuf.tcc" 3 ># 38 "/usr/include/c++/4.8.2/bits/streambuf.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits> > streamsize > basic_streambuf<_CharT, _Traits>:: > xsgetn(char_type* __s, streamsize __n) > { > streamsize __ret = 0; > while (__ret < __n) > { > const streamsize __buf_len = this->egptr() - this->gptr(); > if (__buf_len) > { > const streamsize __remaining = __n - __ret; > const streamsize __len = std::min(__buf_len, __remaining); > traits_type::copy(__s, this->gptr(), __len); > __ret += __len; > __s += __len; > this->__safe_gbump(__len); > } > > if (__ret < __n) > { > const int_type __c = this->uflow(); > if (!traits_type::eq_int_type(__c, traits_type::eof())) > { > traits_type::assign(*__s++, traits_type::to_char_type(__c)); > ++__ret; > } > else > break; > } > } > return __ret; > } > > template<typename _CharT, typename _Traits> > streamsize > basic_streambuf<_CharT, _Traits>:: > xsputn(const char_type* __s, streamsize __n) > { > streamsize __ret = 0; > while (__ret < __n) > { > const streamsize __buf_len = this->epptr() - this->pptr(); > if (__buf_len) > { > const streamsize __remaining = __n - __ret; > const streamsize __len = std::min(__buf_len, __remaining); > traits_type::copy(this->pptr(), __s, __len); > __ret += __len; > __s += __len; > this->__safe_pbump(__len); > } > > if (__ret < __n) > { > int_type __c = this->overflow(traits_type::to_int_type(*__s)); > if (!traits_type::eq_int_type(__c, traits_type::eof())) > { > ++__ret; > ++__s; > } > else > break; > } > } > return __ret; > } > > > > > template<typename _CharT, typename _Traits> > streamsize > __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, > basic_streambuf<_CharT, _Traits>* __sbout, > bool& __ineof) > { > streamsize __ret = 0; > __ineof = true; > typename _Traits::int_type __c = __sbin->sgetc(); > while (!_Traits::eq_int_type(__c, _Traits::eof())) > { > __c = __sbout->sputc(_Traits::to_char_type(__c)); > if (_Traits::eq_int_type(__c, _Traits::eof())) > { > __ineof = false; > break; > } > ++__ret; > __c = __sbin->snextc(); > } > return __ret; > } > > template<typename _CharT, typename _Traits> > inline streamsize > __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, > basic_streambuf<_CharT, _Traits>* __sbout) > { > bool __ineof; > return __copy_streambufs_eof(__sbin, __sbout, __ineof); > } > > > > > extern template class basic_streambuf<char>; > extern template > streamsize > __copy_streambufs(basic_streambuf<char>*, > basic_streambuf<char>*); > extern template > streamsize > __copy_streambufs_eof(basic_streambuf<char>*, > basic_streambuf<char>*, bool&); > > > extern template class basic_streambuf<wchar_t>; > extern template > streamsize > __copy_streambufs(basic_streambuf<wchar_t>*, > basic_streambuf<wchar_t>*); > extern template > streamsize > __copy_streambufs_eof(basic_streambuf<wchar_t>*, > basic_streambuf<wchar_t>*, bool&); > > > > >} ># 839 "/usr/include/c++/4.8.2/streambuf" 2 3 ># 44 "/usr/include/c++/4.8.2/ios" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/basic_ios.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > > > ># 1 "/usr/include/c++/4.8.2/bits/locale_facets.h" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 ># 38 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > ># 1 "/usr/include/c++/4.8.2/cwctype" 1 3 ># 39 "/usr/include/c++/4.8.2/cwctype" 3 ># 40 "/usr/include/c++/4.8.2/cwctype" 3 ># 50 "/usr/include/c++/4.8.2/cwctype" 3 ># 1 "/usr/include/wctype.h" 1 3 4 ># 33 "/usr/include/wctype.h" 3 4 ># 1 "/usr/include/wchar.h" 1 3 4 ># 34 "/usr/include/wctype.h" 2 3 4 ># 49 "/usr/include/wctype.h" 3 4 > > > >typedef unsigned long int wctype_t; ># 71 "/usr/include/wctype.h" 3 4 >enum >{ > __ISwupper = 0, > __ISwlower = 1, > __ISwalpha = 2, > __ISwdigit = 3, > __ISwxdigit = 4, > __ISwspace = 5, > __ISwprint = 6, > __ISwgraph = 7, > __ISwblank = 8, > __ISwcntrl = 9, > __ISwpunct = 10, > __ISwalnum = 11, > > _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), > _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), > _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), > _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), > _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), > _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), > _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), > _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), > _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), > _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), > _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), > _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) >}; > > > >extern "C" { ># 111 "/usr/include/wctype.h" 3 4 >extern int iswalnum (wint_t __wc) throw (); > > > > > >extern int iswalpha (wint_t __wc) throw (); > > >extern int iswcntrl (wint_t __wc) throw (); > > > >extern int iswdigit (wint_t __wc) throw (); > > > >extern int iswgraph (wint_t __wc) throw (); > > > > >extern int iswlower (wint_t __wc) throw (); > > >extern int iswprint (wint_t __wc) throw (); > > > > >extern int iswpunct (wint_t __wc) throw (); > > > > >extern int iswspace (wint_t __wc) throw (); > > > > >extern int iswupper (wint_t __wc) throw (); > > > > >extern int iswxdigit (wint_t __wc) throw (); > > > > > >extern int iswblank (wint_t __wc) throw (); ># 171 "/usr/include/wctype.h" 3 4 >extern wctype_t wctype (const char *__property) throw (); > > > >extern int iswctype (wint_t __wc, wctype_t __desc) throw (); ># 186 "/usr/include/wctype.h" 3 4 >typedef const __int32_t *wctrans_t; > > > > > > > >extern wint_t towlower (wint_t __wc) throw (); > > >extern wint_t towupper (wint_t __wc) throw (); > > >} ># 213 "/usr/include/wctype.h" 3 4 >extern "C" { > > > > >extern wctrans_t wctrans (const char *__property) throw (); > > >extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw (); ># 230 "/usr/include/wctype.h" 3 4 >extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw (); > > > > > >extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw (); > > >extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswlower_l (wint_t __wc, __locale_t __locale) throw (); > > >extern int iswprint_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswspace_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswupper_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw (); > > > > >extern int iswblank_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern wctype_t wctype_l (const char *__property, __locale_t __locale) > throw (); > > > >extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale) > throw (); > > > > > > > >extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw (); > > >extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw (); > > > >extern wctrans_t wctrans_l (const char *__property, __locale_t __locale) > throw (); > > >extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, > __locale_t __locale) throw (); > > > >} ># 51 "/usr/include/c++/4.8.2/cwctype" 2 3 ># 80 "/usr/include/c++/4.8.2/cwctype" 3 >namespace std >{ > using ::wctrans_t; > using ::wctype_t; > using ::wint_t; > > using ::iswalnum; > using ::iswalpha; > > using ::iswblank; > > using ::iswcntrl; > using ::iswctype; > using ::iswdigit; > using ::iswgraph; > using ::iswlower; > using ::iswprint; > using ::iswpunct; > using ::iswspace; > using ::iswupper; > using ::iswxdigit; > using ::towctrans; > using ::towlower; > using ::towupper; > using ::wctrans; > using ::wctype; >} ># 40 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3 ># 1 "/usr/include/c++/4.8.2/cctype" 1 3 ># 39 "/usr/include/c++/4.8.2/cctype" 3 ># 40 "/usr/include/c++/4.8.2/cctype" 3 ># 41 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3 ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/ctype_base.h" 1 3 ># 36 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/ctype_base.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > struct ctype_base > { > > typedef const int* __to_type; > > > > typedef unsigned short 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; > }; > > >} ># 42 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3 > > > > > > ># 1 "/usr/include/c++/4.8.2/bits/streambuf_iterator.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/streambuf_iterator.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/streambuf_iterator.h" 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 49 "/usr/include/c++/4.8.2/bits/streambuf_iterator.h" 3 > template<typename _CharT, typename _Traits> > class istreambuf_iterator > : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type, > _CharT*, > > > > > _CharT&> > > { > public: > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef typename _Traits::int_type int_type; > typedef basic_streambuf<_CharT, _Traits> streambuf_type; > typedef basic_istream<_CharT, _Traits> istream_type; > > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > ostreambuf_iterator<_CharT2> >::__type > copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > ostreambuf_iterator<_CharT2>); > > template<bool _IsMove, typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > _CharT2*>::__type > __copy_move_a2(istreambuf_iterator<_CharT2>, > istreambuf_iterator<_CharT2>, _CharT2*); > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > istreambuf_iterator<_CharT2> >::__type > find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > const _CharT2&); > > private: > > > > > > > > mutable streambuf_type* _M_sbuf; > mutable int_type _M_c; > > public: > > istreambuf_iterator() throw() > : _M_sbuf(0), _M_c(traits_type::eof()) { } ># 112 "/usr/include/c++/4.8.2/bits/streambuf_iterator.h" 3 > istreambuf_iterator(istream_type& __s) throw() > : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } > > > istreambuf_iterator(streambuf_type* __s) throw() > : _M_sbuf(__s), _M_c(traits_type::eof()) { } > > > > > char_type > operator*() const > { > > > > > > > > return traits_type::to_char_type(_M_get()); > } > > > istreambuf_iterator& > operator++() > { > > > ; > if (_M_sbuf) > { > _M_sbuf->sbumpc(); > _M_c = traits_type::eof(); > } > return *this; > } > > > istreambuf_iterator > operator++(int) > { > > > ; > > istreambuf_iterator __old = *this; > if (_M_sbuf) > { > __old._M_c = _M_sbuf->sbumpc(); > _M_c = traits_type::eof(); > } > return __old; > } > > > > > > bool > equal(const istreambuf_iterator& __b) const > { return _M_at_eof() == __b._M_at_eof(); } > > private: > int_type > _M_get() const > { > const int_type __eof = traits_type::eof(); > int_type __ret = __eof; > if (_M_sbuf) > { > if (!traits_type::eq_int_type(_M_c, __eof)) > __ret = _M_c; > else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()), > __eof)) > _M_c = __ret; > else > _M_sbuf = 0; > } > return __ret; > } > > bool > _M_at_eof() const > { > const int_type __eof = traits_type::eof(); > return traits_type::eq_int_type(_M_get(), __eof); > } > }; > > template<typename _CharT, typename _Traits> > inline bool > operator==(const istreambuf_iterator<_CharT, _Traits>& __a, > const istreambuf_iterator<_CharT, _Traits>& __b) > { return __a.equal(__b); } > > template<typename _CharT, typename _Traits> > inline bool > operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, > const istreambuf_iterator<_CharT, _Traits>& __b) > { return !__a.equal(__b); } > > > template<typename _CharT, typename _Traits> > class ostreambuf_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > public: > > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef basic_streambuf<_CharT, _Traits> streambuf_type; > typedef basic_ostream<_CharT, _Traits> ostream_type; > > > template<typename _CharT2> > friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, > ostreambuf_iterator<_CharT2> >::__type > copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, > ostreambuf_iterator<_CharT2>); > > private: > streambuf_type* _M_sbuf; > bool _M_failed; > > public: > > ostreambuf_iterator(ostream_type& __s) throw() > : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } > > > ostreambuf_iterator(streambuf_type* __s) throw() > : _M_sbuf(__s), _M_failed(!_M_sbuf) { } > > > ostreambuf_iterator& > operator=(_CharT __c) > { > if (!_M_failed && > _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) > _M_failed = true; > return *this; > } > > > ostreambuf_iterator& > operator*() > { return *this; } > > > ostreambuf_iterator& > operator++(int) > { return *this; } > > > ostreambuf_iterator& > operator++() > { return *this; } > > > bool > failed() const throw() > { return _M_failed; } > > ostreambuf_iterator& > _M_put(const _CharT* __ws, streamsize __len) > { > if (__builtin_expect(!_M_failed, true) > && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, > false)) > _M_failed = true; > return *this; > } > }; > > > template<typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT> >::__type > copy(istreambuf_iterator<_CharT> __first, > istreambuf_iterator<_CharT> __last, > ostreambuf_iterator<_CharT> __result) > { > if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) > { > bool __ineof; > __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); > if (!__ineof) > __result._M_failed = true; > } > return __result; > } > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT> >::__type > __copy_move_a2(_CharT* __first, _CharT* __last, > ostreambuf_iterator<_CharT> __result) > { > const streamsize __num = __last - __first; > if (__num > 0) > __result._M_put(__first, __num); > return __result; > } > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > ostreambuf_iterator<_CharT> >::__type > __copy_move_a2(const _CharT* __first, const _CharT* __last, > ostreambuf_iterator<_CharT> __result) > { > const streamsize __num = __last - __first; > if (__num > 0) > __result._M_put(__first, __num); > return __result; > } > > template<bool _IsMove, typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > _CharT*>::__type > __copy_move_a2(istreambuf_iterator<_CharT> __first, > istreambuf_iterator<_CharT> __last, _CharT* __result) > { > typedef istreambuf_iterator<_CharT> __is_iterator_type; > typedef typename __is_iterator_type::traits_type traits_type; > typedef typename __is_iterator_type::streambuf_type streambuf_type; > typedef typename traits_type::int_type int_type; > > if (__first._M_sbuf && !__last._M_sbuf) > { > streambuf_type* __sb = __first._M_sbuf; > int_type __c = __sb->sgetc(); > while (!traits_type::eq_int_type(__c, traits_type::eof())) > { > const streamsize __n = __sb->egptr() - __sb->gptr(); > if (__n > 1) > { > traits_type::copy(__result, __sb->gptr(), __n); > __sb->__safe_gbump(__n); > __result += __n; > __c = __sb->underflow(); > } > else > { > *__result++ = traits_type::to_char_type(__c); > __c = __sb->snextc(); > } > } > } > return __result; > } > > template<typename _CharT> > typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, > istreambuf_iterator<_CharT> >::__type > find(istreambuf_iterator<_CharT> __first, > istreambuf_iterator<_CharT> __last, const _CharT& __val) > { > typedef istreambuf_iterator<_CharT> __is_iterator_type; > typedef typename __is_iterator_type::traits_type traits_type; > typedef typename __is_iterator_type::streambuf_type streambuf_type; > typedef typename traits_type::int_type int_type; > > if (__first._M_sbuf && !__last._M_sbuf) > { > const int_type __ival = traits_type::to_int_type(__val); > streambuf_type* __sb = __first._M_sbuf; > int_type __c = __sb->sgetc(); > while (!traits_type::eq_int_type(__c, traits_type::eof()) > && !traits_type::eq_int_type(__c, __ival)) > { > streamsize __n = __sb->egptr() - __sb->gptr(); > if (__n > 1) > { > const _CharT* __p = traits_type::find(__sb->gptr(), > __n, __val); > if (__p) > __n = __p - __sb->gptr(); > __sb->__safe_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; > } > > > > >} ># 49 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 64 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _Tp> > void > __convert_to_v(const char*, _Tp&, ios_base::iostate&, > const __c_locale&) throw(); > > > template<> > void > __convert_to_v(const char*, float&, ios_base::iostate&, > const __c_locale&) throw(); > > template<> > void > __convert_to_v(const char*, double&, ios_base::iostate&, > const __c_locale&) throw(); > > template<> > void > __convert_to_v(const char*, long double&, ios_base::iostate&, > const __c_locale&) throw(); > > > > template<typename _CharT, typename _Traits> > struct __pad > { > static void > _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, > const _CharT* __olds, streamsize __newlen, streamsize __oldlen); > }; > > > > > > > template<typename _CharT> > _CharT* > __add_grouping(_CharT* __s, _CharT __sep, > const char* __gbeg, size_t __gsize, > const _CharT* __first, const _CharT* __last); > > > > > template<typename _CharT> > inline > ostreambuf_iterator<_CharT> > __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) > { > __s._M_put(__ws, __len); > return __s; > } > > > template<typename _CharT, typename _OutIter> > inline > _OutIter > __write(_OutIter __s, const _CharT* __ws, int __len) > { > for (int __j = 0; __j < __len; __j++, ++__s) > *__s = __ws[__j]; > return __s; > } ># 142 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _CharT> > class __ctype_abstract_base : public locale::facet, public ctype_base > { > public: > > > typedef _CharT char_type; ># 161 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > bool > is(mask __m, char_type __c) const > { return this->do_is(__m, __c); } ># 178 "/usr/include/c++/4.8.2/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); } ># 194 "/usr/include/c++/4.8.2/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); } ># 210 "/usr/include/c++/4.8.2/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); } ># 224 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > toupper(char_type __c) const > { return this->do_toupper(__c); } ># 239 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > const char_type* > toupper(char_type *__lo, const char_type* __hi) const > { return this->do_toupper(__lo, __hi); } ># 253 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > tolower(char_type __c) const > { return this->do_tolower(__c); } ># 268 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > const char_type* > tolower(char_type* __lo, const char_type* __hi) const > { return this->do_tolower(__lo, __hi); } ># 285 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > widen(char __c) const > { return this->do_widen(__c); } ># 304 "/usr/include/c++/4.8.2/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); } ># 323 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char > narrow(char_type __c, char __dfault) const > { return this->do_narrow(__c, __dfault); } ># 345 "/usr/include/c++/4.8.2/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() { } ># 370 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual bool > do_is(mask __m, char_type __c) const = 0; ># 389 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, > mask* __vec) const = 0; ># 408 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, > const char_type* __hi) const = 0; ># 427 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const = 0; ># 445 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type __c) const = 0; ># 462 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const = 0; ># 478 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type __c) const = 0; ># 495 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const = 0; ># 514 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_widen(char __c) const = 0; ># 535 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; ># 556 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type __c, char __dfault) const = 0; ># 581 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __to) const = 0; > }; ># 604 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _CharT> > class ctype : public __ctype_abstract_base<_CharT> > { > public: > > typedef _CharT char_type; > typedef typename __ctype_abstract_base<_CharT>::mask mask; > > > static locale::id id; > > explicit > ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } > > protected: > virtual > ~ctype(); > > virtual bool > do_is(mask __m, char_type __c) const; > > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; > > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; > > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const; > > virtual char_type > do_toupper(char_type __c) const; > > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; > > virtual char_type > do_tolower(char_type __c) const; > > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; > > virtual char_type > do_widen(char __c) const; > > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __dest) const; > > virtual char > do_narrow(char_type, char __dfault) const; > > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __to) const; > }; > > template<typename _CharT> > locale::id ctype<_CharT>::id; ># 673 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<> > class ctype<char> : public locale::facet, public ctype_base > { > public: > > > typedef char char_type; > > protected: > > __c_locale _M_c_locale_ctype; > bool _M_del; > __to_type _M_toupper; > __to_type _M_tolower; > const mask* _M_table; > mutable char _M_widen_ok; > mutable char _M_widen[1 + static_cast<unsigned char>(-1)]; > mutable char _M_narrow[1 + static_cast<unsigned char>(-1)]; > mutable char _M_narrow_ok; > > > public: > > static locale::id id; > > static const size_t table_size = 1 + static_cast<unsigned char>(-1); ># 710 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); ># 723 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, > size_t __refs = 0); ># 736 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > inline bool > is(mask __m, char __c) const; ># 751 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > inline const char* > is(const char* __lo, const char* __hi, mask* __vec) const; ># 765 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > inline const char* > scan_is(mask __m, const char* __lo, const char* __hi) const; ># 779 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > inline const char* > scan_not(mask __m, const char* __lo, const char* __hi) const; ># 794 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > toupper(char_type __c) const > { return this->do_toupper(__c); } ># 811 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > const char_type* > toupper(char_type *__lo, const char_type* __hi) const > { return this->do_toupper(__lo, __hi); } ># 827 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > tolower(char_type __c) const > { return this->do_tolower(__c); } ># 844 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > const char_type* > tolower(char_type* __lo, const char_type* __hi) const > { return this->do_tolower(__lo, __hi); } ># 864 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > widen(char __c) const > { > if (_M_widen_ok) > return _M_widen[static_cast<unsigned char>(__c)]; > this->_M_widen_init(); > return this->do_widen(__c); > } ># 891 "/usr/include/c++/4.8.2/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); > } ># 922 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char > narrow(char_type __c, char __dfault) const > { > if (_M_narrow[static_cast<unsigned char>(__c)]) > return _M_narrow[static_cast<unsigned char>(__c)]; > const char __t = do_narrow(__c, __dfault); > if (__t != __dfault) > _M_narrow[static_cast<unsigned char>(__c)] = __t; > return __t; > } ># 955 "/usr/include/c++/4.8.2/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(); ># 1004 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type __c) const; ># 1021 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; ># 1037 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type __c) const; ># 1054 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; ># 1074 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_widen(char __c) const > { return __c; } ># 1097 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __to) const > { > __builtin_memcpy(__to, __lo, __hi - __lo); > return __hi; > } ># 1123 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type __c, char __dfault) const > { return __c; } ># 1149 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __to) const > { > __builtin_memcpy(__to, __lo, __hi - __lo); > return __hi; > } > > private: > void _M_narrow_init() const; > void _M_widen_init() const; > }; ># 1174 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<> > class ctype<wchar_t> : public __ctype_abstract_base<wchar_t> > { > public: > > > typedef wchar_t char_type; > typedef wctype_t __wmask_type; > > protected: > __c_locale _M_c_locale_ctype; > > > bool _M_narrow_ok; > char _M_narrow[128]; > wint_t _M_widen[1 + static_cast<unsigned char>(-1)]; > > > mask _M_bit[16]; > __wmask_type _M_wmask[16]; > > public: > > > static locale::id id; ># 1207 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > ctype(size_t __refs = 0); ># 1218 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > ctype(__c_locale __cloc, size_t __refs = 0); > > protected: > __wmask_type > _M_convert_to_wmask(const mask __m) const throw(); > > > virtual > ~ctype(); ># 1242 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual bool > do_is(mask __m, char_type __c) const; ># 1261 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; ># 1279 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; ># 1297 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_scan_not(mask __m, const char_type* __lo, > const char_type* __hi) const; ># 1314 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_toupper(char_type __c) const; ># 1331 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_toupper(char_type* __lo, const char_type* __hi) const; ># 1347 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_tolower(char_type __c) const; ># 1364 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_tolower(char_type* __lo, const char_type* __hi) const; ># 1384 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_widen(char __c) const; ># 1406 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char* > do_widen(const char* __lo, const char* __hi, char_type* __to) const; ># 1429 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char > do_narrow(char_type __c, char __dfault) const; ># 1455 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual const char_type* > do_narrow(const char_type* __lo, const char_type* __hi, > char __dfault, char* __to) const; > > > void > _M_initialize_ctype() throw(); > }; > > > > template<typename _CharT> > class ctype_byname : public ctype<_CharT> > { > public: > typedef typename ctype<_CharT>::mask mask; > > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname() { }; > }; > > > template<> > class ctype_byname<char> : public ctype<char> > { > public: > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname(); > }; > > > template<> > class ctype_byname<wchar_t> : public ctype<wchar_t> > { > public: > explicit > ctype_byname(const char* __s, size_t __refs = 0); > > protected: > virtual > ~ctype_byname(); > }; > > > >} > > ># 1 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/ctype_inline.h" 1 3 ># 37 "/usr/include/c++/4.8.2/aarch64-redhat-linux/bits/ctype_inline.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > bool > ctype<char>:: > is(mask __m, char __c) const > { return _M_table[static_cast<unsigned char>(__c)] & __m; } > > const char* > ctype<char>:: > is(const char* __low, const char* __high, mask* __vec) const > { > while (__low < __high) > *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; > return __high; > } > > const char* > ctype<char>:: > scan_is(mask __m, const char* __low, const char* __high) const > { > while (__low < __high > && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) > ++__low; > return __low; > } > > const char* > ctype<char>:: > scan_not(mask __m, const char* __low, const char* __high) const > { > while (__low < __high > && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) > ++__low; > return __low; > } > > >} ># 1512 "/usr/include/c++/4.8.2/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) throw(); > }; > > template<typename _CharT> > struct __numpunct_cache : public locale::facet > { > const char* _M_grouping; > size_t _M_grouping_size; > bool _M_use_grouping; > const _CharT* _M_truename; > size_t _M_truename_size; > const _CharT* _M_falsename; > size_t _M_falsename_size; > _CharT _M_decimal_point; > _CharT _M_thousands_sep; > > > > > > _CharT _M_atoms_out[__num_base::_S_oend]; > > > > > > _CharT _M_atoms_in[__num_base::_S_iend]; > > bool _M_allocated; > > __numpunct_cache(size_t __refs = 0) > : facet(__refs), _M_grouping(0), _M_grouping_size(0), > _M_use_grouping(false), > _M_truename(0), _M_truename_size(0), _M_falsename(0), > _M_falsename_size(0), _M_decimal_point(_CharT()), > _M_thousands_sep(_CharT()), _M_allocated(false) > { } > > ~__numpunct_cache(); > > void > _M_cache(const locale& __loc); > > private: > __numpunct_cache& > operator=(const __numpunct_cache&); > > explicit > __numpunct_cache(const __numpunct_cache&); > }; > > template<typename _CharT> > __numpunct_cache<_CharT>::~__numpunct_cache() > { > if (_M_allocated) > { > delete [] _M_grouping; > delete [] _M_truename; > delete [] _M_falsename; > } > } ># 1640 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _CharT> > class numpunct : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > typedef __numpunct_cache<_CharT> __cache_type; > > protected: > __cache_type* _M_data; > > public: > > static locale::id id; > > > > > > > explicit > numpunct(size_t __refs = 0) > : facet(__refs), _M_data(0) > { _M_initialize_numpunct(); } ># 1678 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > numpunct(__cache_type* __cache, size_t __refs = 0) > : facet(__refs), _M_data(__cache) > { _M_initialize_numpunct(); } ># 1692 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > numpunct(__c_locale __cloc, size_t __refs = 0) > : facet(__refs), _M_data(0) > { _M_initialize_numpunct(__cloc); } ># 1706 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > decimal_point() const > { return this->do_decimal_point(); } ># 1719 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > char_type > thousands_sep() const > { return this->do_thousands_sep(); } ># 1750 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > string > grouping() const > { return this->do_grouping(); } ># 1763 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > string_type > truename() const > { return this->do_truename(); } ># 1776 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > string_type > falsename() const > { return this->do_falsename(); } > > protected: > > virtual > ~numpunct(); ># 1793 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_decimal_point() const > { return _M_data->_M_decimal_point; } ># 1805 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual char_type > do_thousands_sep() const > { return _M_data->_M_thousands_sep; } ># 1818 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual string > do_grouping() const > { return _M_data->_M_grouping; } ># 1831 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual string_type > do_truename() const > { return _M_data->_M_truename; } ># 1844 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual string_type > do_falsename() const > { return _M_data->_M_falsename; } > > > void > _M_initialize_numpunct(__c_locale __cloc = 0); > }; > > template<typename _CharT> > locale::id numpunct<_CharT>::id; > > template<> > numpunct<char>::~numpunct(); > > template<> > void > numpunct<char>::_M_initialize_numpunct(__c_locale __cloc); > > > template<> > numpunct<wchar_t>::~numpunct(); > > template<> > void > numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc); > > > > template<typename _CharT> > class numpunct_byname : public numpunct<_CharT> > { > public: > typedef _CharT char_type; > typedef basic_string<_CharT> string_type; > > explicit > numpunct_byname(const char* __s, size_t __refs = 0) > : numpunct<_CharT>(__refs) > { > if (__builtin_strcmp(__s, "C") != 0 > && __builtin_strcmp(__s, "POSIX") != 0) > { > __c_locale __tmp; > this->_S_create_c_locale(__tmp, __s); > this->_M_initialize_numpunct(__tmp); > this->_S_destroy_c_locale(__tmp); > } > } > > protected: > virtual > ~numpunct_byname() { } > }; ># 1914 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _CharT, typename _InIter> > class num_get : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _InIter iter_type; > > > > static locale::id id; ># 1935 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > num_get(size_t __refs = 0) : facet(__refs) { } ># 1961 "/usr/include/c++/4.8.2/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); } ># 1998 "/usr/include/c++/4.8.2/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); } ># 2058 "/usr/include/c++/4.8.2/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); } ># 2101 "/usr/include/c++/4.8.2/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&) const; > > template<typename _ValueT> > iter_type > _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, > _ValueT&) const; > > template<typename _CharT2> > typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type > _M_find(const _CharT2*, size_t __len, _CharT2 __c) const > { > int __ret = -1; > if (__len <= 10) > { > if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) > __ret = __c - _CharT2('0'); > } > else > { > if (__c >= _CharT2('0') && __c <= _CharT2('9')) > __ret = __c - _CharT2('0'); > else if (__c >= _CharT2('a') && __c <= _CharT2('f')) > __ret = 10 + (__c - _CharT2('a')); > else if (__c >= _CharT2('A') && __c <= _CharT2('F')) > __ret = 10 + (__c - _CharT2('A')); > } > return __ret; > } > > template<typename _CharT2> > typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value, > int>::__type > _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const > { > int __ret = -1; > const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); > if (__q) > { > __ret = __q - __zero; > if (__ret > 15) > __ret -= 6; > } > return __ret; > } ># 2172 "/usr/include/c++/4.8.2/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 __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long& __v) const > { return _M_extract_int(__beg, __end, __io, __err, __v); } > > virtual iter_type > 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); } > > virtual iter_type > 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); } > > virtual iter_type > 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); } > > > virtual iter_type > 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); } > > virtual iter_type > 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); } > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, > double&) const; > > > > > > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, > long double&) const; > > > virtual iter_type > do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; ># 2235 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > }; > > template<typename _CharT, typename _InIter> > locale::id num_get<_CharT, _InIter>::id; ># 2253 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _CharT, typename _OutIter> > class num_put : public locale::facet > { > public: > > > > typedef _CharT char_type; > typedef _OutIter iter_type; > > > > static locale::id id; ># 2274 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > explicit > num_put(size_t __refs = 0) : facet(__refs) { } ># 2292 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const > { return this->do_put(__s, __io, __fill, __v); } ># 2334 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, long __v) const > { return this->do_put(__s, __io, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long __v) const > { return this->do_put(__s, __io, __fill, __v); } > > > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const > { return this->do_put(__s, __io, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long long __v) const > { return this->do_put(__s, __io, __fill, __v); } ># 2397 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, double __v) const > { return this->do_put(__s, __io, __fill, __v); } > > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, > long double __v) const > { return this->do_put(__s, __io, __fill, __v); } ># 2422 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > iter_type > put(iter_type __s, ios_base& __io, char_type __fill, > const void* __v) const > { return this->do_put(__s, __io, __fill, __v); } > > protected: > template<typename _ValueT> > iter_type > _M_insert_float(iter_type, ios_base& __io, char_type __fill, > char __mod, _ValueT __v) const; > > void > _M_group_float(const char* __grouping, size_t __grouping_size, > char_type __sep, const char_type* __p, char_type* __new, > char_type* __cs, int& __len) const; > > template<typename _ValueT> > iter_type > _M_insert_int(iter_type, ios_base& __io, char_type __fill, > _ValueT __v) const; > > void > _M_group_int(const char* __grouping, size_t __grouping_size, > char_type __sep, ios_base& __io, char_type* __new, > char_type* __cs, int& __len) const; > > void > _M_pad(char_type __fill, streamsize __w, ios_base& __io, > char_type* __new, const char_type* __cs, int& __len) const; > > > virtual > ~num_put() { }; ># 2470 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > virtual iter_type > do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; > > virtual iter_type > do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > virtual iter_type > do_put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > > virtual iter_type > do_put(iter_type __s, ios_base& __io, char_type __fill, > long long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > virtual iter_type > do_put(iter_type __s, ios_base& __io, char_type __fill, > unsigned long long __v) const > { return _M_insert_int(__s, __io, __fill, __v); } > > > virtual iter_type > do_put(iter_type, ios_base&, char_type, double) const; > > > > > > > virtual iter_type > do_put(iter_type, ios_base&, char_type, long double) const; > > > virtual iter_type > do_put(iter_type, ios_base&, char_type, const void*) const; > > > > > > > > }; > > template <typename _CharT, typename _OutIter> > locale::id num_put<_CharT, _OutIter>::id; ># 2528 "/usr/include/c++/4.8.2/bits/locale_facets.h" 3 > template<typename _CharT> > inline bool > isspace(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); } > > > template<typename _CharT> > inline bool > isprint(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); } > > > template<typename _CharT> > inline bool > iscntrl(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); } > > > template<typename _CharT> > inline bool > isupper(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); } > > > template<typename _CharT> > inline bool > islower(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); } > > > template<typename _CharT> > inline bool > isalpha(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); } > > > template<typename _CharT> > inline bool > isdigit(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); } > > > template<typename _CharT> > inline bool > ispunct(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); } > > > template<typename _CharT> > inline bool > isxdigit(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); } > > > template<typename _CharT> > inline bool > isalnum(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); } > > > template<typename _CharT> > inline bool > isgraph(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); } > > > template<typename _CharT> > inline _CharT > toupper(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).toupper(__c); } > > > template<typename _CharT> > inline _CharT > tolower(_CharT __c, const locale& __loc) > { return use_facet<ctype<_CharT> >(__loc).tolower(__c); } > > >} > ># 1 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 ># 34 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > template<typename _Facet> > struct __use_cache > { > const _Facet* > operator() (const locale& __loc) const; > }; > > > template<typename _CharT> > struct __use_cache<__numpunct_cache<_CharT> > > { > const __numpunct_cache<_CharT>* > operator() (const locale& __loc) const > { > const size_t __i = numpunct<_CharT>::id._M_id(); > const locale::facet** __caches = __loc._M_impl->_M_caches; > if (!__caches[__i]) > { > __numpunct_cache<_CharT>* __tmp = 0; > try > { > __tmp = new __numpunct_cache<_CharT>; > __tmp->_M_cache(__loc); > } > catch(...) > { > delete __tmp; > throw; > } > __loc._M_impl->_M_install_cache(__tmp, __i); > } > return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]); > } > }; > > template<typename _CharT> > void > __numpunct_cache<_CharT>::_M_cache(const locale& __loc) > { > _M_allocated = true; > > const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc); > > char* __grouping = 0; > _CharT* __truename = 0; > _CharT* __falsename = 0; > try > { > _M_grouping_size = __np.grouping().size(); > __grouping = new char[_M_grouping_size]; > __np.grouping().copy(__grouping, _M_grouping_size); > _M_grouping = __grouping; > _M_use_grouping = (_M_grouping_size > && static_cast<signed char>(_M_grouping[0]) > 0 > && (_M_grouping[0] > != __gnu_cxx::__numeric_traits<char>::__max)); > > _M_truename_size = __np.truename().size(); > __truename = new _CharT[_M_truename_size]; > __np.truename().copy(__truename, _M_truename_size); > _M_truename = __truename; > > _M_falsename_size = __np.falsename().size(); > __falsename = new _CharT[_M_falsename_size]; > __np.falsename().copy(__falsename, _M_falsename_size); > _M_falsename = __falsename; > > _M_decimal_point = __np.decimal_point(); > _M_thousands_sep = __np.thousands_sep(); > > const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc); > __ct.widen(__num_base::_S_atoms_out, > __num_base::_S_atoms_out > + __num_base::_S_oend, _M_atoms_out); > __ct.widen(__num_base::_S_atoms_in, > __num_base::_S_atoms_in > + __num_base::_S_iend, _M_atoms_in); > } > catch(...) > { > delete [] __grouping; > delete [] __truename; > delete [] __falsename; > throw; > } > } ># 136 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > __attribute__ ((__pure__)) bool > __verify_grouping(const char* __grouping, size_t __grouping_size, > const string& __grouping_tmp) throw (); > > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, > ios_base::iostate& __err, string& __xtrc) const > { > typedef char_traits<_CharT> __traits_type; > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_in; > char_type __c = char_type(); > > > bool __testeof = __beg == __end; > > > if (!__testeof) > { > __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if ((__plus || __c == __lit[__num_base::_S_iminus]) > && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > { > __xtrc += __plus ? '+' : '-'; > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > } > > > bool __found_mantissa = false; > int __sep_pos = 0; > while (!__testeof) > { > if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > || __c == __lc->_M_decimal_point) > break; > else if (__c == __lit[__num_base::_S_izero]) > { > if (!__found_mantissa) > { > __xtrc += '0'; > __found_mantissa = true; > } > ++__sep_pos; > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > else > break; > } > > > bool __found_dec = false; > bool __found_sci = false; > string __found_grouping; > if (__lc->_M_use_grouping) > __found_grouping.reserve(32); > const char_type* __lit_zero = __lit + __num_base::_S_izero; > > if (!__lc->_M_allocated) > > while (!__testeof) > { > const int __digit = _M_find(__lit_zero, 10, __c); > if (__digit != -1) > { > __xtrc += '0' + __digit; > __found_mantissa = true; > } > else if (__c == __lc->_M_decimal_point > && !__found_dec && !__found_sci) > { > __xtrc += '.'; > __found_dec = true; > } > else if ((__c == __lit[__num_base::_S_ie] > || __c == __lit[__num_base::_S_iE]) > && !__found_sci && __found_mantissa) > { > > __xtrc += 'e'; > __found_sci = true; > > > if (++__beg != __end) > { > __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if (__plus || __c == __lit[__num_base::_S_iminus]) > __xtrc += __plus ? '+' : '-'; > else > continue; > } > else > { > __testeof = true; > break; > } > } > else > break; > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > else > while (!__testeof) > { > > > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > if (!__found_dec && !__found_sci) > { > > > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > } > else > { > > > __xtrc.clear(); > break; > } > } > else > break; > } > else if (__c == __lc->_M_decimal_point) > { > if (!__found_dec && !__found_sci) > { > > > > if (__found_grouping.size()) > __found_grouping += static_cast<char>(__sep_pos); > __xtrc += '.'; > __found_dec = true; > } > else > break; > } > else > { > const char_type* __q = > __traits_type::find(__lit_zero, 10, __c); > if (__q) > { > __xtrc += '0' + (__q - __lit_zero); > __found_mantissa = true; > ++__sep_pos; > } > else if ((__c == __lit[__num_base::_S_ie] > || __c == __lit[__num_base::_S_iE]) > && !__found_sci && __found_mantissa) > { > > if (__found_grouping.size() && !__found_dec) > __found_grouping += static_cast<char>(__sep_pos); > __xtrc += 'e'; > __found_sci = true; > > > if (++__beg != __end) > { > __c = *__beg; > const bool __plus = __c == __lit[__num_base::_S_iplus]; > if ((__plus || __c == __lit[__num_base::_S_iminus]) > && !(__lc->_M_use_grouping > && __c == __lc->_M_thousands_sep) > && !(__c == __lc->_M_decimal_point)) > __xtrc += __plus ? '+' : '-'; > else > continue; > } > else > { > __testeof = true; > break; > } > } > else > break; > } > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > > > > if (__found_grouping.size()) > { > > if (!__found_dec && !__found_sci) > __found_grouping += static_cast<char>(__sep_pos); > > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __found_grouping)) > __err = ios_base::failbit; > } > > return __beg; > } > > template<typename _CharT, typename _InIter> > template<typename _ValueT> > _InIter > num_get<_CharT, _InIter>:: > _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, > ios_base::iostate& __err, _ValueT& __v) const > { > typedef char_traits<_CharT> __traits_type; > using __gnu_cxx::__add_unsigned; > typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_in; > char_type __c = char_type(); > > > const ios_base::fmtflags __basefield = __io.flags() > & ios_base::basefield; > const bool __oct = __basefield == ios_base::oct; > int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); > > > bool __testeof = __beg == __end; > > > bool __negative = false; > if (!__testeof) > { > __c = *__beg; > __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; > bool __testoverflow = false; > const __unsigned_type __max = > (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) > ? -__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) > __testoverflow = true; > else > { > __result *= __base; > __testoverflow |= __result > __max - __digit; > __result += __digit; > ++__sep_pos; > } > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > else > while (!__testeof) > { > > > if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) > { > > > if (__sep_pos) > { > __found_grouping += static_cast<char>(__sep_pos); > __sep_pos = 0; > } > else > { > __testfail = true; > break; > } > } > else if (__c == __lc->_M_decimal_point) > break; > else > { > const char_type* __q = > __traits_type::find(__lit_zero, __len, __c); > if (!__q) > break; > > __digit = __q - __lit_zero; > if (__digit > 15) > __digit -= 6; > if (__result > __smax) > __testoverflow = true; > else > { > __result *= __base; > __testoverflow |= __result > __max - __digit; > __result += __digit; > ++__sep_pos; > } > } > > if (++__beg != __end) > __c = *__beg; > else > __testeof = true; > } > > > > if (__found_grouping.size()) > { > > __found_grouping += static_cast<char>(__sep_pos); > > if (!std::__verify_grouping(__lc->_M_grouping, > __lc->_M_grouping_size, > __found_grouping)) > __err = ios_base::failbit; > } > > > > if ((!__sep_pos && !__found_zero && !__found_grouping.size()) > || __testfail) > { > __v = 0; > __err = ios_base::failbit; > } > else if (__testoverflow) > { > if (__negative > && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) > __v = __gnu_cxx::__numeric_traits<_ValueT>::__min; > else > __v = __gnu_cxx::__numeric_traits<_ValueT>::__max; > __err = ios_base::failbit; > } > else > __v = __negative ? -__result : __result; > > if (__testeof) > __err |= ios_base::eofbit; > return __beg; > } > > > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, bool& __v) const > { > if (!(__io.flags() & ios_base::boolalpha)) > { > > > > long __l = -1; > __beg = _M_extract_int(__beg, __end, __io, __err, __l); > if (__l == 0 || __l == 1) > __v = bool(__l); > else > { > > > __v = true; > __err = ios_base::failbit; > if (__beg == __end) > __err |= ios_base::eofbit; > } > } > 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; > bool __donef = __lc->_M_falsename_size == 0; > bool __donet = __lc->_M_truename_size == 0; > bool __testeof = false; > size_t __n = 0; > while (!__donef || !__donet) > { > if (__beg == __end) > { > __testeof = true; > break; > } > > const char_type __c = *__beg; > > if (!__donef) > __testf = __c == __lc->_M_falsename[__n]; > > if (!__testf && __donet) > break; > > if (!__donet) > __testt = __c == __lc->_M_truename[__n]; > > if (!__testt && __donef) > break; > > if (!__testt && !__testf) > break; > > ++__n; > ++__beg; > > __donef = !__testf || __n >= __lc->_M_falsename_size; > __donet = !__testt || __n >= __lc->_M_truename_size; > } > if (__testf && __n == __lc->_M_falsename_size && __n) > { > __v = false; > if (__testt && __n == __lc->_M_truename_size) > __err = ios_base::failbit; > else > __err = __testeof ? ios_base::eofbit : ios_base::goodbit; > } > else if (__testt && __n == __lc->_M_truename_size && __n) > { > __v = true; > __err = __testeof ? ios_base::eofbit : ios_base::goodbit; > } > else > { > > > __v = false; > __err = ios_base::failbit; > if (__testeof) > __err |= ios_base::eofbit; > } > } > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, 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()); > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, 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()); > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } ># 730 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, long double& __v) const > { > string __xtrc; > __xtrc.reserve(32); > __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); > std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); > if (__beg == __end) > __err |= ios_base::eofbit; > return __beg; > } > > template<typename _CharT, typename _InIter> > _InIter > num_get<_CharT, _InIter>:: > do_get(iter_type __beg, iter_type __end, ios_base& __io, > ios_base::iostate& __err, 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); > > __v = reinterpret_cast<void*>(__ul); > return __beg; > } > > > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_pad(_CharT __fill, streamsize __w, ios_base& __io, > _CharT* __new, const _CharT* __cs, int& __len) const > { > > > __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, > __cs, __w, __len); > __len = static_cast<int>(__w); > } > > > > template<typename _CharT, typename _ValueT> > int > __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, > ios_base::fmtflags __flags, bool __dec) > { > _CharT* __buf = __bufend; > if (__builtin_expect(__dec, true)) > { > > do > { > *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; > __v /= 10; > } > while (__v != 0); > } > else if ((__flags & ios_base::basefield) == ios_base::oct) > { > > do > { > *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; > __v >>= 3; > } > while (__v != 0); > } > else > { > > const bool __uppercase = __flags & ios_base::uppercase; > const int __case_offset = __uppercase ? __num_base::_S_oudigits > : __num_base::_S_odigits; > do > { > *--__buf = __lit[(__v & 0xf) + __case_offset]; > __v >>= 4; > } > while (__v != 0); > } > return __bufend - __buf; > } > > > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, > ios_base&, _CharT* __new, _CharT* __cs, int& __len) const > { > _CharT* __p = std::__add_grouping(__new, __sep, __grouping, > __grouping_size, __cs, __cs + __len); > __len = __p - __new; > } > > template<typename _CharT, typename _OutIter> > template<typename _ValueT> > _OutIter > num_put<_CharT, _OutIter>:: > _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, > _ValueT __v) const > { > using __gnu_cxx::__add_unsigned; > typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > const _CharT* __lit = __lc->_M_atoms_out; > const ios_base::fmtflags __flags = __io.flags(); > > > const int __ilen = 5 * sizeof(_ValueT); > _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __ilen)); > > > > const ios_base::fmtflags __basefield = __flags & ios_base::basefield; > const bool __dec = (__basefield != ios_base::oct > && __basefield != ios_base::hex); > const __unsigned_type __u = ((__v > 0 || !__dec) > ? __unsigned_type(__v) > : -__unsigned_type(__v)); > int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); > __cs += __ilen - __len; > > > if (__lc->_M_use_grouping) > { > > > _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * (__len + 1) > * 2)); > _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, > __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); > __cs = __cs2 + 2; > } > > > if (__builtin_expect(__dec, true)) > { > > if (__v >= 0) > { > if (bool(__flags & ios_base::showpos) > && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) > *--__cs = __lit[__num_base::_S_oplus], ++__len; > } > else > *--__cs = __lit[__num_base::_S_ominus], ++__len; > } > else if (bool(__flags & ios_base::showbase) && __v) > { > if (__basefield == ios_base::oct) > *--__cs = __lit[__num_base::_S_odigits], ++__len; > else > { > > const bool __uppercase = __flags & ios_base::uppercase; > *--__cs = __lit[__num_base::_S_ox + __uppercase]; > > *--__cs = __lit[__num_base::_S_odigits]; > __len += 2; > } > } > > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __cs3, __cs, __len); > __cs = __cs3; > } > __io.width(0); > > > > return std::__write(__s, __cs, __len); > } > > template<typename _CharT, typename _OutIter> > void > num_put<_CharT, _OutIter>:: > _M_group_float(const char* __grouping, size_t __grouping_size, > _CharT __sep, const _CharT* __p, _CharT* __new, > _CharT* __cs, int& __len) const > { > > > > const int __declen = __p ? __p - __cs : __len; > _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, > __grouping_size, > __cs, __cs + __declen); > > > int __newlen = __p2 - __new; > if (__p) > { > char_traits<_CharT>::copy(__p2, __p, __len - __declen); > __newlen += __len - __declen; > } > __len = __newlen; > } ># 966 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _OutIter> > template<typename _ValueT> > _OutIter > num_put<_CharT, _OutIter>:: > _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, > _ValueT __v) const > { > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > > const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); > > const int __max_digits = > __gnu_cxx::__numeric_traits<_ValueT>::__digits10; > > > int __len; > > char __fbuf[16]; > __num_base::_S_format_float(__io, __fbuf, __mod); > > > > > int __cs_size = __max_digits * 3; > char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, > __fbuf, __prec, __v); > > > if (__len >= __cs_size) > { > __cs_size = __len + 1; > __cs = static_cast<char*>(__builtin_alloca(__cs_size)); > __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, > __fbuf, __prec, __v); > } ># 1027 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len)); > __ctype.widen(__cs, __cs + __len, __ws); > > > _CharT* __wp = 0; > const char* __p = char_traits<char>::find(__cs, __len, '.'); > if (__p) > { > __wp = __ws + (__p - __cs); > *__wp = __lc->_M_decimal_point; > } > > > > > if (__lc->_M_use_grouping > && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' > && __cs[1] >= '0' && __cs[2] >= '0'))) > { > > > _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __len * 2)); > > streamsize __off = 0; > if (__cs[0] == '-' || __cs[0] == '+') > { > __off = 1; > __ws2[0] = __ws[0]; > __len -= 1; > } > > _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, > __lc->_M_thousands_sep, __wp, __ws2 + __off, > __ws + __off, __len); > __len += __off; > > __ws = __ws2; > } > > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __w)); > _M_pad(__fill, __w, __io, __ws3, __ws, __len); > __ws = __ws3; > } > __io.width(0); > > > > return std::__write(__s, __ws, __len); > } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const > { > const ios_base::fmtflags __flags = __io.flags(); > if ((__flags & ios_base::boolalpha) == 0) > { > const long __l = __v; > __s = _M_insert_int(__s, __io, __fill, __l); > } > else > { > typedef __numpunct_cache<_CharT> __cache_type; > __use_cache<__cache_type> __uc; > const locale& __loc = __io._M_getloc(); > const __cache_type* __lc = __uc(__loc); > > const _CharT* __name = __v ? __lc->_M_truename > : __lc->_M_falsename; > int __len = __v ? __lc->_M_truename_size > : __lc->_M_falsename_size; > > const streamsize __w = __io.width(); > if (__w > static_cast<streamsize>(__len)) > { > const streamsize __plen = __w - __len; > _CharT* __ps > = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) > * __plen)); > > char_traits<_CharT>::assign(__ps, __plen, __fill); > __io.width(0); > > if ((__flags & ios_base::adjustfield) == ios_base::left) > { > __s = std::__write(__s, __name, __len); > __s = std::__write(__s, __ps, __plen); > } > else > { > __s = std::__write(__s, __ps, __plen); > __s = std::__write(__s, __name, __len); > } > return __s; > } > __io.width(0); > __s = std::__write(__s, __name, __len); > } > return __s; > } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const > { return _M_insert_float(__s, __io, __fill, char(), __v); } ># 1152 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > long double __v) const > { return _M_insert_float(__s, __io, __fill, 'L', __v); } > > template<typename _CharT, typename _OutIter> > _OutIter > num_put<_CharT, _OutIter>:: > do_put(iter_type __s, ios_base& __io, char_type __fill, > const void* __v) const > { > const ios_base::fmtflags __flags = __io.flags(); > const ios_base::fmtflags __fmt = ~(ios_base::basefield > | ios_base::uppercase); > __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; > } ># 1189 "/usr/include/c++/4.8.2/bits/locale_facets.tcc" 3 > template<typename _CharT, typename _Traits> > void > __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, > _CharT* __news, const _CharT* __olds, > streamsize __newlen, streamsize __oldlen) > { > const size_t __plen = static_cast<size_t>(__newlen - __oldlen); > const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; > > > if (__adjust == ios_base::left) > { > _Traits::copy(__news, __olds, __oldlen); > _Traits::assign(__news + __oldlen, __plen, __fill); > return; > } > > size_t __mod = 0; > if (__adjust == ios_base::internal) > { > > > > const locale& __loc = __io._M_getloc(); > const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); > > if (__ctype.widen('-') == __olds[0] > || __ctype.widen('+') == __olds[0]) > { > __news[0] = __olds[0]; > __mod = 1; > ++__news; > } > else if (__ctype.widen('0') == __olds[0] > && __oldlen > 1 > && (__ctype.widen('x') == __olds[1] > || __ctype.widen('X') == __olds[1])) > { > __news[0] = __olds[0]; > __news[1] = __olds[1]; > __mod = 2; > __news += 2; > } > > } > _Traits::assign(__news, __plen, __fill); > _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); > } > > template<typename _CharT> > _CharT* > __add_grouping(_CharT* __s, _CharT __sep, > const char* __gbeg, size_t __gsize, > const _CharT* __first, const _CharT* __last) > { > size_t __idx = 0; > size_t __ctr = 0; > > while (__last - __first > __gbeg[__idx] > && static_cast<signed char>(__gbeg[__idx]) > 0 > && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max) > { > __last -= __gbeg[__idx]; > __idx < __gsize - 1 ? ++__idx : ++__ctr; > } > > while (__first != __last) > *__s++ = *__first++; > > while (__ctr--) > { > *__s++ = __sep; > for (char __i = __gbeg[__idx]; __i > 0; --__i) > *__s++ = *__first++; > } > > while (__idx--) > { > *__s++ = __sep; > for (char __i = __gbeg[__idx]; __i > 0; --__i) > *__s++ = *__first++; > } > > return __s; > } > > > > > extern template class numpunct<char>; > extern template class numpunct_byname<char>; > extern template class num_get<char>; > extern template class num_put<char>; > extern template class ctype_byname<char>; > > extern template > const ctype<char>& > use_facet<ctype<char> >(const locale&); > > extern template > const numpunct<char>& > use_facet<numpunct<char> >(const locale&); > > extern template > const num_put<char>& > use_facet<num_put<char> >(const locale&); > > extern template > const num_get<char>& > use_facet<num_get<char> >(const locale&); > > extern template > bool > has_facet<ctype<char> >(const locale&); > > extern template > bool > has_facet<numpunct<char> >(const locale&); > > extern template > bool > has_facet<num_put<char> >(const locale&); > > extern template > bool > has_facet<num_get<char> >(const locale&); > > > extern template class numpunct<wchar_t>; > extern template class numpunct_byname<wchar_t>; > extern template class num_get<wchar_t>; > extern template class num_put<wchar_t>; > extern template class ctype_byname<wchar_t>; > > extern template > const ctype<wchar_t>& > use_facet<ctype<wchar_t> >(const locale&); > > extern template > const numpunct<wchar_t>& > use_facet<numpunct<wchar_t> >(const locale&); > > extern template > const num_put<wchar_t>& > use_facet<num_put<wchar_t> >(const locale&); > > extern template > const num_get<wchar_t>& > use_facet<num_get<wchar_t> >(const locale&); > > extern template > bool > has_facet<ctype<wchar_t> >(const locale&); > > extern template > bool > has_facet<numpunct<wchar_t> >(const locale&); > > extern template > bool > has_facet<num_put<wchar_t> >(const locale&); > > extern template > bool > has_facet<num_get<wchar_t> >(const locale&); > > > > >} ># 2609 "/usr/include/c++/4.8.2/bits/locale_facets.h" 2 3 ># 38 "/usr/include/c++/4.8.2/bits/basic_ios.h" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _Facet> > inline const _Facet& > __check_facet(const _Facet* __f) > { > if (!__f) > __throw_bad_cast(); > return *__f; > } ># 65 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > template<typename _CharT, typename _Traits> > class basic_ios : public ios_base > { > public: > > > > > > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > > > > > typedef ctype<_CharT> __ctype_type; > typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > > __num_put_type; > typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > > __num_get_type; > > > > protected: > basic_ostream<_CharT, _Traits>* _M_tie; > mutable char_type _M_fill; > mutable bool _M_fill_init; > basic_streambuf<_CharT, _Traits>* _M_streambuf; > > > const __ctype_type* _M_ctype; > > const __num_put_type* _M_num_put; > > const __num_get_type* _M_num_get; > > public: > > > > > > > > operator void*() const > { return this->fail() ? 0 : const_cast<basic_ios*>(this); } > > bool > operator!() const > { return this->fail(); } ># 130 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > iostate > rdstate() const > { return _M_streambuf_state; } ># 141 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > bool > fail() const > { return (this->rdstate() & (badbit | failbit)) != 0; } > > > > > > > > bool > bad() const > { return (this->rdstate() & badbit) != 0; } ># 215 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > iostate > exceptions() const > { return _M_exception; } ># 250 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > basic_ostream<_CharT, _Traits>* > tie() const > { return _M_tie; } ># 300 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > basic_streambuf<_CharT, _Traits>* > rdbuf(basic_streambuf<_CharT, _Traits>* __sb); ># 354 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > char_type > fill(char_type __ch) > { > char_type __old = this->fill(); > _M_fill = __ch; > return __old; > } ># 403 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > locale > imbue(const locale& __loc); ># 423 "/usr/include/c++/4.8.2/bits/basic_ios.h" 3 > char > narrow(char_type __c, char __dfault) const > { return __check_facet(_M_ctype).narrow(__c, __dfault); } ># 442 "/usr/include/c++/4.8.2/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 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 3 ># 34 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::clear(iostate __state) > { > if (this->rdbuf()) > _M_streambuf_state = __state; > else > _M_streambuf_state = __state | badbit; > if (this->exceptions() & this->rdstate()) > __throw_ios_failure(("basic_ios::clear")); > } > > template<typename _CharT, typename _Traits> > basic_streambuf<_CharT, _Traits>* > basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) > { > basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; > _M_streambuf = __sb; > this->clear(); > return __old; > } > > template<typename _CharT, typename _Traits> > basic_ios<_CharT, _Traits>& > basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) > { > > > if (this != &__rhs) > { > > > > > _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? > _M_local_word : new _Words[__rhs._M_word_size]; > > > _Callback_list* __cb = __rhs._M_callbacks; > if (__cb) > __cb->_M_add_reference(); > _M_call_callbacks(erase_event); > if (_M_word != _M_local_word) > { > delete [] _M_word; > _M_word = 0; > } > _M_dispose_callbacks(); > > > _M_callbacks = __cb; > for (int __i = 0; __i < __rhs._M_word_size; ++__i) > __words[__i] = __rhs._M_word[__i]; > _M_word = __words; > _M_word_size = __rhs._M_word_size; > > this->flags(__rhs.flags()); > this->width(__rhs.width()); > this->precision(__rhs.precision()); > this->tie(__rhs.tie()); > this->fill(__rhs.fill()); > _M_ios_locale = __rhs.getloc(); > _M_cache_locale(_M_ios_locale); > > _M_call_callbacks(copyfmt_event); > > > this->exceptions(__rhs.exceptions()); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > locale > basic_ios<_CharT, _Traits>::imbue(const locale& __loc) > { > locale __old(this->getloc()); > ios_base::imbue(__loc); > _M_cache_locale(__loc); > if (this->rdbuf() != 0) > this->rdbuf()->pubimbue(__loc); > return __old; > } > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) > { > > ios_base::_M_init(); > > > _M_cache_locale(_M_ios_locale); ># 146 "/usr/include/c++/4.8.2/bits/basic_ios.tcc" 3 > _M_fill = _CharT(); > _M_fill_init = false; > > _M_tie = 0; > _M_exception = goodbit; > _M_streambuf = __sb; > _M_streambuf_state = __sb ? goodbit : badbit; > } > > template<typename _CharT, typename _Traits> > void > basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) > { > if (__builtin_expect(has_facet<__ctype_type>(__loc), true)) > _M_ctype = &use_facet<__ctype_type>(__loc); > else > _M_ctype = 0; > > if (__builtin_expect(has_facet<__num_put_type>(__loc), true)) > _M_num_put = &use_facet<__num_put_type>(__loc); > else > _M_num_put = 0; > > if (__builtin_expect(has_facet<__num_get_type>(__loc), true)) > _M_num_get = &use_facet<__num_get_type>(__loc); > else > _M_num_get = 0; > } > > > > > extern template class basic_ios<char>; > > > extern template class basic_ios<wchar_t>; > > > > >} ># 476 "/usr/include/c++/4.8.2/bits/basic_ios.h" 2 3 ># 45 "/usr/include/c++/4.8.2/ios" 2 3 ># 39 "/usr/include/c++/4.8.2/ostream" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 57 "/usr/include/c++/4.8.2/ostream" 3 > template<typename _CharT, typename _Traits> > class basic_ostream : virtual public basic_ios<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_ios<_CharT, _Traits> __ios_type; > typedef basic_ostream<_CharT, _Traits> __ostream_type; > typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > > __num_put_type; > typedef ctype<_CharT> __ctype_type; ># 83 "/usr/include/c++/4.8.2/ostream" 3 > explicit > basic_ostream(__streambuf_type* __sb) > { this->init(__sb); } > > > > > > > virtual > ~basic_ostream() { } > > > class sentry; > friend class sentry; ># 107 "/usr/include/c++/4.8.2/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; > } ># 165 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > operator<<(long __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(unsigned long __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(bool __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(short __n); > > __ostream_type& > operator<<(unsigned short __n) > { > > > return _M_insert(static_cast<unsigned long>(__n)); > } > > __ostream_type& > operator<<(int __n); > > __ostream_type& > operator<<(unsigned int __n) > { > > > return _M_insert(static_cast<unsigned long>(__n)); > } > > > __ostream_type& > operator<<(long long __n) > { return _M_insert(__n); } > > __ostream_type& > operator<<(unsigned long long __n) > { return _M_insert(__n); } ># 219 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > operator<<(double __f) > { return _M_insert(__f); } > > __ostream_type& > operator<<(float __f) > { > > > return _M_insert(static_cast<double>(__f)); > } > > __ostream_type& > operator<<(long double __f) > { return _M_insert(__f); } ># 244 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > operator<<(const void* __p) > { return _M_insert(__p); } ># 269 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > operator<<(__streambuf_type* __sb); ># 302 "/usr/include/c++/4.8.2/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); > } ># 334 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > write(const char_type* __s, streamsize __n); ># 347 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > flush(); ># 357 "/usr/include/c++/4.8.2/ostream" 3 > pos_type > tellp(); ># 368 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > seekp(pos_type); ># 380 "/usr/include/c++/4.8.2/ostream" 3 > __ostream_type& > seekp(off_type, ios_base::seekdir); > > protected: > basic_ostream() > { this->init(0); } > > template<typename _ValueT> > __ostream_type& > _M_insert(_ValueT __v); > }; ># 399 "/usr/include/c++/4.8.2/ostream" 3 > template <typename _CharT, typename _Traits> > class basic_ostream<_CharT, _Traits>::sentry > { > > bool _M_ok; > basic_ostream<_CharT, _Traits>& _M_os; > > public: ># 418 "/usr/include/c++/4.8.2/ostream" 3 > explicit > sentry(basic_ostream<_CharT, _Traits>& __os); ># 428 "/usr/include/c++/4.8.2/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); > } > } ># 449 "/usr/include/c++/4.8.2/ostream" 3 > operator bool() const > { return _M_ok; } > }; ># 469 "/usr/include/c++/4.8.2/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) > { return __ostream_insert(__out, &__c, 1); } > > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) > { return (__out << __out.widen(__c)); } > > > template <class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, char __c) > { return __ostream_insert(__out, &__c, 1); } > > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, signed char __c) > { return (__out << static_cast<char>(__c)); } > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c) > { return (__out << static_cast<char>(__c)); } ># 511 "/usr/include/c++/4.8.2/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) > { > if (!__s) > __out.setstate(ios_base::badbit); > else > __ostream_insert(__out, __s, > static_cast<streamsize>(_Traits::length(__s))); > return __out; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits> & > operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); > > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const char* __s) > { > if (!__s) > __out.setstate(ios_base::badbit); > else > __ostream_insert(__out, __s, > static_cast<streamsize>(_Traits::length(__s))); > return __out; > } > > > template<class _Traits> > inline basic_ostream<char, _Traits>& > operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s) > { return (__out << reinterpret_cast<const char*>(__s)); } > > template<class _Traits> > inline basic_ostream<char, _Traits> & > operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s) > { return (__out << reinterpret_cast<const char*>(__s)); } ># 562 "/usr/include/c++/4.8.2/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > endl(basic_ostream<_CharT, _Traits>& __os) > { return flush(__os.put(__os.widen('\n'))); } ># 574 "/usr/include/c++/4.8.2/ostream" 3 > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > ends(basic_ostream<_CharT, _Traits>& __os) > { return __os.put(_CharT()); } > > > > > > > template<typename _CharT, typename _Traits> > inline basic_ostream<_CharT, _Traits>& > flush(basic_ostream<_CharT, _Traits>& __os) > { return __os.flush(); } ># 609 "/usr/include/c++/4.8.2/ostream" 3 > >} > ># 1 "/usr/include/c++/4.8.2/bits/ostream.tcc" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/ostream.tcc" 3 ># 38 "/usr/include/c++/4.8.2/bits/ostream.tcc" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>::sentry:: > sentry(basic_ostream<_CharT, _Traits>& __os) > : _M_ok(false), _M_os(__os) > { > > if (__os.tie() && __os.good()) > __os.tie()->flush(); > > if (__os.good()) > _M_ok = true; > else > __os.setstate(ios_base::failbit); > } > > template<typename _CharT, typename _Traits> > template<typename _ValueT> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > _M_insert(_ValueT __v) > { > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const __num_put_type& __np = __check_facet(this->_M_num_put); > if (__np.put(*this, *this, this->fill(), __v).failed()) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(short __n) > { > > > const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; > if (__fmt == ios_base::oct || __fmt == ios_base::hex) > return _M_insert(static_cast<long>(static_cast<unsigned short>(__n))); > else > return _M_insert(static_cast<long>(__n)); > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(int __n) > { > > > const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; > if (__fmt == ios_base::oct || __fmt == ios_base::hex) > return _M_insert(static_cast<long>(static_cast<unsigned int>(__n))); > else > return _M_insert(static_cast<long>(__n)); > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > operator<<(__streambuf_type* __sbin) > { > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this); > if (__cerb && __sbin) > { > try > { > if (!__copy_streambufs(__sbin, this->rdbuf())) > __err |= ios_base::failbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::failbit); } > } > else if (!__sbin) > __err |= ios_base::badbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > put(char_type __c) > { > > > > > > > sentry __cerb(*this); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const int_type __put = this->rdbuf()->sputc(__c); > if (traits_type::eq_int_type(__put, traits_type::eof())) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > write(const _CharT* __s, streamsize __n) > { > > > > > > > > sentry __cerb(*this); > if (__cerb) > { > try > { _M_write(__s, __n); } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > flush() > { > > > > ios_base::iostate __err = ios_base::goodbit; > try > { > if (this->rdbuf() && this->rdbuf()->pubsync() == -1) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_ostream<_CharT, _Traits>::pos_type > basic_ostream<_CharT, _Traits>:: > tellp() > { > pos_type __ret = pos_type(-1); > try > { > if (!this->fail()) > __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > return __ret; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > seekp(pos_type __pos) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > if (!this->fail()) > { > > > const pos_type __p = this->rdbuf()->pubseekpos(__pos, > ios_base::out); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > basic_ostream<_CharT, _Traits>:: > seekp(off_type __off, ios_base::seekdir __dir) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > if (!this->fail()) > { > > > const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, > ios_base::out); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_ostream<_CharT, _Traits>& > operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) > { > if (!__s) > __out.setstate(ios_base::badbit); > else > { > > > const size_t __clen = char_traits<char>::length(__s); > try > { > struct __ptr_guard > { > _CharT *__p; > __ptr_guard (_CharT *__ip): __p(__ip) { } > ~__ptr_guard() { delete[] __p; } > _CharT* __get() { return __p; } > } __pg (new _CharT[__clen]); > > _CharT *__ws = __pg.__get(); > for (size_t __i = 0; __i < __clen; ++__i) > __ws[__i] = __out.widen(__s[__i]); > __ostream_insert(__out, __ws, __clen); > } > catch(__cxxabiv1::__forced_unwind&) > { > __out._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __out._M_setstate(ios_base::badbit); } > } > return __out; > } > > > > > extern template class basic_ostream<char>; > extern template ostream& endl(ostream&); > extern template ostream& ends(ostream&); > extern template ostream& flush(ostream&); > extern template ostream& operator<<(ostream&, char); > extern template ostream& operator<<(ostream&, unsigned char); > extern template ostream& operator<<(ostream&, signed char); > extern template ostream& operator<<(ostream&, const char*); > extern template ostream& operator<<(ostream&, const unsigned char*); > extern template ostream& operator<<(ostream&, const signed char*); > > extern template ostream& ostream::_M_insert(long); > extern template ostream& ostream::_M_insert(unsigned long); > extern template ostream& ostream::_M_insert(bool); > > extern template ostream& ostream::_M_insert(long long); > extern template ostream& ostream::_M_insert(unsigned long long); > > extern template ostream& ostream::_M_insert(double); > extern template ostream& ostream::_M_insert(long double); > extern template ostream& ostream::_M_insert(const void*); > > > extern template class basic_ostream<wchar_t>; > extern template wostream& endl(wostream&); > extern template wostream& ends(wostream&); > extern template wostream& flush(wostream&); > extern template wostream& operator<<(wostream&, wchar_t); > extern template wostream& operator<<(wostream&, char); > extern template wostream& operator<<(wostream&, const wchar_t*); > extern template wostream& operator<<(wostream&, const char*); > > extern template wostream& wostream::_M_insert(long); > extern template wostream& wostream::_M_insert(unsigned long); > extern template wostream& wostream::_M_insert(bool); > > extern template wostream& wostream::_M_insert(long long); > extern template wostream& wostream::_M_insert(unsigned long long); > > extern template wostream& wostream::_M_insert(double); > extern template wostream& wostream::_M_insert(long double); > extern template wostream& wostream::_M_insert(const void*); > > > > >} ># 613 "/usr/include/c++/4.8.2/ostream" 2 3 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" 2 ># 1 "/usr/include/c++/4.8.2/sstream" 1 3 ># 36 "/usr/include/c++/4.8.2/sstream" 3 ># 37 "/usr/include/c++/4.8.2/sstream" 3 > ># 1 "/usr/include/c++/4.8.2/istream" 1 3 ># 36 "/usr/include/c++/4.8.2/istream" 3 ># 37 "/usr/include/c++/4.8.2/istream" 3 > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 57 "/usr/include/c++/4.8.2/istream" 3 > template<typename _CharT, typename _Traits> > class basic_istream : virtual public basic_ios<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef basic_ios<_CharT, _Traits> __ios_type; > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > > __num_get_type; > typedef ctype<_CharT> __ctype_type; > > protected: > > > > > > streamsize _M_gcount; > > public: > > > > > > > > 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; ># 119 "/usr/include/c++/4.8.2/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; > } ># 167 "/usr/include/c++/4.8.2/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); } ># 213 "/usr/include/c++/4.8.2/istream" 3 > __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); } ># 234 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > operator>>(void*& __p) > { return _M_extract(__p); } ># 258 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > operator>>(__streambuf_type* __sb); ># 268 "/usr/include/c++/4.8.2/istream" 3 > streamsize > gcount() const > { return _M_gcount; } ># 301 "/usr/include/c++/4.8.2/istream" 3 > int_type > get(); ># 315 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > get(char_type& __c); ># 342 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > get(char_type* __s, streamsize __n, char_type __delim); ># 353 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > get(char_type* __s, streamsize __n) > { return this->get(__s, __n, this->widen('\n')); } ># 376 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > get(__streambuf_type& __sb, char_type __delim); ># 386 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > get(__streambuf_type& __sb) > { return this->get(__sb, this->widen('\n')); } ># 415 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > getline(char_type* __s, streamsize __n, char_type __delim); ># 426 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > getline(char_type* __s, streamsize __n) > { return this->getline(__s, __n, this->widen('\n')); } ># 450 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > ignore(streamsize __n, int_type __delim); > > __istream_type& > ignore(streamsize __n); > > __istream_type& > ignore(); ># 467 "/usr/include/c++/4.8.2/istream" 3 > int_type > peek(); ># 485 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > read(char_type* __s, streamsize __n); ># 504 "/usr/include/c++/4.8.2/istream" 3 > streamsize > readsome(char_type* __s, streamsize __n); ># 521 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > putback(char_type __c); ># 537 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > unget(); ># 555 "/usr/include/c++/4.8.2/istream" 3 > int > sync(); ># 570 "/usr/include/c++/4.8.2/istream" 3 > pos_type > tellg(); ># 585 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > seekg(pos_type); ># 601 "/usr/include/c++/4.8.2/istream" 3 > __istream_type& > seekg(off_type, ios_base::seekdir); > > > protected: > basic_istream() > : _M_gcount(streamsize(0)) > { this->init(0); } > > template<typename _ValueT> > __istream_type& > _M_extract(_ValueT& __v); > }; > > > template<> > basic_istream<char>& > basic_istream<char>:: > getline(char_type* __s, streamsize __n, char_type __delim); > > template<> > basic_istream<char>& > basic_istream<char>:: > ignore(streamsize __n); > > template<> > basic_istream<char>& > basic_istream<char>:: > ignore(streamsize __n, int_type __delim); > > > template<> > basic_istream<wchar_t>& > basic_istream<wchar_t>:: > getline(char_type* __s, streamsize __n, char_type __delim); > > template<> > basic_istream<wchar_t>& > basic_istream<wchar_t>:: > ignore(streamsize __n); > > template<> > basic_istream<wchar_t>& > basic_istream<wchar_t>:: > ignore(streamsize __n, int_type __delim); ># 656 "/usr/include/c++/4.8.2/istream" 3 > template<typename _CharT, typename _Traits> > class basic_istream<_CharT, _Traits>::sentry > { > > bool _M_ok; > > 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; ># 692 "/usr/include/c++/4.8.2/istream" 3 > explicit > sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); ># 705 "/usr/include/c++/4.8.2/istream" 3 > operator bool() const > { return _M_ok; } > }; ># 721 "/usr/include/c++/4.8.2/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) > { return (__in >> reinterpret_cast<char&>(__c)); } > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, signed char& __c) > { return (__in >> reinterpret_cast<char&>(__c)); } ># 763 "/usr/include/c++/4.8.2/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); > > > template<> > basic_istream<char>& > operator>>(basic_istream<char>& __in, char* __s); > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) > { return (__in >> reinterpret_cast<char*>(__s)); } > > template<class _Traits> > inline basic_istream<char, _Traits>& > operator>>(basic_istream<char, _Traits>& __in, signed char* __s) > { return (__in >> reinterpret_cast<char*>(__s)); } ># 794 "/usr/include/c++/4.8.2/istream" 3 > template<typename _CharT, typename _Traits> > class basic_iostream > : public basic_istream<_CharT, _Traits>, > public basic_ostream<_CharT, _Traits> > { > public: > > > > typedef _CharT char_type; > typedef typename _Traits::int_type int_type; > typedef typename _Traits::pos_type pos_type; > typedef typename _Traits::off_type off_type; > typedef _Traits traits_type; > > > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_ostream<_CharT, _Traits> __ostream_type; > > > > > > > > explicit > basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) > : __istream_type(__sb), __ostream_type(__sb) { } > > > > > virtual > ~basic_iostream() { } > > protected: > basic_iostream() > : __istream_type(), __ostream_type() { } > }; ># 854 "/usr/include/c++/4.8.2/istream" 3 > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > ws(basic_istream<_CharT, _Traits>& __is); ># 879 "/usr/include/c++/4.8.2/istream" 3 > >} > ># 1 "/usr/include/c++/4.8.2/bits/istream.tcc" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/istream.tcc" 3 ># 38 "/usr/include/c++/4.8.2/bits/istream.tcc" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>::sentry:: > sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) > { > ios_base::iostate __err = ios_base::goodbit; > if (__in.good()) > try > { > 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; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > > if (__in.good() && __err == ios_base::goodbit) > _M_ok = true; > else > { > __err |= ios_base::failbit; > __in.setstate(__err); > } > } > > template<typename _CharT, typename _Traits> > template<typename _ValueT> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > _M_extract(_ValueT& __v) > { > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __v); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(short& __n) > { > > > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > long __l; > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __l); > > > > if (__l < __gnu_cxx::__numeric_traits<short>::__min) > { > __err |= ios_base::failbit; > __n = __gnu_cxx::__numeric_traits<short>::__min; > } > else if (__l > __gnu_cxx::__numeric_traits<short>::__max) > { > __err |= ios_base::failbit; > __n = __gnu_cxx::__numeric_traits<short>::__max; > } > else > __n = short(__l); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(int& __n) > { > > > sentry __cerb(*this, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > long __l; > const __num_get_type& __ng = __check_facet(this->_M_num_get); > __ng.get(*this, 0, *this, __err, __l); > > > > if (__l < __gnu_cxx::__numeric_traits<int>::__min) > { > __err |= ios_base::failbit; > __n = __gnu_cxx::__numeric_traits<int>::__min; > } > else if (__l > __gnu_cxx::__numeric_traits<int>::__max) > { > __err |= ios_base::failbit; > __n = __gnu_cxx::__numeric_traits<int>::__max; > } > else > __n = int(__l); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > operator>>(__streambuf_type* __sbout) > { > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this, false); > if (__cerb && __sbout) > { > try > { > bool __ineof; > if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) > __err |= ios_base::failbit; > if (__ineof) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::failbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::failbit); } > } > else if (!__sbout) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::int_type > basic_istream<_CharT, _Traits>:: > get(void) > { > const int_type __eof = traits_type::eof(); > int_type __c = __eof; > _M_gcount = 0; > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this, true); > if (__cerb) > { > try > { > __c = this->rdbuf()->sbumpc(); > > if (!traits_type::eq_int_type(__c, __eof)) > _M_gcount = 1; > else > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return __c; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(char_type& __c) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __cb = this->rdbuf()->sbumpc(); > > if (!traits_type::eq_int_type(__cb, traits_type::eof())) > { > _M_gcount = 1; > __c = traits_type::to_char_type(__cb); > } > else > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(char_type* __s, streamsize __n, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > while (_M_gcount + 1 < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim)) > { > *__s++ = traits_type::to_char_type(__c); > ++_M_gcount; > __c = __sb->snextc(); > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > > > if (__n > 0) > *__s = char_type(); > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > get(__streambuf_type& __sb, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __this_sb = this->rdbuf(); > int_type __c = __this_sb->sgetc(); > char_type __c2 = traits_type::to_char_type(__c); > > while (!traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim) > && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) > { > ++_M_gcount; > __c = __this_sb->snextc(); > __c2 = traits_type::to_char_type(__c); > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > getline(char_type* __s, streamsize __n, char_type __delim) > { > _M_gcount = 0; > ios_base::iostate __err = ios_base::goodbit; > sentry __cerb(*this, true); > if (__cerb) > { > try > { > const int_type __idelim = traits_type::to_int_type(__delim); > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > while (_M_gcount + 1 < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __idelim)) > { > *__s++ = traits_type::to_char_type(__c); > __c = __sb->snextc(); > ++_M_gcount; > } > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > else > { > if (traits_type::eq_int_type(__c, __idelim)) > { > __sb->sbumpc(); > ++_M_gcount; > } > else > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > > > if (__n > 0) > *__s = char_type(); > if (!_M_gcount) > __err |= ios_base::failbit; > if (__err) > this->setstate(__err); > return *this; > } > > > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(void) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > > if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) > __err |= ios_base::eofbit; > else > _M_gcount = 1; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb && __n > 0) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); ># 521 "/usr/include/c++/4.8.2/bits/istream.tcc" 3 > bool __large_ignore = false; > while (true) > { > while (_M_gcount < __n > && !traits_type::eq_int_type(__c, __eof)) > { > ++_M_gcount; > __c = __sb->snextc(); > } > if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max > && !traits_type::eq_int_type(__c, __eof)) > { > _M_gcount = > __gnu_cxx::__numeric_traits<streamsize>::__min; > __large_ignore = true; > } > else > break; > } > > if (__large_ignore) > _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max; > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > ignore(streamsize __n, int_type __delim) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb && __n > 0) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > int_type __c = __sb->sgetc(); > > > bool __large_ignore = false; > while (true) > { > while (_M_gcount < __n > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __delim)) > { > ++_M_gcount; > __c = __sb->snextc(); > } > if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max > && !traits_type::eq_int_type(__c, __eof) > && !traits_type::eq_int_type(__c, __delim)) > { > _M_gcount = > __gnu_cxx::__numeric_traits<streamsize>::__min; > __large_ignore = true; > } > else > break; > } > > if (__large_ignore) > _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max; > > if (traits_type::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > else if (traits_type::eq_int_type(__c, __delim)) > { > if (_M_gcount > < __gnu_cxx::__numeric_traits<streamsize>::__max) > ++_M_gcount; > __sb->sbumpc(); > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::int_type > basic_istream<_CharT, _Traits>:: > peek(void) > { > int_type __c = traits_type::eof(); > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > __c = this->rdbuf()->sgetc(); > if (traits_type::eq_int_type(__c, traits_type::eof())) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return __c; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > read(char_type* __s, streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > _M_gcount = this->rdbuf()->sgetn(__s, __n); > if (_M_gcount != __n) > __err |= (ios_base::eofbit | ios_base::failbit); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > streamsize > basic_istream<_CharT, _Traits>:: > readsome(char_type* __s, streamsize __n) > { > _M_gcount = 0; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > > const streamsize __num = this->rdbuf()->in_avail(); > if (__num > 0) > _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); > else if (__num == -1) > __err |= ios_base::eofbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return _M_gcount; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > putback(char_type __c) > { > > > _M_gcount = 0; > > this->clear(this->rdstate() & ~ios_base::eofbit); > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > if (!__sb > || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > unget(void) > { > > > _M_gcount = 0; > > this->clear(this->rdstate() & ~ios_base::eofbit); > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const int_type __eof = traits_type::eof(); > __streambuf_type* __sb = this->rdbuf(); > if (!__sb > || traits_type::eq_int_type(__sb->sungetc(), __eof)) > __err |= ios_base::badbit; > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > int > basic_istream<_CharT, _Traits>:: > sync(void) > { > > > int __ret = -1; > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > __streambuf_type* __sb = this->rdbuf(); > if (__sb) > { > if (__sb->pubsync() == -1) > __err |= ios_base::badbit; > else > __ret = 0; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return __ret; > } > > template<typename _CharT, typename _Traits> > typename basic_istream<_CharT, _Traits>::pos_type > basic_istream<_CharT, _Traits>:: > tellg(void) > { > > > pos_type __ret = pos_type(-1); > sentry __cerb(*this, true); > if (__cerb) > { > try > { > if (!this->fail()) > __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, > ios_base::in); > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > } > return __ret; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > seekg(pos_type __pos) > { > > > > this->clear(this->rdstate() & ~ios_base::eofbit); > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > if (!this->fail()) > { > > const pos_type __p = this->rdbuf()->pubseekpos(__pos, > ios_base::in); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > basic_istream<_CharT, _Traits>:: > seekg(off_type __off, ios_base::seekdir __dir) > { > > > > this->clear(this->rdstate() & ~ios_base::eofbit); > sentry __cerb(*this, true); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > if (!this->fail()) > { > > const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, > ios_base::in); > > > if (__p == pos_type(off_type(-1))) > __err |= ios_base::failbit; > } > } > catch(__cxxabiv1::__forced_unwind&) > { > this->_M_setstate(ios_base::badbit); > throw; > } > catch(...) > { this->_M_setstate(ios_base::badbit); } > if (__err) > this->setstate(__err); > } > return *this; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef typename __istream_type::int_type __int_type; > > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > ios_base::iostate __err = ios_base::goodbit; > try > { > const __int_type __cb = __in.rdbuf()->sbumpc(); > if (!_Traits::eq_int_type(__cb, _Traits::eof())) > __c = _Traits::to_char_type(__cb); > else > __err |= (ios_base::eofbit | ios_base::failbit); > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > if (__err) > __in.setstate(__err); > } > return __in; > } > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef typename _Traits::int_type int_type; > typedef _CharT char_type; > typedef ctype<_CharT> __ctype_type; > > streamsize __extracted = 0; > ios_base::iostate __err = ios_base::goodbit; > typename __istream_type::sentry __cerb(__in, false); > if (__cerb) > { > try > { > > streamsize __num = __in.width(); > if (__num <= 0) > __num = __gnu_cxx::__numeric_traits<streamsize>::__max; > > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > > const int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > int_type __c = __sb->sgetc(); > > while (__extracted < __num - 1 > && !_Traits::eq_int_type(__c, __eof) > && !__ct.is(ctype_base::space, > _Traits::to_char_type(__c))) > { > *__s++ = _Traits::to_char_type(__c); > ++__extracted; > __c = __sb->snextc(); > } > if (_Traits::eq_int_type(__c, __eof)) > __err |= ios_base::eofbit; > > > > *__s = char_type(); > __in.width(0); > } > catch(__cxxabiv1::__forced_unwind&) > { > __in._M_setstate(ios_base::badbit); > throw; > } > catch(...) > { __in._M_setstate(ios_base::badbit); } > } > if (!__extracted) > __err |= ios_base::failbit; > if (__err) > __in.setstate(__err); > return __in; > } > > > template<typename _CharT, typename _Traits> > basic_istream<_CharT, _Traits>& > ws(basic_istream<_CharT, _Traits>& __in) > { > typedef basic_istream<_CharT, _Traits> __istream_type; > typedef basic_streambuf<_CharT, _Traits> __streambuf_type; > typedef typename __istream_type::int_type __int_type; > typedef ctype<_CharT> __ctype_type; > > const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); > const __int_type __eof = _Traits::eof(); > __streambuf_type* __sb = __in.rdbuf(); > __int_type __c = __sb->sgetc(); > > while (!_Traits::eq_int_type(__c, __eof) > && __ct.is(ctype_base::space, _Traits::to_char_type(__c))) > __c = __sb->snextc(); > > if (_Traits::eq_int_type(__c, __eof)) > __in.setstate(ios_base::eofbit); > return __in; > } > > > > > extern template class basic_istream<char>; > extern template istream& ws(istream&); > extern template istream& operator>>(istream&, char&); > extern template istream& operator>>(istream&, char*); > extern template istream& operator>>(istream&, unsigned char&); > extern template istream& operator>>(istream&, signed char&); > extern template istream& operator>>(istream&, unsigned char*); > extern template istream& operator>>(istream&, signed char*); > > extern template istream& istream::_M_extract(unsigned short&); > extern template istream& istream::_M_extract(unsigned int&); > extern template istream& istream::_M_extract(long&); > extern template istream& istream::_M_extract(unsigned long&); > extern template istream& istream::_M_extract(bool&); > > extern template istream& istream::_M_extract(long long&); > extern template istream& istream::_M_extract(unsigned long long&); > > extern template istream& istream::_M_extract(float&); > extern template istream& istream::_M_extract(double&); > extern template istream& istream::_M_extract(long double&); > extern template istream& istream::_M_extract(void*&); > > extern template class basic_iostream<char>; > > > extern template class basic_istream<wchar_t>; > extern template wistream& ws(wistream&); > extern template wistream& operator>>(wistream&, wchar_t&); > extern template wistream& operator>>(wistream&, wchar_t*); > > extern template wistream& wistream::_M_extract(unsigned short&); > extern template wistream& wistream::_M_extract(unsigned int&); > extern template wistream& wistream::_M_extract(long&); > extern template wistream& wistream::_M_extract(unsigned long&); > extern template wistream& wistream::_M_extract(bool&); > > extern template wistream& wistream::_M_extract(long long&); > extern template wistream& wistream::_M_extract(unsigned long long&); > > extern template wistream& wistream::_M_extract(float&); > extern template wistream& wistream::_M_extract(double&); > extern template wistream& wistream::_M_extract(long double&); > extern template wistream& wistream::_M_extract(void*&); > > extern template class basic_iostream<wchar_t>; > > > > >} ># 883 "/usr/include/c++/4.8.2/istream" 2 3 ># 39 "/usr/include/c++/4.8.2/sstream" 2 3 > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 63 "/usr/include/c++/4.8.2/sstream" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_stringbuf : public basic_streambuf<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_type; > typedef typename traits_type::int_type int_type; > typedef typename traits_type::pos_type pos_type; > typedef typename traits_type::off_type off_type; > > typedef basic_streambuf<char_type, traits_type> __streambuf_type; > typedef basic_string<char_type, _Traits, _Alloc> __string_type; > typedef typename __string_type::size_type __size_type; > > protected: > > ios_base::openmode _M_mode; > > > __string_type _M_string; > > public: ># 97 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out) > : __streambuf_type(), _M_mode(__mode), _M_string() > { } ># 110 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_stringbuf(const __string_type& __str, > ios_base::openmode __mode = ios_base::in | ios_base::out) > : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size()) > { _M_stringbuf_init(__mode); } ># 125 "/usr/include/c++/4.8.2/sstream" 3 > __string_type > str() const > { > __string_type __ret; > if (this->pptr()) > { > > if (this->pptr() > this->egptr()) > __ret = __string_type(this->pbase(), this->pptr()); > else > __ret = __string_type(this->pbase(), this->egptr()); > } > else > __ret = _M_string; > return __ret; > } ># 149 "/usr/include/c++/4.8.2/sstream" 3 > void > str(const __string_type& __s) > { > > _M_string.assign(__s.data(), __s.size()); > _M_stringbuf_init(_M_mode); > } > > protected: > > void > _M_stringbuf_init(ios_base::openmode __mode) > { > _M_mode = __mode; > __size_type __len = 0; > if (_M_mode & (ios_base::ate | ios_base::app)) > __len = _M_string.size(); > _M_sync(const_cast<char_type*>(_M_string.data()), 0, __len); > } > > virtual streamsize > showmanyc() > { > streamsize __ret = -1; > if (_M_mode & ios_base::in) > { > _M_update_egptr(); > __ret = this->egptr() - this->gptr(); > } > return __ret; > } > > virtual int_type > underflow(); > > virtual int_type > pbackfail(int_type __c = traits_type::eof()); > > virtual int_type > overflow(int_type __c = traits_type::eof()); ># 201 "/usr/include/c++/4.8.2/sstream" 3 > virtual __streambuf_type* > setbuf(char_type* __s, streamsize __n) > { > if (__s && __n >= 0) > { > > > > > > > _M_string.clear(); > > > _M_sync(__s, __n, 0); > } > return this; > } > > virtual pos_type > seekoff(off_type __off, ios_base::seekdir __way, > ios_base::openmode __mode = ios_base::in | ios_base::out); > > virtual pos_type > seekpos(pos_type __sp, > ios_base::openmode __mode = ios_base::in | ios_base::out); > > > > > void > _M_sync(char_type* __base, __size_type __i, __size_type __o); > > > > void > _M_update_egptr() > { > const bool __testin = _M_mode & ios_base::in; > if (this->pptr() && this->pptr() > this->egptr()) > { > if (__testin) > this->setg(this->eback(), this->gptr(), this->pptr()); > else > this->setg(this->pptr(), this->pptr(), this->pptr()); > } > } > > > > void > _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); > }; ># 271 "/usr/include/c++/4.8.2/sstream" 3 > template<typename _CharT, typename _Traits, typename _Alloc> > class basic_istringstream : public basic_istream<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_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_string<_CharT, _Traits, _Alloc> __string_type; > typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; > typedef basic_istream<char_type, traits_type> __istream_type; > > private: > __stringbuf_type _M_stringbuf; > > public: ># 307 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_istringstream(ios_base::openmode __mode = ios_base::in) > : __istream_type(), _M_stringbuf(__mode | ios_base::in) > { this->init(&_M_stringbuf); } ># 325 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_istringstream(const __string_type& __str, > ios_base::openmode __mode = ios_base::in) > : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) > { this->init(&_M_stringbuf); } > > > > > > > > ~basic_istringstream() > { } ># 347 "/usr/include/c++/4.8.2/sstream" 3 > __stringbuf_type* > rdbuf() const > { return const_cast<__stringbuf_type*>(&_M_stringbuf); } > > > > > > __string_type > str() const > { return _M_stringbuf.str(); } > > > > > > > > void > str(const __string_type& __s) > { _M_stringbuf.str(__s); } > }; ># 386 "/usr/include/c++/4.8.2/sstream" 3 > template <typename _CharT, typename _Traits, typename _Alloc> > class basic_ostringstream : public basic_ostream<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_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_string<_CharT, _Traits, _Alloc> __string_type; > typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; > typedef basic_ostream<char_type, traits_type> __ostream_type; > > private: > __stringbuf_type _M_stringbuf; > > public: ># 422 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_ostringstream(ios_base::openmode __mode = ios_base::out) > : __ostream_type(), _M_stringbuf(__mode | ios_base::out) > { this->init(&_M_stringbuf); } ># 440 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_ostringstream(const __string_type& __str, > ios_base::openmode __mode = ios_base::out) > : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) > { this->init(&_M_stringbuf); } > > > > > > > > ~basic_ostringstream() > { } ># 462 "/usr/include/c++/4.8.2/sstream" 3 > __stringbuf_type* > rdbuf() const > { return const_cast<__stringbuf_type*>(&_M_stringbuf); } > > > > > > __string_type > str() const > { return _M_stringbuf.str(); } > > > > > > > > void > str(const __string_type& __s) > { _M_stringbuf.str(__s); } > }; ># 501 "/usr/include/c++/4.8.2/sstream" 3 > template <typename _CharT, typename _Traits, typename _Alloc> > class basic_stringstream : public basic_iostream<_CharT, _Traits> > { > public: > > typedef _CharT char_type; > typedef _Traits traits_type; > > > typedef _Alloc allocator_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_string<_CharT, _Traits, _Alloc> __string_type; > typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; > typedef basic_iostream<char_type, traits_type> __iostream_type; > > private: > __stringbuf_type _M_stringbuf; > > public: ># 536 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in) > : __iostream_type(), _M_stringbuf(__m) > { this->init(&_M_stringbuf); } ># 552 "/usr/include/c++/4.8.2/sstream" 3 > explicit > basic_stringstream(const __string_type& __str, > ios_base::openmode __m = ios_base::out | ios_base::in) > : __iostream_type(), _M_stringbuf(__str, __m) > { this->init(&_M_stringbuf); } > > > > > > > > ~basic_stringstream() > { } ># 574 "/usr/include/c++/4.8.2/sstream" 3 > __stringbuf_type* > rdbuf() const > { return const_cast<__stringbuf_type*>(&_M_stringbuf); } > > > > > > __string_type > str() const > { return _M_stringbuf.str(); } > > > > > > > > void > str(const __string_type& __s) > { _M_stringbuf.str(__s); } > }; > > >} > ># 1 "/usr/include/c++/4.8.2/bits/sstream.tcc" 1 3 ># 37 "/usr/include/c++/4.8.2/bits/sstream.tcc" 3 ># 38 "/usr/include/c++/4.8.2/bits/sstream.tcc" 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > pbackfail(int_type __c) > { > int_type __ret = traits_type::eof(); > if (this->eback() < this->gptr()) > { > > > const bool __testeof = traits_type::eq_int_type(__c, __ret); > if (!__testeof) > { > const bool __testeq = traits_type::eq(traits_type:: > to_char_type(__c), > this->gptr()[-1]); > const bool __testout = this->_M_mode & ios_base::out; > if (__testeq || __testout) > { > this->gbump(-1); > if (!__testeq) > *this->gptr() = traits_type::to_char_type(__c); > __ret = __c; > } > } > else > { > this->gbump(-1); > __ret = traits_type::not_eof(__c); > } > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > overflow(int_type __c) > { > const bool __testout = this->_M_mode & ios_base::out; > if (__builtin_expect(!__testout, false)) > return traits_type::eof(); > > const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); > if (__builtin_expect(__testeof, false)) > return traits_type::not_eof(__c); > > const __size_type __capacity = _M_string.capacity(); > const __size_type __max_size = _M_string.max_size(); > const bool __testput = this->pptr() < this->epptr(); > if (__builtin_expect(!__testput && __capacity == __max_size, false)) > return traits_type::eof(); > > > > const char_type __conv = traits_type::to_char_type(__c); > if (!__testput) > { ># 110 "/usr/include/c++/4.8.2/bits/sstream.tcc" 3 > const __size_type __opt_len = std::max(__size_type(2 * __capacity), > __size_type(512)); > const __size_type __len = std::min(__opt_len, __max_size); > __string_type __tmp; > __tmp.reserve(__len); > if (this->pbase()) > __tmp.assign(this->pbase(), this->epptr() - this->pbase()); > __tmp.push_back(__conv); > _M_string.swap(__tmp); > _M_sync(const_cast<char_type*>(_M_string.data()), > this->gptr() - this->eback(), this->pptr() - this->pbase()); > } > else > *this->pptr() = __conv; > this->pbump(1); > return __c; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > underflow() > { > int_type __ret = traits_type::eof(); > const bool __testin = this->_M_mode & ios_base::in; > if (__testin) > { > > _M_update_egptr(); > > if (this->gptr() < this->egptr()) > __ret = traits_type::to_int_type(*this->gptr()); > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) > { > pos_type __ret = pos_type(off_type(-1)); > bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; > bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; > const bool __testboth = __testin && __testout && __way != ios_base::cur; > __testin &= !(__mode & ios_base::out); > __testout &= !(__mode & ios_base::in); > > > > const char_type* __beg = __testin ? this->eback() : this->pbase(); > if ((__beg || !__off) && (__testin || __testout || __testboth)) > { > _M_update_egptr(); > > off_type __newoffi = __off; > off_type __newoffo = __newoffi; > if (__way == ios_base::cur) > { > __newoffi += this->gptr() - __beg; > __newoffo += this->pptr() - __beg; > } > else if (__way == ios_base::end) > __newoffo = __newoffi += this->egptr() - __beg; > > if ((__testin || __testboth) > && __newoffi >= 0 > && this->egptr() - __beg >= __newoffi) > { > this->setg(this->eback(), this->eback() + __newoffi, > this->egptr()); > __ret = pos_type(__newoffi); > } > if ((__testout || __testboth) > && __newoffo >= 0 > && this->egptr() - __beg >= __newoffo) > { > _M_pbump(this->pbase(), this->epptr(), __newoffo); > __ret = pos_type(__newoffo); > } > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type > basic_stringbuf<_CharT, _Traits, _Alloc>:: > seekpos(pos_type __sp, ios_base::openmode __mode) > { > pos_type __ret = pos_type(off_type(-1)); > const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; > const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; > > const char_type* __beg = __testin ? this->eback() : this->pbase(); > if ((__beg || !off_type(__sp)) && (__testin || __testout)) > { > _M_update_egptr(); > > const off_type __pos(__sp); > const bool __testpos = (0 <= __pos > && __pos <= this->egptr() - __beg); > if (__testpos) > { > if (__testin) > this->setg(this->eback(), this->eback() + __pos, > this->egptr()); > if (__testout) > _M_pbump(this->pbase(), this->epptr(), __pos); > __ret = __sp; > } > } > return __ret; > } > > template <class _CharT, class _Traits, class _Alloc> > void > basic_stringbuf<_CharT, _Traits, _Alloc>:: > _M_sync(char_type* __base, __size_type __i, __size_type __o) > { > const bool __testin = _M_mode & ios_base::in; > const bool __testout = _M_mode & ios_base::out; > char_type* __endg = __base + _M_string.size(); > char_type* __endp = __base + _M_string.capacity(); > > if (__base != _M_string.data()) > { > > __endg += __i; > __i = 0; > __endp = __endg; > } > > if (__testin) > this->setg(__base, __base + __i, __endg); > if (__testout) > { > _M_pbump(__base, __endp, __o); > > > > if (!__testin) > this->setg(__endg, __endg, __endg); > } > } > > template <class _CharT, class _Traits, class _Alloc> > void > basic_stringbuf<_CharT, _Traits, _Alloc>:: > _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) > { > this->setp(__pbeg, __pend); > while (__off > __gnu_cxx::__numeric_traits<int>::__max) > { > this->pbump(__gnu_cxx::__numeric_traits<int>::__max); > __off -= __gnu_cxx::__numeric_traits<int>::__max; > } > this->pbump(__off); > } > > > > > extern template class basic_stringbuf<char>; > extern template class basic_istringstream<char>; > extern template class basic_ostringstream<char>; > extern template class basic_stringstream<char>; > > > extern template class basic_stringbuf<wchar_t>; > extern template class basic_istringstream<wchar_t>; > extern template class basic_ostringstream<wchar_t>; > extern template class basic_stringstream<wchar_t>; > > > > >} ># 601 "/usr/include/c++/4.8.2/sstream" 2 3 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" 2 ># 109 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >static inline >void >ut_pair_min( > ulint* min_hi, > ulint* min_lo, > ulint a_hi, > ulint a_lo, > ulint b_hi, > ulint b_lo); > > > >static inline >int >ut_ulint_cmp( > > ulint a, > ulint b); ># 136 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >static inline >int >ut_pair_cmp( > ulint a_h, > ulint a_l, > ulint b_h, > ulint b_l) > __attribute__((warn_unused_result)); > > > > > > >template <typename T> inline T ut_2pow_remainder(T n, T m){return n & (m - 1);} > > > > > > >template <typename T> inline T ut_2pow_round(T n, T m) { return n & ~(m - 1); } > > > > > > > >template <typename T> inline T ut_calc_align(T n, T m) >{ return ((n + m - 1) & ~(m - 1)); } > > > > > >static inline >ulint >ut_2_log( > > ulint n); > > > >static inline >ulint >ut_2_exp( > > ulint n); > > > >ulint >ut_2_power_up( > > ulint n) > __attribute__((const)); ># 205 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >ulint >ut_time_ms(void); ># 217 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >struct ut_strcmp_functor >{ > bool operator()( > const char* a, > const char* b) const > { > return(strcmp(a, b) < 0); > } >}; > > > >void >ut_print_timestamp( > > FILE* file) > __attribute__((cold)) __attribute__((nonnull)); > > > > > >void >ut_sprintf_timestamp( > > char* buf); > > > > >void >ut_delay( > > ulint delay); > > >void >ut_print_buf( > > FILE* file, > const void* buf, > ulint len); > > > >void >ut_print_buf_hex( > > std::ostream& o, > const void* buf, > ulint len) > __attribute__((nonnull)); > > >void >ut_print_buf( > > std::ostream& o, > const void* buf, > ulint len) > __attribute__((nonnull)); > > >struct trx_t; ># 290 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >std::string >ut_get_name( > const trx_t* trx, > const char* name); > > > > > > >void >ut_print_name( > > FILE* ef, > const trx_t* trx, > const char* name); ># 315 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >char* >ut_format_name( > const char* name, > char* formatted, > ulint formatted_size); > > > >void >ut_copy_file( > > FILE* dest, > FILE* src); > > > > > >const char* >ut_strerr( > > dberr_t num); ># 359 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >namespace ib { > > > > > >struct hex { > explicit hex(uintmax_t t): m_val(t) {} > const uintmax_t m_val; >}; > > > > > > > >inline >std::ostream& >operator<<( > std::ostream& lhs, > const hex& rhs) >{ > std::ios_base::fmtflags ff = lhs.flags(); > lhs << std::showbase << std::hex << rhs.m_val; > lhs.setf(ff); > return(lhs); >} > > > > > >class logger { >public: > template<typename T> > __attribute__((cold)) > logger& operator<<(const T& rhs) > { > m_oss << rhs; > return(*this); > } > > > > > > __attribute__((cold)) > std::ostream& > write( > const char* buf, > std::streamsize count) > { > return(m_oss.write(buf, count)); > } > > > > > > __attribute__((cold)) > std::ostream& > write( > const byte* buf, > std::streamsize count) > { > return(m_oss.write(reinterpret_cast<const char*>(buf), count)); > } > > std::ostringstream m_oss; >protected: > > > __attribute__((cold)) > logger() {} >}; ># 447 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" >class info : public logger { >public: > __attribute__((cold)) > ~info(); >}; > > > >class warn : public logger { >public: > __attribute__((cold)) > ~warn(); >}; > > > >class error : public logger { >public: > __attribute__((cold)) > ~error(); >}; > > > > >class fatal : public logger { >public: > __attribute__((noreturn)) > ~fatal(); >}; > > > >class error_or_warn : public logger { >public: > __attribute__((cold)) > error_or_warn(bool pred) > : m_error(pred) > {} > > __attribute__((cold)) > ~error_or_warn(); >private: > const bool m_error; >}; > > > >class fatal_or_error : public logger { >public: > __attribute__((cold)) > fatal_or_error(bool pred) > : m_fatal(pred) > {} > > __attribute__((cold)) > ~fatal_or_error(); >private: > const bool m_fatal; >}; > >} > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.ic" 1 ># 26 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.ic" ># 1 "/usr/include/c++/4.8.2/algorithm" 1 3 ># 58 "/usr/include/c++/4.8.2/algorithm" 3 ># 59 "/usr/include/c++/4.8.2/algorithm" 3 > ># 1 "/usr/include/c++/4.8.2/utility" 1 3 ># 58 "/usr/include/c++/4.8.2/utility" 3 ># 59 "/usr/include/c++/4.8.2/utility" 3 ># 69 "/usr/include/c++/4.8.2/utility" 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_relops.h" 1 3 ># 67 "/usr/include/c++/4.8.2/bits/stl_relops.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > namespace rel_ops > { ># 85 "/usr/include/c++/4.8.2/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator!=(const _Tp& __x, const _Tp& __y) > { return !(__x == __y); } ># 98 "/usr/include/c++/4.8.2/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator>(const _Tp& __x, const _Tp& __y) > { return __y < __x; } ># 111 "/usr/include/c++/4.8.2/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator<=(const _Tp& __x, const _Tp& __y) > { return !(__y < __x); } ># 124 "/usr/include/c++/4.8.2/bits/stl_relops.h" 3 > template <class _Tp> > inline bool > operator>=(const _Tp& __x, const _Tp& __y) > { return !(__x < __y); } > > > } > >} ># 70 "/usr/include/c++/4.8.2/utility" 2 3 ># 61 "/usr/include/c++/4.8.2/algorithm" 2 3 > ># 1 "/usr/include/c++/4.8.2/bits/stl_algo.h" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 ># 1 "/usr/include/c++/4.8.2/cstdlib" 1 3 ># 39 "/usr/include/c++/4.8.2/cstdlib" 3 ># 40 "/usr/include/c++/4.8.2/cstdlib" 3 ># 114 "/usr/include/c++/4.8.2/cstdlib" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > using ::div_t; > using ::ldiv_t; > > using ::abort; > using ::abs; > using ::atexit; > > > > > > using ::atof; > using ::atoi; > using ::atol; > using ::bsearch; > using ::calloc; > using ::div; > using ::exit; > using ::free; > using ::getenv; > using ::labs; > using ::ldiv; > using ::malloc; > > using ::mblen; > using ::mbstowcs; > using ::mbtowc; > > using ::qsort; > > > > > > using ::rand; > using ::realloc; > using ::srand; > using ::strtod; > using ::strtol; > using ::strtoul; > using ::system; > > using ::wcstombs; > using ::wctomb; > > > > inline long > abs(long __i) { return __builtin_labs(__i); } > > inline ldiv_t > div(long __i, long __j) { return ldiv(__i, __j); } > > > > inline long long > abs(long long __x) { return __builtin_llabs (__x); } > > > > inline __int128 > abs(__int128 __x) { return __x >= 0 ? __x : -__x; } > > > >} ># 196 "/usr/include/c++/4.8.2/cstdlib" 3 >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ > > > > using ::lldiv_t; > > > > > > using ::_Exit; > > > > using ::llabs; > > inline lldiv_t > div(long long __n, long long __d) > { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } > > using ::lldiv; ># 228 "/usr/include/c++/4.8.2/cstdlib" 3 > using ::atoll; > using ::strtoll; > using ::strtoull; > > using ::strtof; > using ::strtold; > > >} > >namespace std >{ > > using ::__gnu_cxx::lldiv_t; > > using ::__gnu_cxx::_Exit; > > using ::__gnu_cxx::llabs; > using ::__gnu_cxx::div; > using ::__gnu_cxx::lldiv; > > using ::__gnu_cxx::atoll; > using ::__gnu_cxx::strtof; > using ::__gnu_cxx::strtoll; > using ::__gnu_cxx::strtoull; > using ::__gnu_cxx::strtold; >} ># 60 "/usr/include/c++/4.8.2/bits/stl_algo.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 ># 42 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 203 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _FIter, typename _Tp> > bool > binary_search(_FIter, _FIter, const _Tp&); > > template<typename _FIter, typename _Tp, typename _Compare> > bool > binary_search(_FIter, _FIter, const _Tp&, _Compare); > > template<typename _IIter, typename _OIter> > _OIter > copy(_IIter, _IIter, _OIter); > > template<typename _BIter1, typename _BIter2> > _BIter2 > copy_backward(_BIter1, _BIter1, _BIter2); ># 232 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _FIter, typename _Tp> > pair<_FIter, _FIter> > equal_range(_FIter, _FIter, const _Tp&); > > template<typename _FIter, typename _Tp, typename _Compare> > pair<_FIter, _FIter> > equal_range(_FIter, _FIter, const _Tp&, _Compare); > > template<typename _FIter, typename _Tp> > void > fill(_FIter, _FIter, const _Tp&); > > template<typename _OIter, typename _Size, typename _Tp> > _OIter > fill_n(_OIter, _Size, const _Tp&); > > > > template<typename _FIter1, typename _FIter2> > _FIter1 > find_end(_FIter1, _FIter1, _FIter2, _FIter2); > > template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> > _FIter1 > find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); ># 271 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _IIter1, typename _IIter2> > bool > includes(_IIter1, _IIter1, _IIter2, _IIter2); > > template<typename _IIter1, typename _IIter2, typename _Compare> > bool > includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); > > template<typename _BIter> > void > inplace_merge(_BIter, _BIter, _BIter); > > template<typename _BIter, typename _Compare> > void > inplace_merge(_BIter, _BIter, _BIter, _Compare); ># 334 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _FIter1, typename _FIter2> > void > iter_swap(_FIter1, _FIter2); > > template<typename _FIter, typename _Tp> > _FIter > lower_bound(_FIter, _FIter, const _Tp&); > > template<typename _FIter, typename _Tp, typename _Compare> > _FIter > lower_bound(_FIter, _FIter, const _Tp&, _Compare); > > template<typename _RAIter> > void > make_heap(_RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > make_heap(_RAIter, _RAIter, _Compare); > > template<typename _Tp> > const _Tp& > max(const _Tp&, const _Tp&); > > template<typename _Tp, typename _Compare> > const _Tp& > max(const _Tp&, const _Tp&, _Compare); > > > > > template<typename _Tp> > const _Tp& > min(const _Tp&, const _Tp&); > > template<typename _Tp, typename _Compare> > const _Tp& > min(const _Tp&, const _Tp&, _Compare); ># 419 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _BIter> > bool > next_permutation(_BIter, _BIter); > > template<typename _BIter, typename _Compare> > bool > next_permutation(_BIter, _BIter, _Compare); ># 436 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _IIter, typename _RAIter> > _RAIter > partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); > > template<typename _IIter, typename _RAIter, typename _Compare> > _RAIter > partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); ># 457 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _RAIter> > void > pop_heap(_RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > pop_heap(_RAIter, _RAIter, _Compare); > > template<typename _BIter> > bool > prev_permutation(_BIter, _BIter); > > template<typename _BIter, typename _Compare> > bool > prev_permutation(_BIter, _BIter, _Compare); > > template<typename _RAIter> > void > push_heap(_RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > push_heap(_RAIter, _RAIter, _Compare); > > > > template<typename _FIter, typename _Tp> > _FIter > remove(_FIter, _FIter, const _Tp&); > > template<typename _FIter, typename _Predicate> > _FIter > remove_if(_FIter, _FIter, _Predicate); > > template<typename _IIter, typename _OIter, typename _Tp> > _OIter > remove_copy(_IIter, _IIter, _OIter, const _Tp&); > > template<typename _IIter, typename _OIter, typename _Predicate> > _OIter > remove_copy_if(_IIter, _IIter, _OIter, _Predicate); > > > > template<typename _IIter, typename _OIter, typename _Tp> > _OIter > replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); > > template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp> > _OIter > replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); > > > > template<typename _BIter> > void > reverse(_BIter, _BIter); > > template<typename _BIter, typename _OIter> > _OIter > reverse_copy(_BIter, _BIter, _OIter); > > template<typename _FIter> > void > rotate(_FIter, _FIter, _FIter); > > template<typename _FIter, typename _OIter> > _OIter > rotate_copy(_FIter, _FIter, _FIter, _OIter); ># 540 "/usr/include/c++/4.8.2/bits/algorithmfwd.h" 3 > template<typename _RAIter> > void > sort_heap(_RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > sort_heap(_RAIter, _RAIter, _Compare); > > template<typename _BIter, typename _Predicate> > _BIter > stable_partition(_BIter, _BIter, _Predicate); > > template<typename _Tp> > void > swap(_Tp&, _Tp&) > > > > > ; > > template<typename _Tp, size_t _Nm> > void > swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) > > > > ; > > template<typename _FIter1, typename _FIter2> > _FIter2 > swap_ranges(_FIter1, _FIter1, _FIter2); > > > > template<typename _FIter> > _FIter > unique(_FIter, _FIter); > > template<typename _FIter, typename _BinaryPredicate> > _FIter > unique(_FIter, _FIter, _BinaryPredicate); > > > > template<typename _FIter, typename _Tp> > _FIter > upper_bound(_FIter, _FIter, const _Tp&); > > template<typename _FIter, typename _Tp, typename _Compare> > _FIter > upper_bound(_FIter, _FIter, const _Tp&, _Compare); > > > > > > template<typename _FIter> > _FIter > adjacent_find(_FIter, _FIter); > > template<typename _FIter, typename _BinaryPredicate> > _FIter > adjacent_find(_FIter, _FIter, _BinaryPredicate); > > template<typename _IIter, typename _Tp> > typename iterator_traits<_IIter>::difference_type > count(_IIter, _IIter, const _Tp&); > > template<typename _IIter, typename _Predicate> > typename iterator_traits<_IIter>::difference_type > count_if(_IIter, _IIter, _Predicate); > > template<typename _IIter1, typename _IIter2> > bool > equal(_IIter1, _IIter1, _IIter2); > > template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> > bool > equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); > > template<typename _IIter, typename _Tp> > _IIter > find(_IIter, _IIter, const _Tp&); > > template<typename _FIter1, typename _FIter2> > _FIter1 > find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); > > template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> > _FIter1 > find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); > > template<typename _IIter, typename _Predicate> > _IIter > find_if(_IIter, _IIter, _Predicate); > > template<typename _IIter, typename _Funct> > _Funct > for_each(_IIter, _IIter, _Funct); > > template<typename _FIter, typename _Generator> > void > generate(_FIter, _FIter, _Generator); > > template<typename _OIter, typename _Size, typename _Generator> > _OIter > generate_n(_OIter, _Size, _Generator); > > template<typename _IIter1, typename _IIter2> > bool > lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); > > template<typename _IIter1, typename _IIter2, typename _Compare> > bool > lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); > > template<typename _FIter> > _FIter > max_element(_FIter, _FIter); > > template<typename _FIter, typename _Compare> > _FIter > max_element(_FIter, _FIter, _Compare); > > template<typename _IIter1, typename _IIter2, typename _OIter> > _OIter > merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); > > template<typename _IIter1, typename _IIter2, typename _OIter, > typename _Compare> > _OIter > merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); > > template<typename _FIter> > _FIter > min_element(_FIter, _FIter); > > template<typename _FIter, typename _Compare> > _FIter > min_element(_FIter, _FIter, _Compare); > > template<typename _IIter1, typename _IIter2> > pair<_IIter1, _IIter2> > mismatch(_IIter1, _IIter1, _IIter2); > > template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> > pair<_IIter1, _IIter2> > mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); > > template<typename _RAIter> > void > nth_element(_RAIter, _RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > nth_element(_RAIter, _RAIter, _RAIter, _Compare); > > template<typename _RAIter> > void > partial_sort(_RAIter, _RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > partial_sort(_RAIter, _RAIter, _RAIter, _Compare); > > template<typename _BIter, typename _Predicate> > _BIter > partition(_BIter, _BIter, _Predicate); > > template<typename _RAIter> > void > random_shuffle(_RAIter, _RAIter); > > template<typename _RAIter, typename _Generator> > void > random_shuffle(_RAIter, _RAIter, > > > > _Generator&); > > > template<typename _FIter, typename _Tp> > void > replace(_FIter, _FIter, const _Tp&, const _Tp&); > > template<typename _FIter, typename _Predicate, typename _Tp> > void > replace_if(_FIter, _FIter, _Predicate, const _Tp&); > > template<typename _FIter1, typename _FIter2> > _FIter1 > search(_FIter1, _FIter1, _FIter2, _FIter2); > > template<typename _FIter1, typename _FIter2, typename _BinaryPredicate> > _FIter1 > search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); > > template<typename _FIter, typename _Size, typename _Tp> > _FIter > search_n(_FIter, _FIter, _Size, const _Tp&); > > template<typename _FIter, typename _Size, typename _Tp, > typename _BinaryPredicate> > _FIter > search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); > > template<typename _IIter1, typename _IIter2, typename _OIter> > _OIter > set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); > > template<typename _IIter1, typename _IIter2, typename _OIter, > typename _Compare> > _OIter > set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); > > template<typename _IIter1, typename _IIter2, typename _OIter> > _OIter > set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); > > template<typename _IIter1, typename _IIter2, typename _OIter, > typename _Compare> > _OIter > set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); > > template<typename _IIter1, typename _IIter2, typename _OIter> > _OIter > set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); > > template<typename _IIter1, typename _IIter2, typename _OIter, > typename _Compare> > _OIter > set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, > _OIter, _Compare); > > template<typename _IIter1, typename _IIter2, typename _OIter> > _OIter > set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); > > template<typename _IIter1, typename _IIter2, typename _OIter, > typename _Compare> > _OIter > set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); > > template<typename _RAIter> > void > sort(_RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > sort(_RAIter, _RAIter, _Compare); > > template<typename _RAIter> > void > stable_sort(_RAIter, _RAIter); > > template<typename _RAIter, typename _Compare> > void > stable_sort(_RAIter, _RAIter, _Compare); > > template<typename _IIter, typename _OIter, typename _UnaryOperation> > _OIter > transform(_IIter, _IIter, _OIter, _UnaryOperation); > > template<typename _IIter1, typename _IIter2, typename _OIter, > typename _BinaryOperation> > _OIter > transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); > > template<typename _IIter, typename _OIter> > _OIter > unique_copy(_IIter, _IIter, _OIter); > > template<typename _IIter, typename _OIter, typename _BinaryPredicate> > _OIter > unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); > > >} ># 61 "/usr/include/c++/4.8.2/bits/stl_algo.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_heap.h" 1 3 ># 61 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > > > > template<typename _RandomAccessIterator, typename _Distance> > _Distance > __is_heap_until(_RandomAccessIterator __first, _Distance __n) > { > _Distance __parent = 0; > for (_Distance __child = 1; __child < __n; ++__child) > { > if (__first[__parent] < __first[__child]) > return __child; > if ((__child & 1) == 0) > ++__parent; > } > return __n; > } > > template<typename _RandomAccessIterator, typename _Distance, > typename _Compare> > _Distance > __is_heap_until(_RandomAccessIterator __first, _Distance __n, > _Compare __comp) > { > _Distance __parent = 0; > for (_Distance __child = 1; __child < __n; ++__child) > { > if (__comp(__first[__parent], __first[__child])) > return __child; > if ((__child & 1) == 0) > ++__parent; > } > return __n; > } > > > > template<typename _RandomAccessIterator, typename _Distance> > inline bool > __is_heap(_RandomAccessIterator __first, _Distance __n) > { return std::__is_heap_until(__first, __n) == __n; } > > template<typename _RandomAccessIterator, typename _Compare, > typename _Distance> > inline bool > __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) > { return std::__is_heap_until(__first, __n, __comp) == __n; } > > template<typename _RandomAccessIterator> > inline bool > __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { return std::__is_heap(__first, std::distance(__first, __last)); } > > template<typename _RandomAccessIterator, typename _Compare> > inline bool > __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { return std::__is_heap(__first, __comp, std::distance(__first, __last)); } > > > > > template<typename _RandomAccessIterator, typename _Distance, typename _Tp> > void > __push_heap(_RandomAccessIterator __first, > _Distance __holeIndex, _Distance __topIndex, _Tp __value) > { > _Distance __parent = (__holeIndex - 1) / 2; > while (__holeIndex > __topIndex && *(__first + __parent) < __value) > { > *(__first + __holeIndex) = (*(__first + __parent)); > __holeIndex = __parent; > __parent = (__holeIndex - 1) / 2; > } > *(__first + __holeIndex) = (__value); > } ># 154 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > inline void > push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > ; > ; > > _ValueType __value = (*(__last - 1)); > std::__push_heap(__first, _DistanceType((__last - __first) - 1), > _DistanceType(0), (__value)); > } > > template<typename _RandomAccessIterator, typename _Distance, typename _Tp, > typename _Compare> > void > __push_heap(_RandomAccessIterator __first, _Distance __holeIndex, > _Distance __topIndex, _Tp __value, _Compare __comp) > { > _Distance __parent = (__holeIndex - 1) / 2; > while (__holeIndex > __topIndex > && __comp(*(__first + __parent), __value)) > { > *(__first + __holeIndex) = (*(__first + __parent)); > __holeIndex = __parent; > __parent = (__holeIndex - 1) / 2; > } > *(__first + __holeIndex) = (__value); > } ># 204 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > ; > ; > > _ValueType __value = (*(__last - 1)); > std::__push_heap(__first, _DistanceType((__last - __first) - 1), > _DistanceType(0), (__value), __comp); > } > > template<typename _RandomAccessIterator, typename _Distance, typename _Tp> > void > __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, > _Distance __len, _Tp __value) > { > const _Distance __topIndex = __holeIndex; > _Distance __secondChild = __holeIndex; > while (__secondChild < (__len - 1) / 2) > { > __secondChild = 2 * (__secondChild + 1); > if (*(__first + __secondChild) < *(__first + (__secondChild - 1))) > __secondChild--; > *(__first + __holeIndex) = (*(__first + __secondChild)); > __holeIndex = __secondChild; > } > if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) > { > __secondChild = 2 * (__secondChild + 1); > *(__first + __holeIndex) = (*(__first + (__secondChild - 1))) > ; > __holeIndex = __secondChild - 1; > } > std::__push_heap(__first, __holeIndex, __topIndex, > (__value)); > } > > template<typename _RandomAccessIterator> > inline void > __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _RandomAccessIterator __result) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > _ValueType __value = (*__result); > *__result = (*__first); > std::__adjust_heap(__first, _DistanceType(0), > _DistanceType(__last - __first), > (__value)); > } ># 279 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > inline void > pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > ; > ; > > if (__last - __first > 1) > { > --__last; > std::__pop_heap(__first, __last, __last); > } > } > > template<typename _RandomAccessIterator, typename _Distance, > typename _Tp, typename _Compare> > void > __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, > _Distance __len, _Tp __value, _Compare __comp) > { > const _Distance __topIndex = __holeIndex; > _Distance __secondChild = __holeIndex; > while (__secondChild < (__len - 1) / 2) > { > __secondChild = 2 * (__secondChild + 1); > if (__comp(*(__first + __secondChild), > *(__first + (__secondChild - 1)))) > __secondChild--; > *(__first + __holeIndex) = (*(__first + __secondChild)); > __holeIndex = __secondChild; > } > if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) > { > __secondChild = 2 * (__secondChild + 1); > *(__first + __holeIndex) = (*(__first + (__secondChild - 1))) > ; > __holeIndex = __secondChild - 1; > } > std::__push_heap(__first, __holeIndex, __topIndex, > (__value), __comp); > } > > template<typename _RandomAccessIterator, typename _Compare> > inline void > __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _RandomAccessIterator __result, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > _ValueType __value = (*__result); > *__result = (*__first); > std::__adjust_heap(__first, _DistanceType(0), > _DistanceType(__last - __first), > (__value), __comp); > } ># 357 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > pop_heap(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > > > > ; > ; > ; > > if (__last - __first > 1) > { > --__last; > std::__pop_heap(__first, __last, __last, __comp); > } > } ># 384 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > void > make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > ; > > if (__last - __first < 2) > return; > > const _DistanceType __len = __last - __first; > _DistanceType __parent = (__len - 2) / 2; > while (true) > { > _ValueType __value = (*(__first + __parent)); > std::__adjust_heap(__first, __parent, __len, (__value)); > if (__parent == 0) > return; > __parent--; > } > } ># 424 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > void > make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > ; > > if (__last - __first < 2) > return; > > const _DistanceType __len = __last - __first; > _DistanceType __parent = (__len - 2) / 2; > while (true) > { > _ValueType __value = (*(__first + __parent)); > std::__adjust_heap(__first, __parent, __len, (__value), > __comp); > if (__parent == 0) > return; > __parent--; > } > } ># 463 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator> > void > sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > > > > > > ; > ; > > while (__last - __first > 1) > { > --__last; > std::__pop_heap(__first, __last, __last); > } > } ># 492 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > void > sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > > > > ; > ; > > while (__last - __first > 1) > { > --__last; > std::__pop_heap(__first, __last, __last, __comp); > } > } ># 589 "/usr/include/c++/4.8.2/bits/stl_heap.h" 3 > >} ># 62 "/usr/include/c++/4.8.2/bits/stl_algo.h" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_tempbuf.h" 1 3 ># 60 "/usr/include/c++/4.8.2/bits/stl_tempbuf.h" 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_construct.h" 1 3 ># 61 "/usr/include/c++/4.8.2/bits/stl_construct.h" 3 ># 1 "/usr/include/c++/4.8.2/ext/alloc_traits.h" 1 3 ># 32 "/usr/include/c++/4.8.2/ext/alloc_traits.h" 3 ># 33 "/usr/include/c++/4.8.2/ext/alloc_traits.h" 3 ># 41 "/usr/include/c++/4.8.2/ext/alloc_traits.h" 3 >namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) >{ ># 120 "/usr/include/c++/4.8.2/ext/alloc_traits.h" 3 >template<typename _Alloc> > struct __alloc_traits > > > > { > typedef _Alloc allocator_type; ># 199 "/usr/include/c++/4.8.2/ext/alloc_traits.h" 3 > typedef typename _Alloc::pointer pointer; > typedef typename _Alloc::const_pointer const_pointer; > typedef typename _Alloc::value_type value_type; > typedef typename _Alloc::reference reference; > typedef typename _Alloc::const_reference const_reference; > typedef typename _Alloc::size_type size_type; > typedef typename _Alloc::difference_type difference_type; > > static pointer > allocate(_Alloc& __a, size_type __n) > { return __a.allocate(__n); } > > static void deallocate(_Alloc& __a, pointer __p, size_type __n) > { __a.deallocate(__p, __n); } > > template<typename _Tp> > static void construct(_Alloc& __a, pointer __p, const _Tp& __arg) > { __a.construct(__p, __arg); } > > static void destroy(_Alloc& __a, pointer __p) > { __a.destroy(__p); } > > static size_type max_size(const _Alloc& __a) > { return __a.max_size(); } > > static const _Alloc& _S_select_on_copy(const _Alloc& __a) { return __a; } > > static void _S_on_swap(_Alloc& __a, _Alloc& __b) > { > > > std::__alloc_swap<_Alloc>::_S_do_it(__a, __b); > } > > template<typename _Tp> > struct rebind > { typedef typename _Alloc::template rebind<_Tp>::other other; }; > > }; > > >} ># 62 "/usr/include/c++/4.8.2/bits/stl_construct.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 77 "/usr/include/c++/4.8.2/bits/stl_construct.h" 3 > template<typename _T1, typename _T2> > inline void > _Construct(_T1* __p, const _T2& __value) > { > > > ::new(static_cast<void*>(__p)) _T1(__value); > } > > > > > > template<typename _Tp> > inline void > _Destroy(_Tp* __pointer) > { __pointer->~_Tp(); } > > template<bool> > struct _Destroy_aux > { > template<typename _ForwardIterator> > static void > __destroy(_ForwardIterator __first, _ForwardIterator __last) > { > for (; __first != __last; ++__first) > std::_Destroy(std::__addressof(*__first)); > } > }; > > template<> > struct _Destroy_aux<true> > { > template<typename _ForwardIterator> > static void > __destroy(_ForwardIterator, _ForwardIterator) { } > }; > > > > > > > template<typename _ForwardIterator> > inline void > _Destroy(_ForwardIterator __first, _ForwardIterator __last) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _Value_type; > std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: > __destroy(__first, __last); > } > > > > > > > > template<typename _ForwardIterator, typename _Allocator> > void > _Destroy(_ForwardIterator __first, _ForwardIterator __last, > _Allocator& __alloc) > { > typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; > for (; __first != __last; ++__first) > __traits::destroy(__alloc, std::__addressof(*__first)); > } > > template<typename _ForwardIterator, typename _Tp> > inline void > _Destroy(_ForwardIterator __first, _ForwardIterator __last, > allocator<_Tp>&) > { > _Destroy(__first, __last); > } > > >} ># 61 "/usr/include/c++/4.8.2/bits/stl_tempbuf.h" 2 3 > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 83 "/usr/include/c++/4.8.2/bits/stl_tempbuf.h" 3 > template<typename _Tp> > pair<_Tp*, ptrdiff_t> > get_temporary_buffer(ptrdiff_t __len) > { > const ptrdiff_t __max = > __gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp); > if (__len > __max) > __len = __max; > > while (__len > 0) > { > _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), > std::nothrow)); > if (__tmp != 0) > return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); > __len /= 2; > } > return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); > } ># 110 "/usr/include/c++/4.8.2/bits/stl_tempbuf.h" 3 > template<typename _Tp> > inline void > return_temporary_buffer(_Tp* __p) > { ::operator delete(__p, std::nothrow); } > > > > > > > > template<typename _ForwardIterator, typename _Tp> > class _Temporary_buffer > { > > > > public: > typedef _Tp value_type; > typedef value_type* pointer; > typedef pointer iterator; > typedef ptrdiff_t size_type; > > protected: > size_type _M_original_len; > size_type _M_len; > pointer _M_buffer; > > public: > > size_type > size() const > { return _M_len; } > > > size_type > requested_size() const > { return _M_original_len; } > > > iterator > begin() > { return _M_buffer; } > > > iterator > end() > { return _M_buffer + _M_len; } > > > > > > _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); > > ~_Temporary_buffer() > { > std::_Destroy(_M_buffer, _M_buffer + _M_len); > std::return_temporary_buffer(_M_buffer); > } > > private: > > _Temporary_buffer(const _Temporary_buffer&); > > void > operator=(const _Temporary_buffer&); > }; > > > template<bool> > struct __uninitialized_construct_buf_dispatch > { > template<typename _Pointer, typename _ForwardIterator> > static void > __ucr(_Pointer __first, _Pointer __last, > _ForwardIterator __seed) > { > if(__first == __last) > return; > > _Pointer __cur = __first; > try > { > std::_Construct(std::__addressof(*__first), > (*__seed)); > _Pointer __prev = __cur; > ++__cur; > for(; __cur != __last; ++__cur, ++__prev) > std::_Construct(std::__addressof(*__cur), > (*__prev)); > *__seed = (*__prev); > } > catch(...) > { > std::_Destroy(__first, __cur); > throw; > } > } > }; > > template<> > struct __uninitialized_construct_buf_dispatch<true> > { > template<typename _Pointer, typename _ForwardIterator> > static void > __ucr(_Pointer, _Pointer, _ForwardIterator) { } > }; ># 229 "/usr/include/c++/4.8.2/bits/stl_tempbuf.h" 3 > template<typename _Pointer, typename _ForwardIterator> > inline void > __uninitialized_construct_buf(_Pointer __first, _Pointer __last, > _ForwardIterator __seed) > { > typedef typename std::iterator_traits<_Pointer>::value_type > _ValueType; > > std::__uninitialized_construct_buf_dispatch< > __has_trivial_constructor(_ValueType)>:: > __ucr(__first, __last, __seed); > } > > template<typename _ForwardIterator, typename _Tp> > _Temporary_buffer<_ForwardIterator, _Tp>:: > _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) > : _M_original_len(std::distance(__first, __last)), > _M_len(0), _M_buffer(0) > { > try > { > std::pair<pointer, size_type> __p(std::get_temporary_buffer< > value_type>(_M_original_len)); > _M_buffer = __p.first; > _M_len = __p.second; > if (_M_buffer) > std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, > __first); > } > catch(...) > { > std::return_temporary_buffer(_M_buffer); > _M_buffer = 0; > _M_len = 0; > throw; > } > } > > >} ># 63 "/usr/include/c++/4.8.2/bits/stl_algo.h" 2 3 ># 71 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > template<typename _Iterator> > void > __move_median_to_first(_Iterator __result, _Iterator __a, > _Iterator __b, _Iterator __c) > { > > > > > if (*__a < *__b) > { > if (*__b < *__c) > std::iter_swap(__result, __b); > else if (*__a < *__c) > std::iter_swap(__result, __c); > else > std::iter_swap(__result, __a); > } > else if (*__a < *__c) > std::iter_swap(__result, __a); > else if (*__b < *__c) > std::iter_swap(__result, __c); > else > std::iter_swap(__result, __b); > } > > > template<typename _Iterator, typename _Compare> > void > __move_median_to_first(_Iterator __result, _Iterator __a, > _Iterator __b, _Iterator __c, > _Compare __comp) > { > > > > > > if (__comp(*__a, *__b)) > { > if (__comp(*__b, *__c)) > std::iter_swap(__result, __b); > else if (__comp(*__a, *__c)) > std::iter_swap(__result, __c); > else > std::iter_swap(__result, __a); > } > else if (__comp(*__a, *__c)) > std::iter_swap(__result, __a); > else if (__comp(*__b, *__c)) > std::iter_swap(__result, __c); > else > std::iter_swap(__result, __b); > } > > > > > template<typename _InputIterator, typename _Tp> > inline _InputIterator > __find(_InputIterator __first, _InputIterator __last, > const _Tp& __val, input_iterator_tag) > { > while (__first != __last && !(*__first == __val)) > ++__first; > return __first; > } > > > template<typename _InputIterator, typename _Predicate> > inline _InputIterator > __find_if(_InputIterator __first, _InputIterator __last, > _Predicate __pred, input_iterator_tag) > { > while (__first != __last && !bool(__pred(*__first))) > ++__first; > return __first; > } > > > template<typename _RandomAccessIterator, typename _Tp> > _RandomAccessIterator > __find(_RandomAccessIterator __first, _RandomAccessIterator __last, > const _Tp& __val, random_access_iterator_tag) > { > typename iterator_traits<_RandomAccessIterator>::difference_type > __trip_count = (__last - __first) >> 2; > > for (; __trip_count > 0; --__trip_count) > { > if (*__first == __val) > return __first; > ++__first; > > if (*__first == __val) > return __first; > ++__first; > > if (*__first == __val) > return __first; > ++__first; > > if (*__first == __val) > return __first; > ++__first; > } > > switch (__last - __first) > { > case 3: > if (*__first == __val) > return __first; > ++__first; > case 2: > if (*__first == __val) > return __first; > ++__first; > case 1: > if (*__first == __val) > return __first; > ++__first; > case 0: > default: > return __last; > } > } > > > template<typename _RandomAccessIterator, typename _Predicate> > _RandomAccessIterator > __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Predicate __pred, random_access_iterator_tag) > { > typename iterator_traits<_RandomAccessIterator>::difference_type > __trip_count = (__last - __first) >> 2; > > for (; __trip_count > 0; --__trip_count) > { > if (__pred(*__first)) > return __first; > ++__first; > > if (__pred(*__first)) > return __first; > ++__first; > > if (__pred(*__first)) > return __first; > ++__first; > > if (__pred(*__first)) > return __first; > ++__first; > } > > switch (__last - __first) > { > case 3: > if (__pred(*__first)) > return __first; > ++__first; > case 2: > if (__pred(*__first)) > return __first; > ++__first; > case 1: > if (__pred(*__first)) > return __first; > ++__first; > case 0: > default: > return __last; > } > } > > > template<typename _InputIterator, typename _Predicate> > inline _InputIterator > __find_if_not(_InputIterator __first, _InputIterator __last, > _Predicate __pred, input_iterator_tag) > { > while (__first != __last && bool(__pred(*__first))) > ++__first; > return __first; > } > > > template<typename _RandomAccessIterator, typename _Predicate> > _RandomAccessIterator > __find_if_not(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Predicate __pred, random_access_iterator_tag) > { > typename iterator_traits<_RandomAccessIterator>::difference_type > __trip_count = (__last - __first) >> 2; > > for (; __trip_count > 0; --__trip_count) > { > if (!bool(__pred(*__first))) > return __first; > ++__first; > > if (!bool(__pred(*__first))) > return __first; > ++__first; > > if (!bool(__pred(*__first))) > return __first; > ++__first; > > if (!bool(__pred(*__first))) > return __first; > ++__first; > } > > switch (__last - __first) > { > case 3: > if (!bool(__pred(*__first))) > return __first; > ++__first; > case 2: > if (!bool(__pred(*__first))) > return __first; > ++__first; > case 1: > if (!bool(__pred(*__first))) > return __first; > ++__first; > case 0: > default: > return __last; > } > } > > > template<typename _InputIterator, typename _Predicate> > inline _InputIterator > __find_if_not(_InputIterator __first, _InputIterator __last, > _Predicate __pred) > { > return std::__find_if_not(__first, __last, __pred, > std::__iterator_category(__first)); > } > > > > > template<typename _InputIterator, typename _Predicate, typename _Distance> > _InputIterator > __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) > { > for (; __len; --__len, ++__first) > if (!bool(__pred(*__first))) > break; > return __first; > } ># 351 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Integer, typename _Tp> > _ForwardIterator > __search_n(_ForwardIterator __first, _ForwardIterator __last, > _Integer __count, const _Tp& __val, > std::forward_iterator_tag) > { > __first = std::find(__first, __last, __val); > while (__first != __last) > { > typename iterator_traits<_ForwardIterator>::difference_type > __n = __count; > _ForwardIterator __i = __first; > ++__i; > while (__i != __last && __n != 1 && *__i == __val) > { > ++__i; > --__n; > } > if (__n == 1) > return __first; > if (__i == __last) > return __last; > __first = std::find(++__i, __last, __val); > } > return __last; > } > > > > > > > template<typename _RandomAccessIter, typename _Integer, typename _Tp> > _RandomAccessIter > __search_n(_RandomAccessIter __first, _RandomAccessIter __last, > _Integer __count, const _Tp& __val, > std::random_access_iterator_tag) > { > > typedef typename std::iterator_traits<_RandomAccessIter>::difference_type > _DistanceType; > > _DistanceType __tailSize = __last - __first; > _DistanceType __remainder = __count; > > while (__remainder <= __tailSize) > { > __first += __remainder; > __tailSize -= __remainder; > > > _RandomAccessIter __backTrack = __first; > while (*--__backTrack == __val) > { > if (--__remainder == 0) > return (__first - __count); > } > __remainder = __count + 1 - (__first - __backTrack); > } > return __last; > } ># 421 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Integer, typename _Tp, > typename _BinaryPredicate> > _ForwardIterator > __search_n(_ForwardIterator __first, _ForwardIterator __last, > _Integer __count, const _Tp& __val, > _BinaryPredicate __binary_pred, std::forward_iterator_tag) > { > while (__first != __last && !bool(__binary_pred(*__first, __val))) > ++__first; > > while (__first != __last) > { > typename iterator_traits<_ForwardIterator>::difference_type > __n = __count; > _ForwardIterator __i = __first; > ++__i; > while (__i != __last && __n != 1 && bool(__binary_pred(*__i, __val))) > { > ++__i; > --__n; > } > if (__n == 1) > return __first; > if (__i == __last) > return __last; > __first = ++__i; > while (__first != __last > && !bool(__binary_pred(*__first, __val))) > ++__first; > } > return __last; > } > > > > > > > > template<typename _RandomAccessIter, typename _Integer, typename _Tp, > typename _BinaryPredicate> > _RandomAccessIter > __search_n(_RandomAccessIter __first, _RandomAccessIter __last, > _Integer __count, const _Tp& __val, > _BinaryPredicate __binary_pred, std::random_access_iterator_tag) > { > > typedef typename std::iterator_traits<_RandomAccessIter>::difference_type > _DistanceType; > > _DistanceType __tailSize = __last - __first; > _DistanceType __remainder = __count; > > while (__remainder <= __tailSize) > { > __first += __remainder; > __tailSize -= __remainder; > > > _RandomAccessIter __backTrack = __first; > while (__binary_pred(*--__backTrack, __val)) > { > if (--__remainder == 0) > return (__first - __count); > } > __remainder = __count + 1 - (__first - __backTrack); > } > return __last; > } > > > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator1 > __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > forward_iterator_tag, forward_iterator_tag) > { > if (__first2 == __last2) > return __last1; > else > { > _ForwardIterator1 __result = __last1; > while (1) > { > _ForwardIterator1 __new_result > = std::search(__first1, __last1, __first2, __last2); > if (__new_result == __last1) > return __result; > else > { > __result = __new_result; > __first1 = __new_result; > ++__first1; > } > } > } > } > > template<typename _ForwardIterator1, typename _ForwardIterator2, > typename _BinaryPredicate> > _ForwardIterator1 > __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > forward_iterator_tag, forward_iterator_tag, > _BinaryPredicate __comp) > { > if (__first2 == __last2) > return __last1; > else > { > _ForwardIterator1 __result = __last1; > while (1) > { > _ForwardIterator1 __new_result > = std::search(__first1, __last1, __first2, > __last2, __comp); > if (__new_result == __last1) > return __result; > else > { > __result = __new_result; > __first1 = __new_result; > ++__first1; > } > } > } > } > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2> > _BidirectionalIterator1 > __find_end(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > bidirectional_iterator_tag, bidirectional_iterator_tag) > { > > > > > > > typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; > typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; > > _RevIterator1 __rlast1(__first1); > _RevIterator2 __rlast2(__first2); > _RevIterator1 __rresult = std::search(_RevIterator1(__last1), > __rlast1, > _RevIterator2(__last2), > __rlast2); > > if (__rresult == __rlast1) > return __last1; > else > { > _BidirectionalIterator1 __result = __rresult.base(); > std::advance(__result, -std::distance(__first2, __last2)); > return __result; > } > } > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BinaryPredicate> > _BidirectionalIterator1 > __find_end(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > bidirectional_iterator_tag, bidirectional_iterator_tag, > _BinaryPredicate __comp) > { > > > > > > > typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; > typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; > > _RevIterator1 __rlast1(__first1); > _RevIterator2 __rlast2(__first2); > _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1, > _RevIterator2(__last2), __rlast2, > __comp); > > if (__rresult == __rlast1) > return __last1; > else > { > _BidirectionalIterator1 __result = __rresult.base(); > std::advance(__result, -std::distance(__first2, __last2)); > return __result; > } > } ># 645 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > inline _ForwardIterator1 > find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2) > { > > > > > > > ; > ; > > return std::__find_end(__first1, __last1, __first2, __last2, > std::__iterator_category(__first1), > std::__iterator_category(__first2)); > } ># 692 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2, > typename _BinaryPredicate> > inline _ForwardIterator1 > find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > _BinaryPredicate __comp) > { > > > > > > > ; > ; > > return std::__find_end(__first1, __last1, __first2, __last2, > std::__iterator_category(__first1), > std::__iterator_category(__first2), > __comp); > } ># 871 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, typename _Tp> > _OutputIterator > remove_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, const _Tp& __value) > { > > > > > > > ; > > for (; __first != __last; ++__first) > if (!(*__first == __value)) > { > *__result = *__first; > ++__result; > } > return __result; > } ># 908 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _Predicate> > _OutputIterator > remove_copy_if(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, _Predicate __pred) > { > > > > > > > ; > > for (; __first != __last; ++__first) > if (!bool(__pred(*__first))) > { > *__result = *__first; > ++__result; > } > return __result; > } ># 1089 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > _ForwardIterator > remove(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __value) > { > > > > > > ; > > __first = std::find(__first, __last, __value); > if(__first == __last) > return __first; > _ForwardIterator __result = __first; > ++__first; > for(; __first != __last; ++__first) > if(!(*__first == __value)) > { > *__result = (*__first); > ++__result; > } > return __result; > } ># 1132 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate> > _ForwardIterator > remove_if(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred) > { > > > > > > ; > > __first = std::find_if(__first, __last, __pred); > if(__first == __last) > return __first; > _ForwardIterator __result = __first; > ++__first; > for(; __first != __last; ++__first) > if(!bool(__pred(*__first))) > { > *__result = (*__first); > ++__result; > } > return __result; > } ># 1172 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > unique(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > > ; > > > __first = std::adjacent_find(__first, __last); > if (__first == __last) > return __last; > > > _ForwardIterator __dest = __first; > ++__first; > while (++__first != __last) > if (!(*__dest == *__first)) > *++__dest = (*__first); > return ++__dest; > } ># 1212 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _BinaryPredicate> > _ForwardIterator > unique(_ForwardIterator __first, _ForwardIterator __last, > _BinaryPredicate __binary_pred) > { > > > > > > > ; > > > __first = std::adjacent_find(__first, __last, __binary_pred); > if (__first == __last) > return __last; > > > _ForwardIterator __dest = __first; > ++__first; > while (++__first != __last) > if (!bool(__binary_pred(*__dest, *__first))) > *++__dest = (*__first); > return ++__dest; > } > > > > > > > template<typename _ForwardIterator, typename _OutputIterator> > _OutputIterator > __unique_copy(_ForwardIterator __first, _ForwardIterator __last, > _OutputIterator __result, > forward_iterator_tag, output_iterator_tag) > { > > _ForwardIterator __next = __first; > *__result = *__first; > while (++__next != __last) > if (!(*__first == *__next)) > { > __first = __next; > *++__result = *__first; > } > return ++__result; > } > > > > > > > template<typename _InputIterator, typename _OutputIterator> > _OutputIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > input_iterator_tag, output_iterator_tag) > { > > typename iterator_traits<_InputIterator>::value_type __value = *__first; > *__result = __value; > while (++__first != __last) > if (!(__value == *__first)) > { > __value = *__first; > *++__result = __value; > } > return ++__result; > } > > > > > > > template<typename _InputIterator, typename _ForwardIterator> > _ForwardIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, > input_iterator_tag, forward_iterator_tag) > { > > *__result = *__first; > while (++__first != __last) > if (!(*__result == *__first)) > *++__result = *__first; > return ++__result; > } > > > > > > > > template<typename _ForwardIterator, typename _OutputIterator, > typename _BinaryPredicate> > _OutputIterator > __unique_copy(_ForwardIterator __first, _ForwardIterator __last, > _OutputIterator __result, _BinaryPredicate __binary_pred, > forward_iterator_tag, output_iterator_tag) > { > > > > > > _ForwardIterator __next = __first; > *__result = *__first; > while (++__next != __last) > if (!bool(__binary_pred(*__first, *__next))) > { > __first = __next; > *++__result = *__first; > } > return ++__result; > } > > > > > > > > template<typename _InputIterator, typename _OutputIterator, > typename _BinaryPredicate> > _OutputIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, _BinaryPredicate __binary_pred, > input_iterator_tag, output_iterator_tag) > { > > > > > > typename iterator_traits<_InputIterator>::value_type __value = *__first; > *__result = __value; > while (++__first != __last) > if (!bool(__binary_pred(__value, *__first))) > { > __value = *__first; > *++__result = __value; > } > return ++__result; > } > > > > > > > > template<typename _InputIterator, typename _ForwardIterator, > typename _BinaryPredicate> > _ForwardIterator > __unique_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, _BinaryPredicate __binary_pred, > input_iterator_tag, forward_iterator_tag) > { > > > > > > *__result = *__first; > while (++__first != __last) > if (!bool(__binary_pred(*__result, *__first))) > *++__result = *__first; > return ++__result; > } > > > > > > > template<typename _BidirectionalIterator> > void > __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, > bidirectional_iterator_tag) > { > while (true) > if (__first == __last || __first == --__last) > return; > else > { > std::iter_swap(__first, __last); > ++__first; > } > } > > > > > > > template<typename _RandomAccessIterator> > void > __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, > random_access_iterator_tag) > { > if (__first == __last) > return; > --__last; > while (__first < __last) > { > std::iter_swap(__first, __last); > ++__first; > --__last; > } > } ># 1440 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > inline void > reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) > { > > > > ; > std::__reverse(__first, __last, std::__iterator_category(__first)); > } ># 1467 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _OutputIterator> > _OutputIterator > reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, > _OutputIterator __result) > { > > > > > > ; > > while (__first != __last) > { > --__last; > *__result = *__last; > ++__result; > } > return __result; > } > > > > > > template<typename _EuclideanRingElement> > _EuclideanRingElement > __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) > { > while (__n != 0) > { > _EuclideanRingElement __t = __m % __n; > __m = __n; > __n = __t; > } > return __m; > } > > > template<typename _ForwardIterator> > void > __rotate(_ForwardIterator __first, > _ForwardIterator __middle, > _ForwardIterator __last, > forward_iterator_tag) > { > if (__first == __middle || __last == __middle) > return; > > _ForwardIterator __first2 = __middle; > do > { > std::iter_swap(__first, __first2); > ++__first; > ++__first2; > if (__first == __middle) > __middle = __first2; > } > while (__first2 != __last); > > __first2 = __middle; > > while (__first2 != __last) > { > std::iter_swap(__first, __first2); > ++__first; > ++__first2; > if (__first == __middle) > __middle = __first2; > else if (__first2 == __last) > __first2 = __middle; > } > } > > > template<typename _BidirectionalIterator> > void > __rotate(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > bidirectional_iterator_tag) > { > > > > > if (__first == __middle || __last == __middle) > return; > > std::__reverse(__first, __middle, bidirectional_iterator_tag()); > std::__reverse(__middle, __last, bidirectional_iterator_tag()); > > while (__first != __middle && __middle != __last) > { > std::iter_swap(__first, --__last); > ++__first; > } > > if (__first == __middle) > std::__reverse(__middle, __last, bidirectional_iterator_tag()); > else > std::__reverse(__first, __middle, bidirectional_iterator_tag()); > } > > > template<typename _RandomAccessIterator> > void > __rotate(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last, > random_access_iterator_tag) > { > > > > > if (__first == __middle || __last == __middle) > return; > > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > _Distance __n = __last - __first; > _Distance __k = __middle - __first; > > if (__k == __n - __k) > { > std::swap_ranges(__first, __middle, __middle); > return; > } > > _RandomAccessIterator __p = __first; > > for (;;) > { > if (__k < __n - __k) > { > if (__is_pod(_ValueType) && __k == 1) > { > _ValueType __t = (*__p); > std::copy(__p + 1, __p + __n, __p); > *(__p + __n - 1) = (__t); > return; > } > _RandomAccessIterator __q = __p + __k; > for (_Distance __i = 0; __i < __n - __k; ++ __i) > { > std::iter_swap(__p, __q); > ++__p; > ++__q; > } > __n %= __k; > if (__n == 0) > return; > std::swap(__n, __k); > __k = __n - __k; > } > else > { > __k = __n - __k; > if (__is_pod(_ValueType) && __k == 1) > { > _ValueType __t = (*(__p + __n - 1)); > std::copy_backward(__p, __p + __n - 1, __p + __n); > *__p = (__t); > return; > } > _RandomAccessIterator __q = __p + __n; > __p = __q - __k; > for (_Distance __i = 0; __i < __n - __k; ++ __i) > { > --__p; > --__q; > std::iter_swap(__p, __q); > } > __n %= __k; > if (__n == 0) > return; > std::swap(__n, __k); > } > } > } ># 1673 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > inline void > rotate(_ForwardIterator __first, _ForwardIterator __middle, > _ForwardIterator __last) > { > > > > ; > ; > > typedef typename iterator_traits<_ForwardIterator>::iterator_category > _IterType; > std::__rotate(__first, __middle, __last, _IterType()); > } ># 1709 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _OutputIterator> > _OutputIterator > rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, > _ForwardIterator __last, _OutputIterator __result) > { > > > > > ; > ; > > return std::copy(__first, __middle, > std::copy(__middle, __last, __result)); > } > > > template<typename _ForwardIterator, typename _Predicate> > _ForwardIterator > __partition(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred, forward_iterator_tag) > { > if (__first == __last) > return __first; > > while (__pred(*__first)) > if (++__first == __last) > return __first; > > _ForwardIterator __next = __first; > > while (++__next != __last) > if (__pred(*__next)) > { > std::iter_swap(__first, __next); > ++__first; > } > > return __first; > } > > > template<typename _BidirectionalIterator, typename _Predicate> > _BidirectionalIterator > __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, > _Predicate __pred, bidirectional_iterator_tag) > { > while (true) > { > while (true) > if (__first == __last) > return __first; > else if (__pred(*__first)) > ++__first; > else > break; > --__last; > while (true) > if (__first == __last) > return __first; > else if (!bool(__pred(*__last))) > --__last; > else > break; > std::iter_swap(__first, __last); > ++__first; > } > } > > > > > > > template<typename _ForwardIterator, typename _Predicate, typename _Distance> > _ForwardIterator > __inplace_stable_partition(_ForwardIterator __first, > _Predicate __pred, _Distance __len) > { > if (__len == 1) > return __first; > _ForwardIterator __middle = __first; > std::advance(__middle, __len / 2); > _ForwardIterator __left_split = > std::__inplace_stable_partition(__first, __pred, __len / 2); > > > _Distance __right_len = __len - __len / 2; > _ForwardIterator __right_split = > std::__find_if_not_n(__middle, __right_len, __pred); > if (__right_len) > __right_split = std::__inplace_stable_partition(__middle, > __pred, > __right_len); > std::rotate(__left_split, __middle, __right_split); > std::advance(__left_split, std::distance(__middle, __right_split)); > return __left_split; > } > > > > > > > > template<typename _ForwardIterator, typename _Pointer, typename _Predicate, > typename _Distance> > _ForwardIterator > __stable_partition_adaptive(_ForwardIterator __first, > _ForwardIterator __last, > _Predicate __pred, _Distance __len, > _Pointer __buffer, > _Distance __buffer_size) > { > if (__len <= __buffer_size) > { > _ForwardIterator __result1 = __first; > _Pointer __result2 = __buffer; > > > > *__result2 = (*__first); > ++__result2; > ++__first; > for (; __first != __last; ++__first) > if (__pred(*__first)) > { > *__result1 = (*__first); > ++__result1; > } > else > { > *__result2 = (*__first); > ++__result2; > } > std::copy(__buffer, __result2, __result1); > return __result1; > } > else > { > _ForwardIterator __middle = __first; > std::advance(__middle, __len / 2); > _ForwardIterator __left_split = > std::__stable_partition_adaptive(__first, __middle, __pred, > __len / 2, __buffer, > __buffer_size); > > > _Distance __right_len = __len - __len / 2; > _ForwardIterator __right_split = > std::__find_if_not_n(__middle, __right_len, __pred); > if (__right_len) > __right_split = > std::__stable_partition_adaptive(__right_split, __last, __pred, > __right_len, > __buffer, __buffer_size); > std::rotate(__left_split, __middle, __right_split); > std::advance(__left_split, std::distance(__middle, __right_split)); > return __left_split; > } > } ># 1888 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate> > _ForwardIterator > stable_partition(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred) > { > > > > > > ; > > __first = std::__find_if_not(__first, __last, __pred); > > if (__first == __last) > return __first; > else > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > _Temporary_buffer<_ForwardIterator, _ValueType> __buf(__first, > __last); > if (__buf.size() > 0) > return > std::__stable_partition_adaptive(__first, __last, __pred, > _DistanceType(__buf.requested_size()), > __buf.begin(), > _DistanceType(__buf.size())); > else > return > std::__inplace_stable_partition(__first, __pred, > _DistanceType(__buf.requested_size())); > } > } > > > template<typename _RandomAccessIterator> > void > __heap_select(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last) > { > std::make_heap(__first, __middle); > for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) > if (*__i < *__first) > std::__pop_heap(__first, __middle, __i); > } > > > template<typename _RandomAccessIterator, typename _Compare> > void > __heap_select(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last, _Compare __comp) > { > std::make_heap(__first, __middle, __comp); > for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) > if (__comp(*__i, *__first)) > std::__pop_heap(__first, __middle, __i, __comp); > } ># 1972 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _RandomAccessIterator> > _RandomAccessIterator > partial_sort_copy(_InputIterator __first, _InputIterator __last, > _RandomAccessIterator __result_first, > _RandomAccessIterator __result_last) > { > typedef typename iterator_traits<_InputIterator>::value_type > _InputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _OutputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; ># 1992 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > if (__result_first == __result_last) > return __result_last; > _RandomAccessIterator __result_real_last = __result_first; > while(__first != __last && __result_real_last != __result_last) > { > *__result_real_last = *__first; > ++__result_real_last; > ++__first; > } > std::make_heap(__result_first, __result_real_last); > while (__first != __last) > { > if (*__first < *__result_first) > std::__adjust_heap(__result_first, _DistanceType(0), > _DistanceType(__result_real_last > - __result_first), > _InputValueType(*__first)); > ++__first; > } > std::sort_heap(__result_first, __result_real_last); > return __result_real_last; > } ># 2038 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _RandomAccessIterator, typename _Compare> > _RandomAccessIterator > partial_sort_copy(_InputIterator __first, _InputIterator __last, > _RandomAccessIterator __result_first, > _RandomAccessIterator __result_last, > _Compare __comp) > { > typedef typename iterator_traits<_InputIterator>::value_type > _InputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _OutputValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; ># 2062 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > if (__result_first == __result_last) > return __result_last; > _RandomAccessIterator __result_real_last = __result_first; > while(__first != __last && __result_real_last != __result_last) > { > *__result_real_last = *__first; > ++__result_real_last; > ++__first; > } > std::make_heap(__result_first, __result_real_last, __comp); > while (__first != __last) > { > if (__comp(*__first, *__result_first)) > std::__adjust_heap(__result_first, _DistanceType(0), > _DistanceType(__result_real_last > - __result_first), > _InputValueType(*__first), > __comp); > ++__first; > } > std::sort_heap(__result_first, __result_real_last, __comp); > return __result_real_last; > } > > > template<typename _RandomAccessIterator> > void > __unguarded_linear_insert(_RandomAccessIterator __last) > { > typename iterator_traits<_RandomAccessIterator>::value_type > __val = (*__last); > _RandomAccessIterator __next = __last; > --__next; > while (__val < *__next) > { > *__last = (*__next); > __last = __next; > --__next; > } > *__last = (__val); > } > > > template<typename _RandomAccessIterator, typename _Compare> > void > __unguarded_linear_insert(_RandomAccessIterator __last, > _Compare __comp) > { > typename iterator_traits<_RandomAccessIterator>::value_type > __val = (*__last); > _RandomAccessIterator __next = __last; > --__next; > while (__comp(__val, *__next)) > { > *__last = (*__next); > __last = __next; > --__next; > } > *__last = (__val); > } > > > template<typename _RandomAccessIterator> > void > __insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > if (__first == __last) > return; > > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > { > if (*__i < *__first) > { > typename iterator_traits<_RandomAccessIterator>::value_type > __val = (*__i); > std::copy_backward(__first, __i, __i + 1); > *__first = (__val); > } > else > std::__unguarded_linear_insert(__i); > } > } > > > template<typename _RandomAccessIterator, typename _Compare> > void > __insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > if (__first == __last) return; > > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > { > if (__comp(*__i, *__first)) > { > typename iterator_traits<_RandomAccessIterator>::value_type > __val = (*__i); > std::copy_backward(__first, __i, __i + 1); > *__first = (__val); > } > else > std::__unguarded_linear_insert(__i, __comp); > } > } > > > template<typename _RandomAccessIterator> > inline void > __unguarded_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > for (_RandomAccessIterator __i = __first; __i != __last; ++__i) > std::__unguarded_linear_insert(__i); > } > > > template<typename _RandomAccessIterator, typename _Compare> > inline void > __unguarded_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > for (_RandomAccessIterator __i = __first; __i != __last; ++__i) > std::__unguarded_linear_insert(__i, __comp); > } > > > > > > enum { _S_threshold = 16 }; > > > template<typename _RandomAccessIterator> > void > __final_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > if (__last - __first > int(_S_threshold)) > { > std::__insertion_sort(__first, __first + int(_S_threshold)); > std::__unguarded_insertion_sort(__first + int(_S_threshold), __last); > } > else > std::__insertion_sort(__first, __last); > } > > > template<typename _RandomAccessIterator, typename _Compare> > void > __final_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > if (__last - __first > int(_S_threshold)) > { > std::__insertion_sort(__first, __first + int(_S_threshold), __comp); > std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, > __comp); > } > else > std::__insertion_sort(__first, __last, __comp); > } > > > template<typename _RandomAccessIterator, typename _Tp> > _RandomAccessIterator > __unguarded_partition(_RandomAccessIterator __first, > _RandomAccessIterator __last, const _Tp& __pivot) > { > while (true) > { > while (*__first < __pivot) > ++__first; > --__last; > while (__pivot < *__last) > --__last; > if (!(__first < __last)) > return __first; > std::iter_swap(__first, __last); > ++__first; > } > } > > > template<typename _RandomAccessIterator, typename _Tp, typename _Compare> > _RandomAccessIterator > __unguarded_partition(_RandomAccessIterator __first, > _RandomAccessIterator __last, > const _Tp& __pivot, _Compare __comp) > { > while (true) > { > while (__comp(*__first, __pivot)) > ++__first; > --__last; > while (__comp(__pivot, *__last)) > --__last; > if (!(__first < __last)) > return __first; > std::iter_swap(__first, __last); > ++__first; > } > } > > > template<typename _RandomAccessIterator> > inline _RandomAccessIterator > __unguarded_partition_pivot(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > _RandomAccessIterator __mid = __first + (__last - __first) / 2; > std::__move_median_to_first(__first, __first + 1, __mid, __last - 1); > return std::__unguarded_partition(__first + 1, __last, *__first); > } > > > > template<typename _RandomAccessIterator, typename _Compare> > inline _RandomAccessIterator > __unguarded_partition_pivot(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > _RandomAccessIterator __mid = __first + (__last - __first) / 2; > std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, > __comp); > return std::__unguarded_partition(__first + 1, __last, *__first, __comp); > } > > > template<typename _RandomAccessIterator, typename _Size> > void > __introsort_loop(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Size __depth_limit) > { > while (__last - __first > int(_S_threshold)) > { > if (__depth_limit == 0) > { > std::partial_sort(__first, __last, __last); > return; > } > --__depth_limit; > _RandomAccessIterator __cut = > std::__unguarded_partition_pivot(__first, __last); > std::__introsort_loop(__cut, __last, __depth_limit); > __last = __cut; > } > } > > > template<typename _RandomAccessIterator, typename _Size, typename _Compare> > void > __introsort_loop(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Size __depth_limit, _Compare __comp) > { > while (__last - __first > int(_S_threshold)) > { > if (__depth_limit == 0) > { > std::partial_sort(__first, __last, __last, __comp); > return; > } > --__depth_limit; > _RandomAccessIterator __cut = > std::__unguarded_partition_pivot(__first, __last, __comp); > std::__introsort_loop(__cut, __last, __depth_limit, __comp); > __last = __cut; > } > } > > > > template<typename _RandomAccessIterator, typename _Size> > void > __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, > _RandomAccessIterator __last, _Size __depth_limit) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > while (__last - __first > 3) > { > if (__depth_limit == 0) > { > std::__heap_select(__first, __nth + 1, __last); > > > std::iter_swap(__first, __nth); > return; > } > --__depth_limit; > _RandomAccessIterator __cut = > std::__unguarded_partition_pivot(__first, __last); > if (__cut <= __nth) > __first = __cut; > else > __last = __cut; > } > std::__insertion_sort(__first, __last); > } > > template<typename _RandomAccessIterator, typename _Size, typename _Compare> > void > __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, > _RandomAccessIterator __last, _Size __depth_limit, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > while (__last - __first > 3) > { > if (__depth_limit == 0) > { > std::__heap_select(__first, __nth + 1, __last, __comp); > > std::iter_swap(__first, __nth); > return; > } > --__depth_limit; > _RandomAccessIterator __cut = > std::__unguarded_partition_pivot(__first, __last, __comp); > if (__cut <= __nth) > __first = __cut; > else > __last = __cut; > } > std::__insertion_sort(__first, __last, __comp); > } ># 2423 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > _ForwardIterator > lower_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > > while (__len > 0) > { > _DistanceType __half = __len >> 1; > _ForwardIterator __middle = __first; > std::advance(__middle, __half); > if (__comp(*__middle, __val)) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else > __len = __half; > } > return __first; > } ># 2470 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > _ForwardIterator > upper_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > > while (__len > 0) > { > _DistanceType __half = __len >> 1; > _ForwardIterator __middle = __first; > std::advance(__middle, __half); > if (__val < *__middle) > __len = __half; > else > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > } > return __first; > } ># 2519 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > _ForwardIterator > upper_bound(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > > ; > > _DistanceType __len = std::distance(__first, __last); > > while (__len > 0) > { > _DistanceType __half = __len >> 1; > _ForwardIterator __middle = __first; > std::advance(__middle, __half); > if (__comp(__val, *__middle)) > __len = __half; > else > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > } > return __first; > } ># 2572 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > pair<_ForwardIterator, _ForwardIterator> > equal_range(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; > > > > > > ; > ; > > _DistanceType __len = std::distance(__first, __last); > > while (__len > 0) > { > _DistanceType __half = __len >> 1; > _ForwardIterator __middle = __first; > std::advance(__middle, __half); > if (*__middle < __val) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else if (__val < *__middle) > __len = __half; > else > { > _ForwardIterator __left = std::lower_bound(__first, __middle, > __val); > std::advance(__first, __len); > _ForwardIterator __right = std::upper_bound(++__middle, __first, > __val); > return pair<_ForwardIterator, _ForwardIterator>(__left, __right); > } > } > return pair<_ForwardIterator, _ForwardIterator>(__first, __first); > } ># 2634 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > pair<_ForwardIterator, _ForwardIterator> > equal_range(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > typedef typename iterator_traits<_ForwardIterator>::difference_type > _DistanceType; ># 2651 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > > ; > > _DistanceType __len = std::distance(__first, __last); > > while (__len > 0) > { > _DistanceType __half = __len >> 1; > _ForwardIterator __middle = __first; > std::advance(__middle, __half); > if (__comp(*__middle, __val)) > { > __first = __middle; > ++__first; > __len = __len - __half - 1; > } > else if (__comp(__val, *__middle)) > __len = __half; > else > { > _ForwardIterator __left = std::lower_bound(__first, __middle, > __val, __comp); > std::advance(__first, __len); > _ForwardIterator __right = std::upper_bound(++__middle, __first, > __val, __comp); > return pair<_ForwardIterator, _ForwardIterator>(__left, __right); > } > } > return pair<_ForwardIterator, _ForwardIterator>(__first, __first); > } ># 2695 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > bool > binary_search(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > > > > > ; > ; > > _ForwardIterator __i = std::lower_bound(__first, __last, __val); > return __i != __last && !(__val < *__i); > } ># 2728 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp, typename _Compare> > bool > binary_search(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __val, _Compare __comp) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > > > > > > > ; > > ; > > _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp); > return __i != __last && !bool(__comp(__val, *__i)); > } > > > > > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > void > __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > while (__first1 != __last1 && __first2 != __last2) > { > if (*__first2 < *__first1) > { > *__result = (*__first2); > ++__first2; > } > else > { > *__result = (*__first1); > ++__first1; > } > ++__result; > } > if (__first1 != __last1) > std::copy(__first1, __last1, __result); > } > > > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > void > __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > while (__first1 != __last1 && __first2 != __last2) > { > if (__comp(*__first2, *__first1)) > { > *__result = (*__first2); > ++__first2; > } > else > { > *__result = (*__first1); > ++__first1; > } > ++__result; > } > if (__first1 != __last1) > std::copy(__first1, __last1, __result); > } > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BidirectionalIterator3> > void > __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > _BidirectionalIterator3 __result) > { > if (__first1 == __last1) > { > std::copy_backward(__first2, __last2, __result); > return; > } > else if (__first2 == __last2) > return; > > --__last1; > --__last2; > while (true) > { > if (*__last2 < *__last1) > { > *--__result = (*__last1); > if (__first1 == __last1) > { > std::copy_backward(__first2, ++__last2, __result); > return; > } > --__last1; > } > else > { > *--__result = (*__last2); > if (__first2 == __last2) > return; > --__last2; > } > } > } > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _BidirectionalIterator3, typename _Compare> > void > __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, > _BidirectionalIterator1 __last1, > _BidirectionalIterator2 __first2, > _BidirectionalIterator2 __last2, > _BidirectionalIterator3 __result, > _Compare __comp) > { > if (__first1 == __last1) > { > std::copy_backward(__first2, __last2, __result); > return; > } > else if (__first2 == __last2) > return; > > --__last1; > --__last2; > while (true) > { > if (__comp(*__last2, *__last1)) > { > *--__result = (*__last1); > if (__first1 == __last1) > { > std::copy_backward(__first2, ++__last2, __result); > return; > } > --__last1; > } > else > { > *--__result = (*__last2); > if (__first2 == __last2) > return; > --__last2; > } > } > } > > > template<typename _BidirectionalIterator1, typename _BidirectionalIterator2, > typename _Distance> > _BidirectionalIterator1 > __rotate_adaptive(_BidirectionalIterator1 __first, > _BidirectionalIterator1 __middle, > _BidirectionalIterator1 __last, > _Distance __len1, _Distance __len2, > _BidirectionalIterator2 __buffer, > _Distance __buffer_size) > { > _BidirectionalIterator2 __buffer_end; > if (__len1 > __len2 && __len2 <= __buffer_size) > { > if (__len2) > { > __buffer_end = std::copy(__middle, __last, __buffer); > std::copy_backward(__first, __middle, __last); > return std::copy(__buffer, __buffer_end, __first); > } > else > return __first; > } > else if (__len1 <= __buffer_size) > { > if (__len1) > { > __buffer_end = std::copy(__first, __middle, __buffer); > std::copy(__middle, __last, __first); > return std::copy_backward(__buffer, __buffer_end, __last); > } > else > return __last; > } > else > { > std::rotate(__first, __middle, __last); > std::advance(__first, std::distance(__middle, __last)); > return __first; > } > } > > > template<typename _BidirectionalIterator, typename _Distance, > typename _Pointer> > void > __merge_adaptive(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2, > _Pointer __buffer, _Distance __buffer_size) > { > if (__len1 <= __len2 && __len1 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__first, __middle, __buffer); > std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, > __first); > } > else if (__len2 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__middle, __last, __buffer); > std::__move_merge_adaptive_backward(__first, __middle, __buffer, > __buffer_end, __last); > } > else > { > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, > *__first_cut); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, > *__second_cut); > __len11 = std::distance(__first, __first_cut); > } > _BidirectionalIterator __new_middle = > std::__rotate_adaptive(__first_cut, __middle, __second_cut, > __len1 - __len11, __len22, __buffer, > __buffer_size); > std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, > __len22, __buffer, __buffer_size); > std::__merge_adaptive(__new_middle, __second_cut, __last, > __len1 - __len11, > __len2 - __len22, __buffer, __buffer_size); > } > } > > > template<typename _BidirectionalIterator, typename _Distance, > typename _Pointer, typename _Compare> > void > __merge_adaptive(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2, > _Pointer __buffer, _Distance __buffer_size, > _Compare __comp) > { > if (__len1 <= __len2 && __len1 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__first, __middle, __buffer); > std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, > __first, __comp); > } > else if (__len2 <= __buffer_size) > { > _Pointer __buffer_end = std::copy(__middle, __last, __buffer); > std::__move_merge_adaptive_backward(__first, __middle, __buffer, > __buffer_end, __last, __comp); > } > else > { > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, *__first_cut, > __comp); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, *__second_cut, > __comp); > __len11 = std::distance(__first, __first_cut); > } > _BidirectionalIterator __new_middle = > std::__rotate_adaptive(__first_cut, __middle, __second_cut, > __len1 - __len11, __len22, __buffer, > __buffer_size); > std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, > __len22, __buffer, __buffer_size, __comp); > std::__merge_adaptive(__new_middle, __second_cut, __last, > __len1 - __len11, > __len2 - __len22, __buffer, > __buffer_size, __comp); > } > } > > > template<typename _BidirectionalIterator, typename _Distance> > void > __merge_without_buffer(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2) > { > if (__len1 == 0 || __len2 == 0) > return; > if (__len1 + __len2 == 2) > { > if (*__middle < *__first) > std::iter_swap(__first, __middle); > return; > } > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, *__first_cut); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, *__second_cut); > __len11 = std::distance(__first, __first_cut); > } > std::rotate(__first_cut, __middle, __second_cut); > _BidirectionalIterator __new_middle = __first_cut; > std::advance(__new_middle, std::distance(__middle, __second_cut)); > std::__merge_without_buffer(__first, __first_cut, __new_middle, > __len11, __len22); > std::__merge_without_buffer(__new_middle, __second_cut, __last, > __len1 - __len11, __len2 - __len22); > } > > > template<typename _BidirectionalIterator, typename _Distance, > typename _Compare> > void > __merge_without_buffer(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Distance __len1, _Distance __len2, > _Compare __comp) > { > if (__len1 == 0 || __len2 == 0) > return; > if (__len1 + __len2 == 2) > { > if (__comp(*__middle, *__first)) > std::iter_swap(__first, __middle); > return; > } > _BidirectionalIterator __first_cut = __first; > _BidirectionalIterator __second_cut = __middle; > _Distance __len11 = 0; > _Distance __len22 = 0; > if (__len1 > __len2) > { > __len11 = __len1 / 2; > std::advance(__first_cut, __len11); > __second_cut = std::lower_bound(__middle, __last, *__first_cut, > __comp); > __len22 = std::distance(__middle, __second_cut); > } > else > { > __len22 = __len2 / 2; > std::advance(__second_cut, __len22); > __first_cut = std::upper_bound(__first, __middle, *__second_cut, > __comp); > __len11 = std::distance(__first, __first_cut); > } > std::rotate(__first_cut, __middle, __second_cut); > _BidirectionalIterator __new_middle = __first_cut; > std::advance(__new_middle, std::distance(__middle, __second_cut)); > std::__merge_without_buffer(__first, __first_cut, __new_middle, > __len11, __len22, __comp); > std::__merge_without_buffer(__new_middle, __second_cut, __last, > __len1 - __len11, __len2 - __len22, __comp); > } ># 3152 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > void > inplace_merge(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last) > { > typedef typename iterator_traits<_BidirectionalIterator>::value_type > _ValueType; > typedef typename iterator_traits<_BidirectionalIterator>::difference_type > _DistanceType; > > > > > > ; > ; > > if (__first == __middle || __middle == __last) > return; > > _DistanceType __len1 = std::distance(__first, __middle); > _DistanceType __len2 = std::distance(__middle, __last); > > _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first, > __last); > if (__buf.begin() == 0) > std::__merge_without_buffer(__first, __middle, __last, __len1, __len2); > else > std::__merge_adaptive(__first, __middle, __last, __len1, __len2, > __buf.begin(), _DistanceType(__buf.size())); > } ># 3207 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _Compare> > void > inplace_merge(_BidirectionalIterator __first, > _BidirectionalIterator __middle, > _BidirectionalIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_BidirectionalIterator>::value_type > _ValueType; > typedef typename iterator_traits<_BidirectionalIterator>::difference_type > _DistanceType; > > > > > > > ; > ; > > if (__first == __middle || __middle == __last) > return; > > const _DistanceType __len1 = std::distance(__first, __middle); > const _DistanceType __len2 = std::distance(__middle, __last); > > _Temporary_buffer<_BidirectionalIterator, _ValueType> __buf(__first, > __last); > if (__buf.begin() == 0) > std::__merge_without_buffer(__first, __middle, __last, __len1, > __len2, __comp); > else > std::__merge_adaptive(__first, __middle, __last, __len1, __len2, > __buf.begin(), _DistanceType(__buf.size()), > __comp); > } > > > > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > __move_merge(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > while (__first1 != __last1 && __first2 != __last2) > { > if (*__first2 < *__first1) > { > *__result = (*__first2); > ++__first2; > } > else > { > *__result = (*__first1); > ++__first1; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, __result)) > > ; > } > > > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > __move_merge(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > while (__first1 != __last1 && __first2 != __last2) > { > if (__comp(*__first2, *__first1)) > { > *__result = (*__first2); > ++__first2; > } > else > { > *__result = (*__first1); > ++__first1; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, __result)) > > ; > } > > template<typename _RandomAccessIterator1, typename _RandomAccessIterator2, > typename _Distance> > void > __merge_sort_loop(_RandomAccessIterator1 __first, > _RandomAccessIterator1 __last, > _RandomAccessIterator2 __result, > _Distance __step_size) > { > const _Distance __two_step = 2 * __step_size; > > while (__last - __first >= __two_step) > { > __result = std::__move_merge(__first, __first + __step_size, > __first + __step_size, > __first + __two_step, __result); > __first += __two_step; > } > > __step_size = std::min(_Distance(__last - __first), __step_size); > std::__move_merge(__first, __first + __step_size, > __first + __step_size, __last, __result); > } > > template<typename _RandomAccessIterator1, typename _RandomAccessIterator2, > typename _Distance, typename _Compare> > void > __merge_sort_loop(_RandomAccessIterator1 __first, > _RandomAccessIterator1 __last, > _RandomAccessIterator2 __result, _Distance __step_size, > _Compare __comp) > { > const _Distance __two_step = 2 * __step_size; > > while (__last - __first >= __two_step) > { > __result = std::__move_merge(__first, __first + __step_size, > __first + __step_size, > __first + __two_step, > __result, __comp); > __first += __two_step; > } > __step_size = std::min(_Distance(__last - __first), __step_size); > > std::__move_merge(__first,__first + __step_size, > __first + __step_size, __last, __result, __comp); > } > > template<typename _RandomAccessIterator, typename _Distance> > void > __chunk_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Distance __chunk_size) > { > while (__last - __first >= __chunk_size) > { > std::__insertion_sort(__first, __first + __chunk_size); > __first += __chunk_size; > } > std::__insertion_sort(__first, __last); > } > > template<typename _RandomAccessIterator, typename _Distance, > typename _Compare> > void > __chunk_insertion_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Distance __chunk_size, _Compare __comp) > { > while (__last - __first >= __chunk_size) > { > std::__insertion_sort(__first, __first + __chunk_size, __comp); > __first += __chunk_size; > } > std::__insertion_sort(__first, __last, __comp); > } > > enum { _S_chunk_size = 7 }; > > template<typename _RandomAccessIterator, typename _Pointer> > void > __merge_sort_with_buffer(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > > const _Distance __len = __last - __first; > const _Pointer __buffer_last = __buffer + __len; > > _Distance __step_size = _S_chunk_size; > std::__chunk_insertion_sort(__first, __last, __step_size); > > while (__step_size < __len) > { > std::__merge_sort_loop(__first, __last, __buffer, __step_size); > __step_size *= 2; > std::__merge_sort_loop(__buffer, __buffer_last, __first, __step_size); > __step_size *= 2; > } > } > > template<typename _RandomAccessIterator, typename _Pointer, typename _Compare> > void > __merge_sort_with_buffer(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _Distance; > > const _Distance __len = __last - __first; > const _Pointer __buffer_last = __buffer + __len; > > _Distance __step_size = _S_chunk_size; > std::__chunk_insertion_sort(__first, __last, __step_size, __comp); > > while (__step_size < __len) > { > std::__merge_sort_loop(__first, __last, __buffer, > __step_size, __comp); > __step_size *= 2; > std::__merge_sort_loop(__buffer, __buffer_last, __first, > __step_size, __comp); > __step_size *= 2; > } > } > > template<typename _RandomAccessIterator, typename _Pointer, > typename _Distance> > void > __stable_sort_adaptive(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer, _Distance __buffer_size) > { > const _Distance __len = (__last - __first + 1) / 2; > const _RandomAccessIterator __middle = __first + __len; > if (__len > __buffer_size) > { > std::__stable_sort_adaptive(__first, __middle, > __buffer, __buffer_size); > std::__stable_sort_adaptive(__middle, __last, > __buffer, __buffer_size); > } > else > { > std::__merge_sort_with_buffer(__first, __middle, __buffer); > std::__merge_sort_with_buffer(__middle, __last, __buffer); > } > std::__merge_adaptive(__first, __middle, __last, > _Distance(__middle - __first), > _Distance(__last - __middle), > __buffer, __buffer_size); > } > > template<typename _RandomAccessIterator, typename _Pointer, > typename _Distance, typename _Compare> > void > __stable_sort_adaptive(_RandomAccessIterator __first, > _RandomAccessIterator __last, > _Pointer __buffer, _Distance __buffer_size, > _Compare __comp) > { > const _Distance __len = (__last - __first + 1) / 2; > const _RandomAccessIterator __middle = __first + __len; > if (__len > __buffer_size) > { > std::__stable_sort_adaptive(__first, __middle, __buffer, > __buffer_size, __comp); > std::__stable_sort_adaptive(__middle, __last, __buffer, > __buffer_size, __comp); > } > else > { > std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); > std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); > } > std::__merge_adaptive(__first, __middle, __last, > _Distance(__middle - __first), > _Distance(__last - __middle), > __buffer, __buffer_size, > __comp); > } > > > template<typename _RandomAccessIterator> > void > __inplace_stable_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last) > { > if (__last - __first < 15) > { > std::__insertion_sort(__first, __last); > return; > } > _RandomAccessIterator __middle = __first + (__last - __first) / 2; > std::__inplace_stable_sort(__first, __middle); > std::__inplace_stable_sort(__middle, __last); > std::__merge_without_buffer(__first, __middle, __last, > __middle - __first, > __last - __middle); > } > > > template<typename _RandomAccessIterator, typename _Compare> > void > __inplace_stable_sort(_RandomAccessIterator __first, > _RandomAccessIterator __last, _Compare __comp) > { > if (__last - __first < 15) > { > std::__insertion_sort(__first, __last, __comp); > return; > } > _RandomAccessIterator __middle = __first + (__last - __first) / 2; > std::__inplace_stable_sort(__first, __middle, __comp); > std::__inplace_stable_sort(__middle, __last, __comp); > std::__merge_without_buffer(__first, __middle, __last, > __middle - __first, > __last - __middle, > __comp); > } ># 3547 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2> > bool > includes(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; > > > > > > > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first2 < *__first1) > return false; > else if(*__first1 < *__first2) > ++__first1; > else > ++__first1, ++__first2; > > return __first2 == __last2; > } ># 3597 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _Compare> > bool > includes(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _Compare __comp) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 3616 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first2, *__first1)) > return false; > else if(__comp(*__first1, *__first2)) > ++__first1; > else > ++__first1, ++__first2; > > return __first2 == __last2; > } ># 3652 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > bool > next_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last) > { > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (*__i < *__ii) > { > _BidirectionalIterator __j = __last; > while (!(*__i < *--__j)) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 3709 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _Compare> > bool > next_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last, _Compare __comp) > { > > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (__comp(*__i, *__ii)) > { > _BidirectionalIterator __j = __last; > while (!bool(__comp(*__i, *--__j))) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 3765 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator> > bool > prev_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last) > { > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (*__ii < *__i) > { > _BidirectionalIterator __j = __last; > while (!(*--__j < *__i)) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 3822 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _BidirectionalIterator, typename _Compare> > bool > prev_permutation(_BidirectionalIterator __first, > _BidirectionalIterator __last, _Compare __comp) > { > > > > > > > ; > > if (__first == __last) > return false; > _BidirectionalIterator __i = __first; > ++__i; > if (__i == __last) > return false; > __i = __last; > --__i; > > for(;;) > { > _BidirectionalIterator __ii = __i; > --__i; > if (__comp(*__ii, *__i)) > { > _BidirectionalIterator __j = __last; > while (!bool(__comp(*--__j, *__i))) > {} > std::iter_swap(__i, __j); > std::reverse(__ii, __last); > return true; > } > if (__i == __first) > { > std::reverse(__first, __last); > return false; > } > } > } ># 3882 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, typename _Tp> > _OutputIterator > replace_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > const _Tp& __old_value, const _Tp& __new_value) > { > > > > > > > ; > > for (; __first != __last; ++__first, ++__result) > if (*__first == __old_value) > *__result = __new_value; > else > *__result = *__first; > return __result; > } ># 3919 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _Predicate, typename _Tp> > _OutputIterator > replace_copy_if(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > _Predicate __pred, const _Tp& __new_value) > { > > > > > > > ; > > for (; __first != __last; ++__first, ++__result) > if (__pred(*__first)) > *__result = __new_value; > else > *__result = *__first; > return __result; > } ># 4393 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 ># 4409 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Function> > _Function > for_each(_InputIterator __first, _InputIterator __last, _Function __f) > { > > > ; > for (; __first != __last; ++__first) > __f(*__first); > return (__f); > } ># 4430 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Tp> > inline _InputIterator > find(_InputIterator __first, _InputIterator __last, > const _Tp& __val) > { > > > > > ; > return std::__find(__first, __last, __val, > std::__iterator_category(__first)); > } ># 4454 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Predicate> > inline _InputIterator > find_if(_InputIterator __first, _InputIterator __last, > _Predicate __pred) > { > > > > > ; > return std::__find_if(__first, __last, __pred, > std::__iterator_category(__first)); > } ># 4484 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _ForwardIterator> > _InputIterator > find_first_of(_InputIterator __first1, _InputIterator __last1, > _ForwardIterator __first2, _ForwardIterator __last2) > { > > > > > > > ; > ; > > for (; __first1 != __last1; ++__first1) > for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) > if (*__first1 == *__iter) > return __first1; > return __last1; > } ># 4524 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _ForwardIterator, > typename _BinaryPredicate> > _InputIterator > find_first_of(_InputIterator __first1, _InputIterator __last1, > _ForwardIterator __first2, _ForwardIterator __last2, > _BinaryPredicate __comp) > { > > > > > > > ; > ; > > for (; __first1 != __last1; ++__first1) > for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) > if (__comp(*__first1, *__iter)) > return __first1; > return __last1; > } ># 4556 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > adjacent_find(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > ; > if (__first == __last) > return __last; > _ForwardIterator __next = __first; > while(++__next != __last) > { > if (*__first == *__next) > return __first; > __first = __next; > } > return __last; > } ># 4588 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _BinaryPredicate> > _ForwardIterator > adjacent_find(_ForwardIterator __first, _ForwardIterator __last, > _BinaryPredicate __binary_pred) > { > > > > > > ; > if (__first == __last) > return __last; > _ForwardIterator __next = __first; > while(++__next != __last) > { > if (__binary_pred(*__first, *__next)) > return __first; > __first = __next; > } > return __last; > } ># 4620 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Tp> > typename iterator_traits<_InputIterator>::difference_type > count(_InputIterator __first, _InputIterator __last, const _Tp& __value) > { > > > > > ; > typename iterator_traits<_InputIterator>::difference_type __n = 0; > for (; __first != __last; ++__first) > if (*__first == __value) > ++__n; > return __n; > } ># 4645 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _Predicate> > typename iterator_traits<_InputIterator>::difference_type > count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) > { > > > > > ; > typename iterator_traits<_InputIterator>::difference_type __n = 0; > for (; __first != __last; ++__first) > if (__pred(*__first)) > ++__n; > return __n; > } ># 4687 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2> > _ForwardIterator1 > search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2) > { > > > > > > > ; > ; > > > if (__first1 == __last1 || __first2 == __last2) > return __first1; > > > _ForwardIterator2 __p1(__first2); > if (++__p1 == __last2) > return std::find(__first1, __last1, *__first2); > > > _ForwardIterator2 __p; > _ForwardIterator1 __current = __first1; > > for (;;) > { > __first1 = std::find(__first1, __last1, *__first2); > if (__first1 == __last1) > return __last1; > > __p = __p1; > __current = __first1; > if (++__current == __last1) > return __last1; > > while (*__current == *__p) > { > if (++__p == __last2) > return __first1; > if (++__current == __last1) > return __last1; > } > ++__first1; > } > return __first1; > } ># 4758 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator1, typename _ForwardIterator2, > typename _BinaryPredicate> > _ForwardIterator1 > search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, > _ForwardIterator2 __first2, _ForwardIterator2 __last2, > _BinaryPredicate __predicate) > { > > > > > > > ; > ; > > > if (__first1 == __last1 || __first2 == __last2) > return __first1; > > > _ForwardIterator2 __p1(__first2); > if (++__p1 == __last2) > { > while (__first1 != __last1 > && !bool(__predicate(*__first1, *__first2))) > ++__first1; > return __first1; > } > > > _ForwardIterator2 __p; > _ForwardIterator1 __current = __first1; > > for (;;) > { > while (__first1 != __last1 > && !bool(__predicate(*__first1, *__first2))) > ++__first1; > if (__first1 == __last1) > return __last1; > > __p = __p1; > __current = __first1; > if (++__current == __last1) > return __last1; > > while (__predicate(*__current, *__p)) > { > if (++__p == __last2) > return __first1; > if (++__current == __last1) > return __last1; > } > ++__first1; > } > return __first1; > } ># 4833 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Integer, typename _Tp> > _ForwardIterator > search_n(_ForwardIterator __first, _ForwardIterator __last, > _Integer __count, const _Tp& __val) > { > > > > > ; > > if (__count <= 0) > return __first; > if (__count == 1) > return std::find(__first, __last, __val); > return std::__search_n(__first, __last, __count, __val, > std::__iterator_category(__first)); > } ># 4870 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Integer, typename _Tp, > typename _BinaryPredicate> > _ForwardIterator > search_n(_ForwardIterator __first, _ForwardIterator __last, > _Integer __count, const _Tp& __val, > _BinaryPredicate __binary_pred) > { > > > > > ; > > if (__count <= 0) > return __first; > if (__count == 1) > { > while (__first != __last && !bool(__binary_pred(*__first, __val))) > ++__first; > return __first; > } > return std::__search_n(__first, __last, __count, __val, __binary_pred, > std::__iterator_category(__first)); > } ># 4912 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _UnaryOperation> > _OutputIterator > transform(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, _UnaryOperation __unary_op) > { > > > > > > ; > > for (; __first != __last; ++__first, ++__result) > *__result = __unary_op(*__first); > return __result; > } ># 4949 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _BinaryOperation> > _OutputIterator > transform(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _OutputIterator __result, > _BinaryOperation __binary_op) > { > > > > > > > ; > > for (; __first1 != __last1; ++__first1, ++__first2, ++__result) > *__result = __binary_op(*__first1, *__first2); > return __result; > } ># 4982 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Tp> > void > replace(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __old_value, const _Tp& __new_value) > { > > > > > > > > ; > > for (; __first != __last; ++__first) > if (*__first == __old_value) > *__first = __new_value; > } ># 5014 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate, typename _Tp> > void > replace_if(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred, const _Tp& __new_value) > { > > > > > > > > ; > > for (; __first != __last; ++__first) > if (__pred(*__first)) > *__first = __new_value; > } ># 5046 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Generator> > void > generate(_ForwardIterator __first, _ForwardIterator __last, > _Generator __gen) > { > > > > > ; > > for (; __first != __last; ++__first) > *__first = __gen(); > } ># 5077 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _OutputIterator, typename _Size, typename _Generator> > _OutputIterator > generate_n(_OutputIterator __first, _Size __n, _Generator __gen) > { > > > > > > for (__decltype(__n + 0) __niter = __n; > __niter > 0; --__niter, ++__first) > *__first = __gen(); > return __first; > } ># 5114 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator> > inline _OutputIterator > unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result) > { > > > > > > > ; > > if (__first == __last) > return __result; > return std::__unique_copy(__first, __last, __result, > std::__iterator_category(__first), > std::__iterator_category(__result)); > } ># 5153 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator, typename _OutputIterator, > typename _BinaryPredicate> > inline _OutputIterator > unique_copy(_InputIterator __first, _InputIterator __last, > _OutputIterator __result, > _BinaryPredicate __binary_pred) > { > > > > > ; > > if (__first == __last) > return __result; > return std::__unique_copy(__first, __last, __result, __binary_pred, > std::__iterator_category(__first), > std::__iterator_category(__result)); > } ># 5185 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > > > > ; > > if (__first != __last) > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > { > _RandomAccessIterator __j = __first > + std::rand() % ((__i - __first) + 1); > if (__i != __j) > std::iter_swap(__i, __j); > } > } ># 5218 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _RandomNumberGenerator> > void > random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, > > > > _RandomNumberGenerator& __rand) > > { > > > > ; > > if (__first == __last) > return; > for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) > { > _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); > if (__i != __j) > std::iter_swap(__i, __j); > } > } ># 5258 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Predicate> > inline _ForwardIterator > partition(_ForwardIterator __first, _ForwardIterator __last, > _Predicate __pred) > { > > > > > > ; > > return std::__partition(__first, __last, __pred, > std::__iterator_category(__first)); > } ># 5292 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > partial_sort(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > ; > > std::__heap_select(__first, __middle, __last); > std::sort_heap(__first, __middle); > } ># 5331 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > partial_sort(_RandomAccessIterator __first, > _RandomAccessIterator __middle, > _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > > ; > ; > > std::__heap_select(__first, __middle, __last, __comp); > std::sort_heap(__first, __middle, __comp); > } ># 5368 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, > _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > ; > > if (__first == __last || __nth == __last) > return; > > std::__introselect(__first, __nth, __last, > std::__lg(__last - __first) * 2); > } ># 5407 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, > _RandomAccessIterator __last, _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > > ; > ; > > if (__first == __last || __nth == __last) > return; > > std::__introselect(__first, __nth, __last, > std::__lg(__last - __first) * 2, __comp); > } ># 5445 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > sort(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > ; > > if (__first != __last) > { > std::__introsort_loop(__first, __last, > std::__lg(__last - __first) * 2); > std::__final_insertion_sort(__first, __last); > } > } ># 5481 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > sort(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > > > > > > > ; > > if (__first != __last) > { > std::__introsort_loop(__first, __last, > std::__lg(__last - __first) * 2, __comp); > std::__final_insertion_sort(__first, __last, __comp); > } > } ># 5523 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > merge(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 5543 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (*__first2 < *__first1) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 5587 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > merge(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 5608 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (__comp(*__first2, *__first1)) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 5647 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator> > inline void > stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > ; > > _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first, > __last); > if (__buf.begin() == 0) > std::__inplace_stable_sort(__first, __last); > else > std::__stable_sort_adaptive(__first, __last, __buf.begin(), > _DistanceType(__buf.size())); > } ># 5689 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _RandomAccessIterator, typename _Compare> > inline void > stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, > _Compare __comp) > { > typedef typename iterator_traits<_RandomAccessIterator>::value_type > _ValueType; > typedef typename iterator_traits<_RandomAccessIterator>::difference_type > _DistanceType; > > > > > > > > ; > > _Temporary_buffer<_RandomAccessIterator, _ValueType> __buf(__first, > __last); > if (__buf.begin() == 0) > std::__inplace_stable_sort(__first, __last, __comp); > else > std::__stable_sort_adaptive(__first, __last, __buf.begin(), > _DistanceType(__buf.size()), __comp); > } ># 5735 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_union(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 5756 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (*__first1 < *__first2) > { > *__result = *__first1; > ++__first1; > } > else if (*__first2 < *__first1) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > ++__first2; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 5802 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_union(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 5825 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > { > if (__comp(*__first1, *__first2)) > { > *__result = *__first1; > ++__first1; > } > else if (__comp(*__first2, *__first1)) > { > *__result = *__first2; > ++__first2; > } > else > { > *__result = *__first1; > ++__first1; > ++__first2; > } > ++__result; > } > return std::copy(__first2, __last2, std::copy(__first1, __last1, > __result)); > } ># 5869 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 5888 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first1 < *__first2) > ++__first1; > else if (*__first2 < *__first1) > ++__first2; > else > { > *__result = *__first1; > ++__first1; > ++__first2; > ++__result; > } > return __result; > } ># 5926 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 5947 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first1, *__first2)) > ++__first1; > else if (__comp(*__first2, *__first1)) > ++__first2; > else > { > *__result = *__first1; > ++__first1; > ++__first2; > ++__result; > } > return __result; > } ># 5984 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 6003 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first1 < *__first2) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (*__first2 < *__first1) > ++__first2; > else > { > ++__first1; > ++__first2; > } > return std::copy(__first1, __last1, __result); > } ># 6045 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, _Compare __comp) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 6066 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first1, *__first2)) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (__comp(*__first2, *__first1)) > ++__first2; > else > { > ++__first1; > ++__first2; > } > return std::copy(__first1, __last1, __result); > } ># 6103 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator> > _OutputIterator > set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 6124 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (*__first1 < *__first2) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (*__first2 < *__first1) > { > *__result = *__first2; > ++__first2; > ++__result; > } > else > { > ++__first1; > ++__first2; > } > return std::copy(__first2, __last2, std::copy(__first1, > __last1, __result)); > } ># 6169 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _OutputIterator, typename _Compare> > _OutputIterator > set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, > _InputIterator2 __first2, _InputIterator2 __last2, > _OutputIterator __result, > _Compare __comp) > { > typedef typename iterator_traits<_InputIterator1>::value_type > _ValueType1; > typedef typename iterator_traits<_InputIterator2>::value_type > _ValueType2; ># 6193 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > ; > ; > > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first1, *__first2)) > { > *__result = *__first1; > ++__first1; > ++__result; > } > else if (__comp(*__first2, *__first1)) > { > *__result = *__first2; > ++__first2; > ++__result; > } > else > { > ++__first1; > ++__first2; > } > return std::copy(__first2, __last2, > std::copy(__first1, __last1, __result)); > } ># 6226 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > min_element(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > ; > > if (__first == __last) > return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (*__first < *__result) > __result = __first; > return __result; > } ># 6254 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Compare> > _ForwardIterator > min_element(_ForwardIterator __first, _ForwardIterator __last, > _Compare __comp) > { > > > > > > ; > > if (__first == __last) > return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (__comp(*__first, *__result)) > __result = __first; > return __result; > } ># 6282 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator> > _ForwardIterator > max_element(_ForwardIterator __first, _ForwardIterator __last) > { > > > > > ; > > if (__first == __last) > return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (*__result < *__first) > __result = __first; > return __result; > } ># 6310 "/usr/include/c++/4.8.2/bits/stl_algo.h" 3 > template<typename _ForwardIterator, typename _Compare> > _ForwardIterator > max_element(_ForwardIterator __first, _ForwardIterator __last, > _Compare __comp) > { > > > > > > ; > > if (__first == __last) return __first; > _ForwardIterator __result = __first; > while (++__first != __last) > if (__comp(*__result, *__first)) > __result = __first; > return __result; > } > > >} ># 63 "/usr/include/c++/4.8.2/algorithm" 2 3 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.ic" 2 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.ic" >static inline >void >ut_pair_min( > ulint* min_hi, > ulint* min_lo, > ulint a_hi, > ulint a_lo, > ulint b_hi, > ulint b_lo) >{ > if (a_hi == b_hi) { > *min_hi = a_hi; > *min_lo = std::min(a_lo, b_lo); > } else if (a_hi < b_hi) { > *min_hi = a_hi; > *min_lo = a_lo; > } else { > *min_hi = b_hi; > *min_lo = b_lo; > } >} > > > > >static inline >int >ut_ulint_cmp( > > ulint a, > ulint b) >{ > if (a < b) { > return(-1); > } else if (a == b) { > return(0); > } else { > return(1); > } >} ># 85 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.ic" >static inline >int >ut_pair_cmp( > ulint a_h, > ulint a_l, > ulint b_h, > ulint b_l) >{ > if (a_h < b_h) { > return(-1); > } > if (a_h > b_h) { > return(1); > } > return(ut_ulint_cmp(a_l, b_l)); >} > > > > > >static inline >ulint >ut_2_log( > > ulint n) >{ > ulint res; > > res = 0; > > do { } while(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); >} ># 511 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0ut.h" 2 ># 617 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" ># 1 "/usr/include/c++/4.8.2/vector" 1 3 ># 58 "/usr/include/c++/4.8.2/vector" 3 ># 59 "/usr/include/c++/4.8.2/vector" 3 > > > > ># 1 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<bool _TrivialValueTypes> > struct __uninitialized_copy > { > template<typename _InputIterator, typename _ForwardIterator> > static _ForwardIterator > __uninit_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result) > { > _ForwardIterator __cur = __result; > try > { > for (; __first != __last; ++__first, ++__cur) > std::_Construct(std::__addressof(*__cur), *__first); > return __cur; > } > catch(...) > { > std::_Destroy(__result, __cur); > throw; > } > } > }; > > template<> > struct __uninitialized_copy<true> > { > template<typename _InputIterator, typename _ForwardIterator> > static _ForwardIterator > __uninit_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result) > { return std::copy(__first, __last, __result); } > }; ># 105 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 3 > template<typename _InputIterator, typename _ForwardIterator> > inline _ForwardIterator > uninitialized_copy(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result) > { > typedef typename iterator_traits<_InputIterator>::value_type > _ValueType1; > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType2; > > return std::__uninitialized_copy<(__is_trivial(_ValueType1) > && __is_trivial(_ValueType2))>:: > __uninit_copy(__first, __last, __result); > } > > > template<bool _TrivialValueType> > struct __uninitialized_fill > { > template<typename _ForwardIterator, typename _Tp> > static void > __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x) > { > _ForwardIterator __cur = __first; > try > { > for (; __cur != __last; ++__cur) > std::_Construct(std::__addressof(*__cur), __x); > } > catch(...) > { > std::_Destroy(__first, __cur); > throw; > } > } > }; > > template<> > struct __uninitialized_fill<true> > { > template<typename _ForwardIterator, typename _Tp> > static void > __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x) > { std::fill(__first, __last, __x); } > }; ># 162 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 3 > template<typename _ForwardIterator, typename _Tp> > inline void > uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > > std::__uninitialized_fill<__is_trivial(_ValueType)>:: > __uninit_fill(__first, __last, __x); > } > > > template<bool _TrivialValueType> > struct __uninitialized_fill_n > { > template<typename _ForwardIterator, typename _Size, typename _Tp> > static void > __uninit_fill_n(_ForwardIterator __first, _Size __n, > const _Tp& __x) > { > _ForwardIterator __cur = __first; > try > { > for (; __n > 0; --__n, ++__cur) > std::_Construct(std::__addressof(*__cur), __x); > } > catch(...) > { > std::_Destroy(__first, __cur); > throw; > } > } > }; > > template<> > struct __uninitialized_fill_n<true> > { > template<typename _ForwardIterator, typename _Size, typename _Tp> > static void > __uninit_fill_n(_ForwardIterator __first, _Size __n, > const _Tp& __x) > { std::fill_n(__first, __n, __x); } > }; ># 216 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 3 > template<typename _ForwardIterator, typename _Size, typename _Tp> > inline void > uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) > { > typedef typename iterator_traits<_ForwardIterator>::value_type > _ValueType; > > std::__uninitialized_fill_n<__is_trivial(_ValueType)>:: > __uninit_fill_n(__first, __n, __x); > } > > > > > > > > template<typename _InputIterator, typename _ForwardIterator, > typename _Allocator> > _ForwardIterator > __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, _Allocator& __alloc) > { > _ForwardIterator __cur = __result; > try > { > typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; > for (; __first != __last; ++__first, ++__cur) > __traits::construct(__alloc, std::__addressof(*__cur), *__first); > return __cur; > } > catch(...) > { > std::_Destroy(__result, __cur, __alloc); > throw; > } > } > > template<typename _InputIterator, typename _ForwardIterator, typename _Tp> > inline _ForwardIterator > __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, allocator<_Tp>&) > { return std::uninitialized_copy(__first, __last, __result); } > > template<typename _InputIterator, typename _ForwardIterator, > typename _Allocator> > inline _ForwardIterator > __uninitialized_move_a(_InputIterator __first, _InputIterator __last, > _ForwardIterator __result, _Allocator& __alloc) > { > return std::__uninitialized_copy_a((__first), > (__last), > __result, __alloc); > } > > template<typename _InputIterator, typename _ForwardIterator, > typename _Allocator> > inline _ForwardIterator > __uninitialized_move_if_noexcept_a(_InputIterator __first, > _InputIterator __last, > _ForwardIterator __result, > _Allocator& __alloc) > { > return std::__uninitialized_copy_a > ((__first), > (__last), __result, __alloc); > } > > template<typename _ForwardIterator, typename _Tp, typename _Allocator> > void > __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x, _Allocator& __alloc) > { > _ForwardIterator __cur = __first; > try > { > typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; > for (; __cur != __last; ++__cur) > __traits::construct(__alloc, std::__addressof(*__cur), __x); > } > catch(...) > { > std::_Destroy(__first, __cur, __alloc); > throw; > } > } > > template<typename _ForwardIterator, typename _Tp, typename _Tp2> > inline void > __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, > const _Tp& __x, allocator<_Tp2>&) > { std::uninitialized_fill(__first, __last, __x); } > > template<typename _ForwardIterator, typename _Size, typename _Tp, > typename _Allocator> > void > __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, > const _Tp& __x, _Allocator& __alloc) > { > _ForwardIterator __cur = __first; > try > { > typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; > for (; __n > 0; --__n, ++__cur) > __traits::construct(__alloc, std::__addressof(*__cur), __x); > } > catch(...) > { > std::_Destroy(__first, __cur, __alloc); > throw; > } > } > > template<typename _ForwardIterator, typename _Size, typename _Tp, > typename _Tp2> > inline void > __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, > const _Tp& __x, allocator<_Tp2>&) > { std::uninitialized_fill_n(__first, __n, __x); } ># 346 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 3 > template<typename _InputIterator1, typename _InputIterator2, > typename _ForwardIterator, typename _Allocator> > inline _ForwardIterator > __uninitialized_copy_move(_InputIterator1 __first1, > _InputIterator1 __last1, > _InputIterator2 __first2, > _InputIterator2 __last2, > _ForwardIterator __result, > _Allocator& __alloc) > { > _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, > __result, > __alloc); > try > { > return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); > } > catch(...) > { > std::_Destroy(__result, __mid, __alloc); > throw; > } > } > > > > > > template<typename _InputIterator1, typename _InputIterator2, > typename _ForwardIterator, typename _Allocator> > inline _ForwardIterator > __uninitialized_move_copy(_InputIterator1 __first1, > _InputIterator1 __last1, > _InputIterator2 __first2, > _InputIterator2 __last2, > _ForwardIterator __result, > _Allocator& __alloc) > { > _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, > __result, > __alloc); > try > { > return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); > } > catch(...) > { > std::_Destroy(__result, __mid, __alloc); > throw; > } > } > > > > > template<typename _ForwardIterator, typename _Tp, typename _InputIterator, > typename _Allocator> > inline _ForwardIterator > __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, > const _Tp& __x, _InputIterator __first, > _InputIterator __last, _Allocator& __alloc) > { > std::__uninitialized_fill_a(__result, __mid, __x, __alloc); > try > { > return std::__uninitialized_move_a(__first, __last, __mid, __alloc); > } > catch(...) > { > std::_Destroy(__result, __mid, __alloc); > throw; > } > } > > > > > template<typename _InputIterator, typename _ForwardIterator, typename _Tp, > typename _Allocator> > inline void > __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, > _ForwardIterator __first2, > _ForwardIterator __last2, const _Tp& __x, > _Allocator& __alloc) > { > _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, > __first2, > __alloc); > try > { > std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); > } > catch(...) > { > std::_Destroy(__first2, __mid2, __alloc); > throw; > } > } ># 653 "/usr/include/c++/4.8.2/bits/stl_uninitialized.h" 3 > >} ># 64 "/usr/include/c++/4.8.2/vector" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_vector.h" 1 3 ># 66 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > template<typename _Tp, typename _Alloc> > struct _Vector_base > { > typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template > rebind<_Tp>::other _Tp_alloc_type; > typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer > pointer; > > struct _Vector_impl > : public _Tp_alloc_type > { > pointer _M_start; > pointer _M_finish; > pointer _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) > { } ># 101 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void _M_swap_data(_Vector_impl& __x) > { > std::swap(_M_start, __x._M_start); > std::swap(_M_finish, __x._M_finish); > std::swap(_M_end_of_storage, __x._M_end_of_storage); > } > }; > > public: > typedef _Alloc allocator_type; > > _Tp_alloc_type& > _M_get_Tp_allocator() > { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } > > const _Tp_alloc_type& > _M_get_Tp_allocator() const > { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); } > > allocator_type > get_allocator() const > { return allocator_type(_M_get_Tp_allocator()); } > > _Vector_base() > : _M_impl() { } > > _Vector_base(const allocator_type& __a) > : _M_impl(__a) { } > > _Vector_base(size_t __n) > : _M_impl() > { _M_create_storage(__n); } > > _Vector_base(size_t __n, const allocator_type& __a) > : _M_impl(__a) > { _M_create_storage(__n); } ># 159 "/usr/include/c++/4.8.2/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; > > pointer > _M_allocate(size_t __n) > { return __n != 0 ? _M_impl.allocate(__n) : 0; } > > void > _M_deallocate(pointer __p, size_t __n) > { > if (__p) > _M_impl.deallocate(__p, __n); > } > > private: > void > _M_create_storage(size_t __n) > { > 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; > } > }; ># 209 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _Tp, typename _Alloc = std::allocator<_Tp> > > class vector : protected _Vector_base<_Tp, _Alloc> > { > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > typedef _Vector_base<_Tp, _Alloc> _Base; > typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; > typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; > > public: > typedef _Tp value_type; > typedef typename _Base::pointer pointer; > typedef typename _Alloc_traits::const_pointer const_pointer; > typedef typename _Alloc_traits::reference reference; > typedef typename _Alloc_traits::const_reference const_reference; > typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator; > typedef __gnu_cxx::__normal_iterator<const_pointer, vector> > const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Alloc allocator_type; > > protected: > using _Base::_M_allocate; > using _Base::_M_deallocate; > using _Base::_M_impl; > using _Base::_M_get_Tp_allocator; > > public: > > > > > > vector() > : _Base() { } > > > > > > explicit > vector(const allocator_type& __a) > : _Base(__a) { } ># 294 "/usr/include/c++/4.8.2/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); } ># 310 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > vector(const vector& __x) > : _Base(__x.size(), > _Alloc_traits::_S_select_on_copy(__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()); > } ># 397 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _InputIterator> > vector(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Base(__a) > { > > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_initialize_dispatch(__first, __last, _Integral()); > } ># 414 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > ~vector() > { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, > _M_get_Tp_allocator()); } ># 426 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > vector& > operator=(const vector& __x); ># 478 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > assign(size_type __n, const value_type& __val) > { _M_fill_assign(__n, __val); } ># 501 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } ># 529 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > 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()); } ># 644 "/usr/include/c++/4.8.2/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 _Alloc_traits::max_size(_M_get_Tp_allocator()); } ># 703 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > resize(size_type __new_size, value_type __x = value_type()) > { > if (__new_size > size()) > insert(end(), __new_size - size(), __x); > else if (__new_size < size()) > _M_erase_at_end(this->_M_impl._M_start + __new_size); > } ># 724 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > 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(); } ># 754 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > reserve(size_type __n); ># 769 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > reference > operator[](size_type __n) > { return *(this->_M_impl._M_start + __n); } ># 784 "/usr/include/c++/4.8.2/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: ># 809 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > reference > at(size_type __n) > { > _M_range_check(__n); > return (*this)[__n]; > } ># 827 "/usr/include/c++/4.8.2/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); } ># 876 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > pointer > > data() > { return std::__addressof(front()); } > > > > > const_pointer > > data() const > { return std::__addressof(front()); } ># 900 "/usr/include/c++/4.8.2/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) > { > _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, > __x); > ++this->_M_impl._M_finish; > } > else > > > > _M_insert_aux(end(), __x); > > } ># 936 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > pop_back() > { > --this->_M_impl._M_finish; > _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); > } ># 972 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > iterator > insert(iterator __position, const value_type& __x); ># 1022 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > insert(iterator __position, size_type __n, const value_type& __x) > { _M_fill_insert(__position, __n, __x); } ># 1048 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _InputIterator> > void > insert(iterator __position, _InputIterator __first, > _InputIterator __last) > { > > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } ># 1074 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > iterator > erase(iterator __position); ># 1095 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > iterator > erase(iterator __first, iterator __last); ># 1107 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > swap(vector& __x) > > > > { > this->_M_impl._M_swap_data(__x._M_impl); > _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), > __x._M_get_Tp_allocator()); > } > > > > > > > > void > clear() > { _M_erase_at_end(this->_M_impl._M_start); } > > protected: > > > > > template<typename _ForwardIterator> > pointer > _M_allocate_and_copy(size_type __n, > _ForwardIterator __first, _ForwardIterator __last) > { > pointer __result = this->_M_allocate(__n); > try > { > std::__uninitialized_copy_a(__first, __last, __result, > _M_get_Tp_allocator()); > return __result; > } > catch(...) > { > _M_deallocate(__result, __n); > throw; > } > } ># 1159 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _Integer> > void > _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) > { > this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n)); > this->_M_impl._M_end_of_storage = > this->_M_impl._M_start + static_cast<size_type>(__n); > _M_fill_initialize(static_cast<size_type>(__n), __value); > } > > > template<typename _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename std::iterator_traits<_InputIterator>:: > iterator_category _IterCategory; > _M_range_initialize(__first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_range_initialize(_InputIterator __first, > _InputIterator __last, std::input_iterator_tag) > { > for (; __first != __last; ++__first) > > > > push_back(*__first); > > } > > > template<typename _ForwardIterator> > void > _M_range_initialize(_ForwardIterator __first, > _ForwardIterator __last, std::forward_iterator_tag) > { > const size_type __n = std::distance(__first, __last); > this->_M_impl._M_start = this->_M_allocate(__n); > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; > this->_M_impl._M_finish = > std::__uninitialized_copy_a(__first, __last, > this->_M_impl._M_start, > _M_get_Tp_allocator()); > } > > > > void > _M_fill_initialize(size_type __n, const value_type& __value) > { > std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = this->_M_impl._M_end_of_storage; > } ># 1237 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { _M_fill_assign(__n, __val); } > > > template<typename _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename std::iterator_traits<_InputIterator>:: > iterator_category _IterCategory; > _M_assign_aux(__first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_assign_aux(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag); > > > > void > _M_fill_assign(size_type __n, const value_type& __val); ># 1277 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _Integer> > void > _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, > __true_type) > { _M_fill_insert(__pos, __n, __val); } > > > template<typename _InputIterator> > void > _M_insert_dispatch(iterator __pos, _InputIterator __first, > _InputIterator __last, __false_type) > { > typedef typename std::iterator_traits<_InputIterator>:: > iterator_category _IterCategory; > _M_range_insert(__pos, __first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_range_insert(iterator __pos, _InputIterator __first, > _InputIterator __last, std::input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_range_insert(iterator __pos, _ForwardIterator __first, > _ForwardIterator __last, std::forward_iterator_tag); > > > > void > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); ># 1322 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > void > _M_insert_aux(iterator __position, const value_type& __x); ># 1335 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > 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; > } ># 1389 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > }; ># 1402 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) > { return (__x.size() == __y.size() > && std::equal(__x.begin(), __x.end(), __y.begin())); } ># 1419 "/usr/include/c++/4.8.2/bits/stl_vector.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) > { return std::lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Tp, typename _Alloc> > inline bool > operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Tp, typename _Alloc> > inline void > swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) > { __x.swap(__y); } > > >} ># 65 "/usr/include/c++/4.8.2/vector" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 1 3 ># 63 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 >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; } > }; ># 136 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > struct _Bit_iterator_base > : public std::iterator<std::random_access_iterator_tag, bool> > { > _Bit_type * _M_p; > unsigned int _M_offset; > > _Bit_iterator_base(_Bit_type * __x, unsigned int __y) > : _M_p(__x), _M_offset(__y) { } > > void > _M_bump_up() > { > if (_M_offset++ == int(_S_word_bit) - 1) > { > _M_offset = 0; > ++_M_p; > } > } > > void > _M_bump_down() > { > if (_M_offset-- == 0) > { > _M_offset = int(_S_word_bit) - 1; > --_M_p; > } > } > > void > _M_incr(ptrdiff_t __i) > { > difference_type __n = __i + _M_offset; > _M_p += __n / int(_S_word_bit); > __n = __n % int(_S_word_bit); > if (__n < 0) > { > __n += int(_S_word_bit); > --_M_p; > } > _M_offset = static_cast<unsigned int>(__n); > } > > bool > operator==(const _Bit_iterator_base& __i) const > { return _M_p == __i._M_p && _M_offset == __i._M_offset; } > > bool > operator<(const _Bit_iterator_base& __i) const > { > return _M_p < __i._M_p > || (_M_p == __i._M_p && _M_offset < __i._M_offset); > } > > bool > operator!=(const _Bit_iterator_base& __i) const > { return !(*this == __i); } > > bool > operator>(const _Bit_iterator_base& __i) const > { return __i < *this; } > > bool > operator<=(const _Bit_iterator_base& __i) const > { return !(__i < *this); } > > bool > operator>=(const _Bit_iterator_base& __i) const > { return !(*this < __i); } > }; > > inline ptrdiff_t > operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) > { > return (int(_S_word_bit) * (__x._M_p - __y._M_p) > + __x._M_offset - __y._M_offset); > } > > struct _Bit_iterator : public _Bit_iterator_base > { > typedef _Bit_reference reference; > typedef _Bit_reference* pointer; > typedef _Bit_iterator iterator; > > _Bit_iterator() : _Bit_iterator_base(0, 0) { } > > _Bit_iterator(_Bit_type * __x, unsigned int __y) > : _Bit_iterator_base(__x, __y) { } > > reference > operator*() const > { return reference(_M_p, 1UL << _M_offset); } > > iterator& > operator++() > { > _M_bump_up(); > return *this; > } > > iterator > operator++(int) > { > iterator __tmp = *this; > _M_bump_up(); > return __tmp; > } > > iterator& > operator--() > { > _M_bump_down(); > return *this; > } > > iterator > operator--(int) > { > iterator __tmp = *this; > _M_bump_down(); > return __tmp; > } > > iterator& > operator+=(difference_type __i) > { > _M_incr(__i); > return *this; > } > > iterator& > operator-=(difference_type __i) > { > *this += -__i; > return *this; > } > > iterator > operator+(difference_type __i) const > { > iterator __tmp = *this; > return __tmp += __i; > } > > iterator > operator-(difference_type __i) const > { > iterator __tmp = *this; > return __tmp -= __i; > } > > reference > operator[](difference_type __i) const > { return *(*this + __i); } > }; > > inline _Bit_iterator > operator+(ptrdiff_t __n, const _Bit_iterator& __x) > { return __x + __n; } > > struct _Bit_const_iterator : public _Bit_iterator_base > { > typedef bool reference; > typedef bool const_reference; > typedef const bool* pointer; > typedef _Bit_const_iterator const_iterator; > > _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } > > _Bit_const_iterator(_Bit_type * __x, unsigned int __y) > : _Bit_iterator_base(__x, __y) { } > > _Bit_const_iterator(const _Bit_iterator& __x) > : _Bit_iterator_base(__x._M_p, __x._M_offset) { } > > const_reference > operator*() const > { return _Bit_reference(_M_p, 1UL << _M_offset); } > > const_iterator& > operator++() > { > _M_bump_up(); > return *this; > } > > const_iterator > operator++(int) > { > const_iterator __tmp = *this; > _M_bump_up(); > return __tmp; > } > > const_iterator& > operator--() > { > _M_bump_down(); > return *this; > } > > const_iterator > operator--(int) > { > const_iterator __tmp = *this; > _M_bump_down(); > return __tmp; > } > > const_iterator& > operator+=(difference_type __i) > { > _M_incr(__i); > return *this; > } > > const_iterator& > operator-=(difference_type __i) > { > *this += -__i; > return *this; > } > > const_iterator > operator+(difference_type __i) const > { > const_iterator __tmp = *this; > return __tmp += __i; > } > > const_iterator > operator-(difference_type __i) const > { > const_iterator __tmp = *this; > return __tmp -= __i; > } > > const_reference > operator[](difference_type __i) const > { return *(*this + __i); } > }; > > inline _Bit_const_iterator > operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) > { return __x + __n; } > > inline void > __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x) > { > for (; __first != __last; ++__first) > *__first = __x; > } > > inline void > fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) > { > if (__first._M_p != __last._M_p) > { > std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0); > __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x); > __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x); > } > else > __fill_bvector(__first, __last, __x); > } > > template<typename _Alloc> > struct _Bvector_base > { > typedef typename _Alloc::template rebind<_Bit_type>::other > _Bit_alloc_type; > > struct _Bvector_impl > : public _Bit_alloc_type > { > _Bit_iterator _M_start; > _Bit_iterator _M_finish; > _Bit_type* _M_end_of_storage; > > _Bvector_impl() > : _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0) > { } > > _Bvector_impl(const _Bit_alloc_type& __a) > : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0) > { } > > > > > > > > }; > > public: > typedef _Alloc allocator_type; > > _Bit_alloc_type& > _M_get_Bit_allocator() > { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); } > > const _Bit_alloc_type& > _M_get_Bit_allocator() const > { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); } > > allocator_type > get_allocator() const > { return allocator_type(_M_get_Bit_allocator()); } > > _Bvector_base() > : _M_impl() { } > > _Bvector_base(const allocator_type& __a) > : _M_impl(__a) { } ># 465 "/usr/include/c++/4.8.2/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(_S_nword(__n)); } > > 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); > } > > static size_t > _S_nword(size_t __n) > { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } > }; > > >} > > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 517 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 >template<typename _Alloc> > class vector<bool, _Alloc> : protected _Bvector_base<_Alloc> > { > typedef _Bvector_base<_Alloc> _Base; > > > > > > public: > typedef bool value_type; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Bit_reference reference; > typedef bool const_reference; > typedef _Bit_reference* pointer; > typedef const bool* const_pointer; > typedef _Bit_iterator iterator; > typedef _Bit_const_iterator const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef _Alloc allocator_type; > > allocator_type get_allocator() const > { return _Base::get_allocator(); } > > protected: > using _Base::_M_allocate; > using _Base::_M_deallocate; > using _Base::_S_nword; > using _Base::_M_get_Bit_allocator; > > public: > vector() > : _Base() { } > > explicit > vector(const allocator_type& __a) > : _Base(__a) { } ># 572 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > 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); > } ># 611 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > template<typename _InputIterator> > vector(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Base(__a) > { > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_initialize_dispatch(__first, __last, _Integral()); > } > > > ~vector() { } > > 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; > } ># 661 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > void > assign(size_type __n, const bool& __x) > { _M_fill_assign(__n, __x); } ># 672 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } ># 687 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > 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()); } ># 737 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > size_type > size() const > { return size_type(end() - begin()); } > > size_type > max_size() const > { > const size_type __isize = > __gnu_cxx::__numeric_traits<difference_type>::__max > - int(_S_word_bit) + 1; > const size_type __asize = _M_get_Bit_allocator().max_size(); > return (__asize <= __isize / int(_S_word_bit) > ? __asize * int(_S_word_bit) : __isize); > } > > size_type > capacity() const > { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0) > - begin()); } > > bool > empty() const > { return begin() == end(); } > > reference > operator[](size_type __n) > { > return *iterator(this->_M_impl._M_start._M_p > + __n / int(_S_word_bit), __n % int(_S_word_bit)); > } > > const_reference > operator[](size_type __n) const > { > return *const_iterator(this->_M_impl._M_start._M_p > + __n / int(_S_word_bit), __n % int(_S_word_bit)); > } > > protected: > void > _M_range_check(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("vector<bool>::_M_range_check")); > } > > public: > reference > at(size_type __n) > { _M_range_check(__n); return (*this)[__n]; } > > const_reference > at(size_type __n) const > { _M_range_check(__n); return (*this)[__n]; } > > void > reserve(size_type __n) > { > if (__n > max_size()) > __throw_length_error(("vector::reserve")); > if (capacity() < __n) > _M_reallocate(__n); > } > > reference > front() > { return *begin(); } > > const_reference > front() const > { return *begin(); } > > reference > back() > { return *(end() - 1); } > > const_reference > back() const > { return *(end() - 1); } > > > > > > > void > data() { } > > void > push_back(bool __x) > { > if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage) > *this->_M_impl._M_finish++ = __x; > else > _M_insert_aux(end(), __x); > } > > void > swap(vector& __x) > { > std::swap(this->_M_impl._M_start, __x._M_impl._M_start); > std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); > std::swap(this->_M_impl._M_end_of_storage, > __x._M_impl._M_end_of_storage); > > > > std::__alloc_swap<typename _Base::_Bit_alloc_type>:: > _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator()); > } > > > static void > swap(reference __x, reference __y) > { > bool __tmp = __x; > __x = __y; > __y = __tmp; > } > > iterator > insert(iterator __position, const bool& __x = bool()) > { > const difference_type __n = __position - begin(); > if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage > && __position == end()) > *this->_M_impl._M_finish++ = __x; > else > _M_insert_aux(__position, __x); > return begin() + __n; > } ># 877 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > template<typename _InputIterator> > void > insert(iterator __position, > _InputIterator __first, _InputIterator __last) > { > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } > > > 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) > { > if (__first != __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 + _S_nword(__n); > this->_M_impl._M_start = iterator(__q, 0); > this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); > } > > void > _M_reallocate(size_type __n); ># 977 "/usr/include/c++/4.8.2/bits/stl_bvector.h" 3 > template<typename _Integer> > void > _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) > { > _M_initialize(static_cast<size_type>(__n)); > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, __x ? ~0 : 0); > } > > template<typename _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { _M_initialize_range(__first, __last, > std::__iterator_category(__first)); } > > template<typename _InputIterator> > void > _M_initialize_range(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag) > { > for (; __first != __last; ++__first) > push_back(*__first); > } > > template<typename _ForwardIterator> > void > _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > const size_type __n = std::distance(__first, __last); > _M_initialize(__n); > std::copy(__first, __last, this->_M_impl._M_start); > } > > > > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { _M_fill_assign(__n, __val); } > > template<class _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } > > void > _M_fill_assign(size_t __n, bool __x) > { > if (__n > size()) > { > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, __x ? ~0 : 0); > insert(end(), __n - size(), __x); > } > else > { > _M_erase_at_end(begin() + __n); > std::fill(this->_M_impl._M_start._M_p, > this->_M_impl._M_end_of_storage, __x ? ~0 : 0); > } > } > > template<typename _InputIterator> > void > _M_assign_aux(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag) > { > iterator __cur = begin(); > for (; __first != __last && __cur != end(); ++__cur, ++__first) > *__cur = *__first; > if (__first == __last) > _M_erase_at_end(__cur); > else > insert(end(), __first, __last); > } > > template<typename _ForwardIterator> > void > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > const size_type __len = std::distance(__first, __last); > if (__len < size()) > _M_erase_at_end(std::copy(__first, __last, begin())); > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, size()); > std::copy(__first, __mid, begin()); > insert(end(), __mid, __last); > } > } > > > > > > template<typename _Integer> > void > _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, > __true_type) > { _M_fill_insert(__pos, __n, __x); } > > template<typename _InputIterator> > void > _M_insert_dispatch(iterator __pos, > _InputIterator __first, _InputIterator __last, > __false_type) > { _M_insert_range(__pos, __first, __last, > std::__iterator_category(__first)); } > > void > _M_fill_insert(iterator __position, size_type __n, bool __x); > > template<typename _InputIterator> > void > _M_insert_range(iterator __pos, _InputIterator __first, > _InputIterator __last, std::input_iterator_tag) > { > for (; __first != __last; ++__first) > { > __pos = insert(__pos, *__first); > ++__pos; > } > } > > template<typename _ForwardIterator> > void > _M_insert_range(iterator __position, _ForwardIterator __first, > _ForwardIterator __last, std::forward_iterator_tag); > > void > _M_insert_aux(iterator __position, bool __x); > > size_type > _M_check_len(size_type __n, const char* __s) const > { > if (max_size() - size() < __n) > __throw_length_error((__s)); > > const size_type __len = size() + std::max(size(), __n); > return (__len < size() || __len > max_size()) ? max_size() : __len; > } > > void > _M_erase_at_end(iterator __pos) > { this->_M_impl._M_finish = __pos; } > }; > > >} ># 66 "/usr/include/c++/4.8.2/vector" 2 3 > > > ># 1 "/usr/include/c++/4.8.2/bits/vector.tcc" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _Tp, typename _Alloc> > void > vector<_Tp, _Alloc>:: > reserve(size_type __n) > { > if (__n > this->max_size()) > __throw_length_error(("vector::reserve")); > if (this->capacity() < __n) > { > const size_type __old_size = size(); > pointer __tmp = _M_allocate_and_copy(__n, > (this->_M_impl._M_start), > (this->_M_impl._M_finish)); > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, > _M_get_Tp_allocator()); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage > - this->_M_impl._M_start); > this->_M_impl._M_start = __tmp; > this->_M_impl._M_finish = __tmp + __old_size; > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; > } > } ># 105 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > template<typename _Tp, typename _Alloc> > typename vector<_Tp, _Alloc>::iterator > vector<_Tp, _Alloc>:: > insert(iterator __position, const value_type& __x) > { > const size_type __n = __position - begin(); > if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage > && __position == end()) > { > _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, __x); > ++this->_M_impl._M_finish; > } > else > { ># 127 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > _M_insert_aux(__position, __x); > } > return iterator(this->_M_impl._M_start + __n); > } > > template<typename _Tp, typename _Alloc> > typename vector<_Tp, _Alloc>::iterator > vector<_Tp, _Alloc>:: > erase(iterator __position) > { > if (__position + 1 != end()) > std::copy(__position + 1, end(), __position); > --this->_M_impl._M_finish; > _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); > return __position; > } > > template<typename _Tp, typename _Alloc> > typename vector<_Tp, _Alloc>::iterator > vector<_Tp, _Alloc>:: > erase(iterator __first, iterator __last) > { > if (__first != __last) > { > if (__last != end()) > std::copy(__last, end(), __first); > _M_erase_at_end(__first.base() + (end() - __last)); > } > return __first; > } > > template<typename _Tp, typename _Alloc> > vector<_Tp, _Alloc>& > vector<_Tp, _Alloc>:: > operator=(const vector<_Tp, _Alloc>& __x) > { > if (&__x != this) > { ># 184 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > const size_type __xlen = __x.size(); > if (__xlen > capacity()) > { > pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), > __x.end()); > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, > _M_get_Tp_allocator()); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage > - this->_M_impl._M_start); > this->_M_impl._M_start = __tmp; > this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; > } > else if (size() >= __xlen) > { > std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), > end(), _M_get_Tp_allocator()); > } > else > { > std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), > this->_M_impl._M_start); > std::__uninitialized_copy_a(__x._M_impl._M_start + size(), > __x._M_impl._M_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > } > this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; > } > return *this; > } > > template<typename _Tp, typename _Alloc> > void > vector<_Tp, _Alloc>:: > _M_fill_assign(size_t __n, const value_type& __val) > { > if (__n > capacity()) > { > vector __tmp(__n, __val, _M_get_Tp_allocator()); > __tmp.swap(*this); > } > else if (__n > size()) > { > std::fill(begin(), end(), __val); > std::__uninitialized_fill_n_a(this->_M_impl._M_finish, > __n - size(), __val, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __n - size(); > } > else > _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); > } > > template<typename _Tp, typename _Alloc> > template<typename _InputIterator> > void > vector<_Tp, _Alloc>:: > _M_assign_aux(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag) > { > pointer __cur(this->_M_impl._M_start); > for (; __first != __last && __cur != this->_M_impl._M_finish; > ++__cur, ++__first) > *__cur = *__first; > if (__first == __last) > _M_erase_at_end(__cur); > else > insert(end(), __first, __last); > } > > template<typename _Tp, typename _Alloc> > template<typename _ForwardIterator> > void > vector<_Tp, _Alloc>:: > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > const size_type __len = std::distance(__first, __last); > > if (__len > capacity()) > { > pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, > _M_get_Tp_allocator()); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage > - this->_M_impl._M_start); > this->_M_impl._M_start = __tmp; > this->_M_impl._M_finish = this->_M_impl._M_start + __len; > this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; > } > else if (size() >= __len) > _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, size()); > std::copy(__first, __mid, this->_M_impl._M_start); > this->_M_impl._M_finish = > std::__uninitialized_copy_a(__mid, __last, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > } > } ># 316 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > template<typename _Tp, typename _Alloc> > void > vector<_Tp, _Alloc>:: > _M_insert_aux(iterator __position, const _Tp& __x) > > { > if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) > { > _Alloc_traits::construct(this->_M_impl, 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"); > const size_type __elems_before = __position - begin(); > pointer __new_start(this->_M_allocate(__len)); > pointer __new_finish(__new_start); > try > { > > > > > _Alloc_traits::construct(this->_M_impl, > __new_start + __elems_before, > > > > __x); > > __new_finish = 0; > > __new_finish > = std::__uninitialized_move_if_noexcept_a > (this->_M_impl._M_start, __position.base(), > __new_start, _M_get_Tp_allocator()); > > ++__new_finish; > > __new_finish > = std::__uninitialized_move_if_noexcept_a > (__position.base(), this->_M_impl._M_finish, > __new_finish, _M_get_Tp_allocator()); > } > catch(...) > { > if (!__new_finish) > _Alloc_traits::destroy(this->_M_impl, > __new_start + __elems_before); > else > 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; > } > } ># 439 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > template<typename _Tp, typename _Alloc> > void > vector<_Tp, _Alloc>:: > _M_fill_insert(iterator __position, size_type __n, const value_type& __x) > { > if (__n != 0) > { > if (size_type(this->_M_impl._M_end_of_storage > - this->_M_impl._M_finish) >= __n) > { > value_type __x_copy = __x; > const size_type __elems_after = end() - __position; > pointer __old_finish(this->_M_impl._M_finish); > if (__elems_after > __n) > { > std::__uninitialized_move_a(this->_M_impl._M_finish - __n, > this->_M_impl._M_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __n; > std::copy_backward(__position.base(), __old_finish - __n, __old_finish) > ; > std::fill(__position.base(), __position.base() + __n, > __x_copy); > } > else > { > std::__uninitialized_fill_n_a(this->_M_impl._M_finish, > __n - __elems_after, > __x_copy, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __n - __elems_after; > std::__uninitialized_move_a(__position.base(), __old_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __elems_after; > std::fill(__position.base(), __old_finish, __x_copy); > } > } > else > { > const size_type __len = > _M_check_len(__n, "vector::_M_fill_insert"); > const size_type __elems_before = __position - begin(); > pointer __new_start(this->_M_allocate(__len)); > pointer __new_finish(__new_start); > try > { > > std::__uninitialized_fill_n_a(__new_start + __elems_before, > __n, __x, > _M_get_Tp_allocator()); > __new_finish = 0; > > __new_finish > = std::__uninitialized_move_if_noexcept_a > (this->_M_impl._M_start, __position.base(), > __new_start, _M_get_Tp_allocator()); > > __new_finish += __n; > > __new_finish > = std::__uninitialized_move_if_noexcept_a > (__position.base(), this->_M_impl._M_finish, > __new_finish, _M_get_Tp_allocator()); > } > catch(...) > { > if (!__new_finish) > std::_Destroy(__new_start + __elems_before, > __new_start + __elems_before + __n, > _M_get_Tp_allocator()); > else > 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; > } > } > } ># 591 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > template<typename _Tp, typename _Alloc> > template<typename _InputIterator> > void > vector<_Tp, _Alloc>:: > _M_range_insert(iterator __pos, _InputIterator __first, > _InputIterator __last, std::input_iterator_tag) > { > for (; __first != __last; ++__first) > { > __pos = insert(__pos, *__first); > ++__pos; > } > } > > template<typename _Tp, typename _Alloc> > template<typename _ForwardIterator> > void > vector<_Tp, _Alloc>:: > _M_range_insert(iterator __position, _ForwardIterator __first, > _ForwardIterator __last, std::forward_iterator_tag) > { > if (__first != __last) > { > const size_type __n = std::distance(__first, __last); > if (size_type(this->_M_impl._M_end_of_storage > - this->_M_impl._M_finish) >= __n) > { > const size_type __elems_after = end() - __position; > pointer __old_finish(this->_M_impl._M_finish); > if (__elems_after > __n) > { > std::__uninitialized_move_a(this->_M_impl._M_finish - __n, > this->_M_impl._M_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __n; > std::copy_backward(__position.base(), __old_finish - __n, __old_finish) > ; > std::copy(__first, __last, __position); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, __elems_after); > std::__uninitialized_copy_a(__mid, __last, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __n - __elems_after; > std::__uninitialized_move_a(__position.base(), > __old_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish += __elems_after; > std::copy(__first, __mid, __position); > } > } > else > { > const size_type __len = > _M_check_len(__n, "vector::_M_range_insert"); > pointer __new_start(this->_M_allocate(__len)); > pointer __new_finish(__new_start); > try > { > __new_finish > = std::__uninitialized_move_if_noexcept_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_if_noexcept_a > (__position.base(), this->_M_impl._M_finish, > __new_finish, _M_get_Tp_allocator()); > } > catch(...) > { > std::_Destroy(__new_start, __new_finish, > _M_get_Tp_allocator()); > _M_deallocate(__new_start, __len); > throw; > } > std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, > _M_get_Tp_allocator()); > _M_deallocate(this->_M_impl._M_start, > this->_M_impl._M_end_of_storage > - this->_M_impl._M_start); > this->_M_impl._M_start = __new_start; > this->_M_impl._M_finish = __new_finish; > this->_M_impl._M_end_of_storage = __new_start + __len; > } > } > } > > > > template<typename _Alloc> > void > vector<bool, _Alloc>:: > _M_reallocate(size_type __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 + _S_nword(__n); > } > > template<typename _Alloc> > void > vector<bool, _Alloc>:: > _M_fill_insert(iterator __position, size_type __n, bool __x) > { > if (__n == 0) > return; > if (capacity() - size() >= __n) > { > std::copy_backward(__position, end(), > this->_M_impl._M_finish + difference_type(__n)); > std::fill(__position, __position + difference_type(__n), __x); > this->_M_impl._M_finish += difference_type(__n); > } > else > { > const size_type __len = > _M_check_len(__n, "vector<bool>::_M_fill_insert"); > _Bit_type * __q = this->_M_allocate(__len); > iterator __i = _M_copy_aligned(begin(), __position, > iterator(__q, 0)); > std::fill(__i, __i + difference_type(__n), __x); > this->_M_impl._M_finish = std::copy(__position, end(), > __i + difference_type(__n)); > this->_M_deallocate(); > this->_M_impl._M_end_of_storage = __q + _S_nword(__len); > this->_M_impl._M_start = iterator(__q, 0); > } > } > > template<typename _Alloc> > template<typename _ForwardIterator> > void > vector<bool, _Alloc>:: > _M_insert_range(iterator __position, _ForwardIterator __first, > _ForwardIterator __last, std::forward_iterator_tag) > { > if (__first != __last) > { > size_type __n = std::distance(__first, __last); > if (capacity() - size() >= __n) > { > std::copy_backward(__position, end(), > this->_M_impl._M_finish > + difference_type(__n)); > std::copy(__first, __last, __position); > this->_M_impl._M_finish += difference_type(__n); > } > else > { > const size_type __len = > _M_check_len(__n, "vector<bool>::_M_insert_range"); > _Bit_type * __q = this->_M_allocate(__len); > iterator __i = _M_copy_aligned(begin(), __position, > iterator(__q, 0)); > __i = std::copy(__first, __last, __i); > this->_M_impl._M_finish = std::copy(__position, end(), __i); > this->_M_deallocate(); > this->_M_impl._M_end_of_storage = __q + _S_nword(__len); > this->_M_impl._M_start = iterator(__q, 0); > } > } > } > > template<typename _Alloc> > void > vector<bool, _Alloc>:: > _M_insert_aux(iterator __position, bool __x) > { > if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage) > { > std::copy_backward(__position, this->_M_impl._M_finish, > this->_M_impl._M_finish + 1); > *__position = __x; > ++this->_M_impl._M_finish; > } > else > { > const size_type __len = > _M_check_len(size_type(1), "vector<bool>::_M_insert_aux"); > _Bit_type * __q = this->_M_allocate(__len); > iterator __i = _M_copy_aligned(begin(), __position, > iterator(__q, 0)); > *__i++ = __x; > this->_M_impl._M_finish = std::copy(__position, end(), __i); > this->_M_deallocate(); > this->_M_impl._M_end_of_storage = __q + _S_nword(__len); > this->_M_impl._M_start = iterator(__q, 0); > } > } ># 811 "/usr/include/c++/4.8.2/bits/vector.tcc" 3 > >} ># 70 "/usr/include/c++/4.8.2/vector" 2 3 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/my_atomic.h" 1 ># 130 "/buildbot/mariadb-10.2.31/include/my_atomic.h" ># 1 "/buildbot/mariadb-10.2.31/include/atomic/gcc_builtins.h" 1 ># 131 "/buildbot/mariadb-10.2.31/include/my_atomic.h" 2 ># 265 "/buildbot/mariadb-10.2.31/include/my_atomic.h" >static inline int my_atomic_cas32(int32 volatile *a, int32 *cmp, int32 set) { int8 ret; int32 sav; int32 cmp_val= *cmp; sav= __sync_val_compare_and_swap(a, cmp_val, set); if (!(ret= (sav == cmp_val))) *cmp= sav; return ret; } >static inline int my_atomic_cas64(int64 volatile *a, int64 *cmp, int64 set) { int8 ret; int64 sav; int64 cmp_val= *cmp; sav= __sync_val_compare_and_swap(a, cmp_val, set); if (!(ret= (sav == cmp_val))) *cmp= sav; return ret; } >static inline int my_atomic_casptr(void * volatile *a, void * *cmp, void * set) { int8 ret; void * sav; void * cmp_val= *cmp; sav= __sync_val_compare_and_swap(a, cmp_val, set); if (!(ret= (sav == cmp_val))) *cmp= sav; return ret; } > > > > > >static inline int32 my_atomic_add32( int32 volatile *a, int32 v) { v= __sync_fetch_and_add(a, v);; return v; } >static inline int64 my_atomic_add64( int64 volatile *a, int64 v) { v= __sync_fetch_and_add(a, v);; return v; } > > > > > >static inline int32 my_atomic_load32(int32 volatile *a) { int32 ret; ret= __atomic_load_n(a, 5); return ret; } >static inline int64 my_atomic_load64(int64 volatile *a) { int64 ret; ret= __atomic_load_n(a, 5); return ret; } >static inline void * my_atomic_loadptr(void * volatile *a) { void * ret; ret= __atomic_load_n(a, 5); return ret; } > > > > > >static inline int32 my_atomic_fas32( int32 volatile *a, int32 v) { v= __sync_lock_test_and_set(a, v);; return v; } >static inline int64 my_atomic_fas64( int64 volatile *a, int64 v) { v= __sync_lock_test_and_set(a, v);; return v; } >static inline void * my_atomic_fasptr( void * volatile *a, void * v) { v= __sync_lock_test_and_set(a, v);; return v; } > > > > > >static inline void my_atomic_store32( int32 volatile *a, int32 v) { __atomic_store_n(a, v, 5); } >static inline void my_atomic_store64( int64 volatile *a, int64 v) { __atomic_store_n(a, v, 5); } >static inline void my_atomic_storeptr( void * volatile *a, void * v) { __atomic_store_n(a, v, 5); } ># 360 "/buildbot/mariadb-10.2.31/include/my_atomic.h" >extern int my_atomic_initialize(); ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" 1 ># 125 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" ># 1 "/usr/include/c++/4.8.2/map" 1 3 ># 58 "/usr/include/c++/4.8.2/map" 3 ># 59 "/usr/include/c++/4.8.2/map" 3 > ># 1 "/usr/include/c++/4.8.2/bits/stl_tree.h" 1 3 ># 69 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 89 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > enum _Rb_tree_color { _S_red = false, _S_black = true }; > > struct _Rb_tree_node_base > { > typedef _Rb_tree_node_base* _Base_ptr; > typedef const _Rb_tree_node_base* _Const_Base_ptr; > > _Rb_tree_color _M_color; > _Base_ptr _M_parent; > _Base_ptr _M_left; > _Base_ptr _M_right; > > static _Base_ptr > _S_minimum(_Base_ptr __x) > { > while (__x->_M_left != 0) __x = __x->_M_left; > return __x; > } > > static _Const_Base_ptr > _S_minimum(_Const_Base_ptr __x) > { > while (__x->_M_left != 0) __x = __x->_M_left; > return __x; > } > > static _Base_ptr > _S_maximum(_Base_ptr __x) > { > while (__x->_M_right != 0) __x = __x->_M_right; > return __x; > } > > static _Const_Base_ptr > _S_maximum(_Const_Base_ptr __x) > { > while (__x->_M_right != 0) __x = __x->_M_right; > return __x; > } > }; > > template<typename _Val> > struct _Rb_tree_node : public _Rb_tree_node_base > { > typedef _Rb_tree_node<_Val>* _Link_type; > _Val _M_value_field; > > > > > > > > }; > > __attribute__ ((__pure__)) _Rb_tree_node_base* > _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); > > __attribute__ ((__pure__)) const _Rb_tree_node_base* > _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); > > __attribute__ ((__pure__)) _Rb_tree_node_base* > _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); > > __attribute__ ((__pure__)) const _Rb_tree_node_base* > _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw (); > > template<typename _Tp> > struct _Rb_tree_iterator > { > typedef _Tp value_type; > typedef _Tp& reference; > typedef _Tp* pointer; > > typedef bidirectional_iterator_tag iterator_category; > typedef ptrdiff_t difference_type; > > typedef _Rb_tree_iterator<_Tp> _Self; > typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; > typedef _Rb_tree_node<_Tp>* _Link_type; > > _Rb_tree_iterator() > : _M_node() { } > > explicit > _Rb_tree_iterator(_Link_type __x) > : _M_node(__x) { } > > reference > operator*() const > { return static_cast<_Link_type>(_M_node)->_M_value_field; } > > pointer > operator->() const > { return std::__addressof(static_cast<_Link_type> > (_M_node)->_M_value_field); } > > _Self& > operator++() > { > _M_node = _Rb_tree_increment(_M_node); > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_increment(_M_node); > return __tmp; > } > > _Self& > operator--() > { > _M_node = _Rb_tree_decrement(_M_node); > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_decrement(_M_node); > return __tmp; > } > > bool > operator==(const _Self& __x) const > { return _M_node == __x._M_node; } > > bool > operator!=(const _Self& __x) const > { return _M_node != __x._M_node; } > > _Base_ptr _M_node; > }; > > template<typename _Tp> > struct _Rb_tree_const_iterator > { > typedef _Tp value_type; > typedef const _Tp& reference; > typedef const _Tp* pointer; > > typedef _Rb_tree_iterator<_Tp> iterator; > > typedef bidirectional_iterator_tag iterator_category; > typedef ptrdiff_t difference_type; > > typedef _Rb_tree_const_iterator<_Tp> _Self; > typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; > typedef const _Rb_tree_node<_Tp>* _Link_type; > > _Rb_tree_const_iterator() > : _M_node() { } > > explicit > _Rb_tree_const_iterator(_Link_type __x) > : _M_node(__x) { } > > _Rb_tree_const_iterator(const iterator& __it) > : _M_node(__it._M_node) { } > > iterator > _M_const_cast() const > { return iterator(static_cast<typename iterator::_Link_type> > (const_cast<typename iterator::_Base_ptr>(_M_node))); } > > reference > operator*() const > { return static_cast<_Link_type>(_M_node)->_M_value_field; } > > pointer > operator->() const > { return std::__addressof(static_cast<_Link_type> > (_M_node)->_M_value_field); } > > _Self& > operator++() > { > _M_node = _Rb_tree_increment(_M_node); > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_increment(_M_node); > return __tmp; > } > > _Self& > operator--() > { > _M_node = _Rb_tree_decrement(_M_node); > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > _M_node = _Rb_tree_decrement(_M_node); > return __tmp; > } > > bool > operator==(const _Self& __x) const > { return _M_node == __x._M_node; } > > bool > operator!=(const _Self& __x) const > { return _M_node != __x._M_node; } > > _Base_ptr _M_node; > }; > > template<typename _Val> > inline bool > operator==(const _Rb_tree_iterator<_Val>& __x, > const _Rb_tree_const_iterator<_Val>& __y) > { return __x._M_node == __y._M_node; } > > template<typename _Val> > inline bool > operator!=(const _Rb_tree_iterator<_Val>& __x, > const _Rb_tree_const_iterator<_Val>& __y) > { return __x._M_node != __y._M_node; } > > void > _Rb_tree_insert_and_rebalance(const bool __insert_left, > _Rb_tree_node_base* __x, > _Rb_tree_node_base* __p, > _Rb_tree_node_base& __header) throw (); > > _Rb_tree_node_base* > _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, > _Rb_tree_node_base& __header) throw (); > > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc = allocator<_Val> > > class _Rb_tree > { > typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other > _Node_allocator; > > protected: > typedef _Rb_tree_node_base* _Base_ptr; > typedef const _Rb_tree_node_base* _Const_Base_ptr; > > public: > typedef _Key key_type; > typedef _Val value_type; > typedef value_type* pointer; > typedef const value_type* const_pointer; > typedef value_type& reference; > typedef const value_type& const_reference; > typedef _Rb_tree_node<_Val>* _Link_type; > typedef const _Rb_tree_node<_Val>* _Const_Link_type; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Alloc allocator_type; > > _Node_allocator& > _M_get_Node_allocator() > { return *static_cast<_Node_allocator*>(&this->_M_impl); } > > const _Node_allocator& > _M_get_Node_allocator() const > { return *static_cast<const _Node_allocator*>(&this->_M_impl); } > > allocator_type > get_allocator() const > { return allocator_type(_M_get_Node_allocator()); } > > protected: > _Link_type > _M_get_node() > { return _M_impl._Node_allocator::allocate(1); } > > void > _M_put_node(_Link_type __p) > { _M_impl._Node_allocator::deallocate(__p, 1); } > > > _Link_type > _M_create_node(const value_type& __x) > { > _Link_type __tmp = _M_get_node(); > try > { get_allocator().construct > (std::__addressof(__tmp->_M_value_field), __x); } > catch(...) > { > _M_put_node(__tmp); > throw; > } > return __tmp; > } > > void > _M_destroy_node(_Link_type __p) > { > get_allocator().destroy(std::__addressof(__p->_M_value_field)); > _M_put_node(__p); > } ># 426 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > _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; > } > > protected: > template<typename _Key_compare, > bool _Is_pod_comparator = __is_pod(_Key_compare)> > struct _Rb_tree_impl : public _Node_allocator > { > _Key_compare _M_key_compare; > _Rb_tree_node_base _M_header; > size_type _M_node_count; > > _Rb_tree_impl() > : _Node_allocator(), _M_key_compare(), _M_header(), > _M_node_count(0) > { _M_initialize(); } > > _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a) > : _Node_allocator(__a), _M_key_compare(__comp), _M_header(), > _M_node_count(0) > { _M_initialize(); } ># 462 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > 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 reinterpret_cast<_Link_type>(&this->_M_impl._M_header); } > > _Const_Link_type > _M_end() const > { return reinterpret_cast<_Const_Link_type>(&this->_M_impl._M_header); } > > static const_reference > _S_value(_Const_Link_type __x) > { return __x->_M_value_field; } > > static const _Key& > _S_key(_Const_Link_type __x) > { return _KeyOfValue()(_S_value(__x)); } > > static _Link_type > _S_left(_Base_ptr __x) > { return static_cast<_Link_type>(__x->_M_left); } > > static _Const_Link_type > _S_left(_Const_Base_ptr __x) > { return static_cast<_Const_Link_type>(__x->_M_left); } > > static _Link_type > _S_right(_Base_ptr __x) > { return static_cast<_Link_type>(__x->_M_right); } > > static _Const_Link_type > _S_right(_Const_Base_ptr __x) > { return static_cast<_Const_Link_type>(__x->_M_right); } > > static const_reference > _S_value(_Const_Base_ptr __x) > { return static_cast<_Const_Link_type>(__x)->_M_value_field; } > > static const _Key& > _S_key(_Const_Base_ptr __x) > { return _KeyOfValue()(_S_value(__x)); } > > static _Base_ptr > _S_minimum(_Base_ptr __x) > { return _Rb_tree_node_base::_S_minimum(__x); } > > static _Const_Base_ptr > _S_minimum(_Const_Base_ptr __x) > { return _Rb_tree_node_base::_S_minimum(__x); } > > static _Base_ptr > _S_maximum(_Base_ptr __x) > { return _Rb_tree_node_base::_S_maximum(__x); } > > static _Const_Base_ptr > _S_maximum(_Const_Base_ptr __x) > { return _Rb_tree_node_base::_S_maximum(__x); } > > public: > typedef _Rb_tree_iterator<value_type> iterator; > typedef _Rb_tree_const_iterator<value_type> const_iterator; > > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > > private: > pair<_Base_ptr, _Base_ptr> > _M_get_insert_unique_pos(const key_type& __k); > > pair<_Base_ptr, _Base_ptr> > _M_get_insert_equal_pos(const key_type& __k); > > pair<_Base_ptr, _Base_ptr> > _M_get_insert_hint_unique_pos(const_iterator __pos, > const key_type& __k); > > pair<_Base_ptr, _Base_ptr> > _M_get_insert_hint_equal_pos(const_iterator __pos, > const key_type& __k); ># 611 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > iterator > _M_insert_(_Base_ptr __x, _Base_ptr __y, > const value_type& __v); > > > > iterator > _M_insert_lower(_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, _Node_allocator(__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 _M_get_Node_allocator().max_size(); } > > void > swap(_Rb_tree& __t); ># 771 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > pair<iterator, bool> > _M_insert_unique(const value_type& __x); > > iterator > _M_insert_equal(const value_type& __x); > > iterator > _M_insert_unique_(const_iterator __position, const value_type& __x); > > iterator > _M_insert_equal_(const_iterator __position, const value_type& __x); > > > template<typename _InputIterator> > void > _M_insert_unique(_InputIterator __first, _InputIterator __last); > > template<typename _InputIterator> > void > _M_insert_equal(_InputIterator __first, _InputIterator __last); > > private: > void > _M_erase_aux(const_iterator __position); > > void > _M_erase_aux(const_iterator __first, const_iterator __last); > > public: ># 824 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > void > erase(iterator __position) > { _M_erase_aux(__position); } > > void > erase(const_iterator __position) > { _M_erase_aux(__position); } > > size_type > erase(const key_type& __x); ># 846 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > void > erase(iterator __first, iterator __last) > { _M_erase_aux(__first, __last); } > > void > erase(const_iterator __first, const_iterator __last) > { _M_erase_aux(__first, __last); } > > void > erase(const key_type* __first, const key_type* __last); > > void > clear() > { > _M_erase(_M_begin()); > _M_leftmost() = _M_end(); > _M_root() = 0; > _M_rightmost() = _M_end(); > _M_impl._M_node_count = 0; > } > > > iterator > find(const key_type& __k); > > const_iterator > find(const key_type& __k) const; > > size_type > count(const key_type& __k) const; > > iterator > lower_bound(const key_type& __k) > { return _M_lower_bound(_M_begin(), _M_end(), __k); } > > const_iterator > lower_bound(const key_type& __k) const > { return _M_lower_bound(_M_begin(), _M_end(), __k); } > > iterator > upper_bound(const key_type& __k) > { return _M_upper_bound(_M_begin(), _M_end(), __k); } > > const_iterator > upper_bound(const key_type& __k) const > { return _M_upper_bound(_M_begin(), _M_end(), __k); } > > pair<iterator, iterator> > equal_range(const key_type& __k); > > pair<const_iterator, const_iterator> > equal_range(const key_type& __k) const; > > > bool > __rb_verify() const; > }; > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { > return __x.size() == __y.size() > && std::equal(__x.begin(), __x.end(), __y.begin()); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { > return std::lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { return !(__x == __y); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { return __y < __x; } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { return !(__y < __x); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline bool > operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { return !(__x < __y); } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > inline void > swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) > { __x.swap(__y); } ># 984 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x) > { > if (this != &__x) > { > > clear(); > _M_impl._M_key_compare = __x._M_impl._M_key_compare; > if (__x._M_root() != 0) > { > _M_root() = _M_copy(__x._M_begin(), _M_end()); > _M_leftmost() = _S_minimum(_M_root()); > _M_rightmost() = _S_maximum(_M_root()); > _M_impl._M_node_count = __x._M_impl._M_node_count; > } > } > return *this; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_(_Base_ptr __x, _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, __p, > this->_M_impl._M_header); > ++_M_impl._M_node_count; > return iterator(__z); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_lower(_Base_ptr __p, const _Val& __v) > > { > bool __insert_left = (__p == _M_end() > || !_M_impl._M_key_compare(_S_key(__p), > _KeyOfValue()(__v))); > > _Link_type __z = _M_create_node((__v)); > > _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, > this->_M_impl._M_header); > ++_M_impl._M_node_count; > return iterator(__z); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_equal_lower(const _Val& __v) > > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > while (__x != 0) > { > __y = __x; > __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? > _S_left(__x) : _S_right(__x); > } > return _M_insert_lower(__y, (__v)); > } > > template<typename _Key, typename _Val, typename _KoV, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type > _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: > _M_copy(_Const_Link_type __x, _Link_type __p) > { > > _Link_type __top = _M_clone_node(__x); > __top->_M_parent = __p; > > try > { > if (__x->_M_right) > __top->_M_right = _M_copy(_S_right(__x), __top); > __p = __top; > __x = _S_left(__x); > > while (__x != 0) > { > _Link_type __y = _M_clone_node(__x); > __p->_M_left = __y; > __y->_M_parent = __p; > if (__x->_M_right) > __y->_M_right = _M_copy(_S_right(__x), __y); > __p = __y; > __x = _S_left(__x); > } > } > catch(...) > { > _M_erase(__top); > throw; > } > return __top; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_erase(_Link_type __x) > { > > while (__x != 0) > { > _M_erase(_S_right(__x)); > _Link_type __y = _S_left(__x); > _M_destroy_node(__x); > __x = __y; > } > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_lower_bound(_Link_type __x, _Link_type __y, > const _Key& __k) > { > while (__x != 0) > if (!_M_impl._M_key_compare(_S_key(__x), __k)) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > return iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::const_iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y, > const _Key& __k) const > { > while (__x != 0) > if (!_M_impl._M_key_compare(_S_key(__x), __k)) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > return const_iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_upper_bound(_Link_type __x, _Link_type __y, > const _Key& __k) > { > while (__x != 0) > if (_M_impl._M_key_compare(__k, _S_key(__x))) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > return iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::const_iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y, > const _Key& __k) const > { > while (__x != 0) > if (_M_impl._M_key_compare(__k, _S_key(__x))) > __y = __x, __x = _S_left(__x); > else > __x = _S_right(__x); > return const_iterator(__y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::iterator, > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::iterator> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > equal_range(const _Key& __k) > { > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > while (__x != 0) > { > if (_M_impl._M_key_compare(_S_key(__x), __k)) > __x = _S_right(__x); > else if (_M_impl._M_key_compare(__k, _S_key(__x))) > __y = __x, __x = _S_left(__x); > else > { > _Link_type __xu(__x), __yu(__y); > __y = __x, __x = _S_left(__x); > __xu = _S_right(__xu); > return pair<iterator, > iterator>(_M_lower_bound(__x, __y, __k), > _M_upper_bound(__xu, __yu, __k)); > } > } > return pair<iterator, iterator>(iterator(__y), > iterator(__y)); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::const_iterator, > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::const_iterator> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > equal_range(const _Key& __k) const > { > _Const_Link_type __x = _M_begin(); > _Const_Link_type __y = _M_end(); > while (__x != 0) > { > if (_M_impl._M_key_compare(_S_key(__x), __k)) > __x = _S_right(__x); > else if (_M_impl._M_key_compare(__k, _S_key(__x))) > __y = __x, __x = _S_left(__x); > else > { > _Const_Link_type __xu(__x), __yu(__y); > __y = __x, __x = _S_left(__x); > __xu = _S_right(__xu); > return pair<const_iterator, > const_iterator>(_M_lower_bound(__x, __y, __k), > _M_upper_bound(__xu, __yu, __k)); > } > } > return pair<const_iterator, const_iterator>(const_iterator(__y), > const_iterator(__y)); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t) > { > if (_M_root() == 0) > { > if (__t._M_root() != 0) > { > _M_root() = __t._M_root(); > _M_leftmost() = __t._M_leftmost(); > _M_rightmost() = __t._M_rightmost(); > _M_root()->_M_parent = _M_end(); > > __t._M_root() = 0; > __t._M_leftmost() = __t._M_end(); > __t._M_rightmost() = __t._M_end(); > } > } > else if (__t._M_root() == 0) > { > __t._M_root() = _M_root(); > __t._M_leftmost() = _M_leftmost(); > __t._M_rightmost() = _M_rightmost(); > __t._M_root()->_M_parent = __t._M_end(); > > _M_root() = 0; > _M_leftmost() = _M_end(); > _M_rightmost() = _M_end(); > } > else > { > std::swap(_M_root(),__t._M_root()); > std::swap(_M_leftmost(),__t._M_leftmost()); > std::swap(_M_rightmost(),__t._M_rightmost()); > > _M_root()->_M_parent = _M_end(); > __t._M_root()->_M_parent = __t._M_end(); > } > > std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); > std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); > > > > std::__alloc_swap<_Node_allocator>:: > _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator()); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr, > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_get_insert_unique_pos(const key_type& __k) > { > typedef pair<_Base_ptr, _Base_ptr> _Res; > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > bool __comp = true; > while (__x != 0) > { > __y = __x; > __comp = _M_impl._M_key_compare(__k, _S_key(__x)); > __x = __comp ? _S_left(__x) : _S_right(__x); > } > iterator __j = iterator(__y); > if (__comp) > { > if (__j == begin()) > return _Res(__x, __y); > else > --__j; > } > if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) > return _Res(__x, __y); > return _Res(__j._M_node, 0); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr, > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_get_insert_equal_pos(const key_type& __k) > { > typedef pair<_Base_ptr, _Base_ptr> _Res; > _Link_type __x = _M_begin(); > _Link_type __y = _M_end(); > while (__x != 0) > { > __y = __x; > __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? > _S_left(__x) : _S_right(__x); > } > return _Res(__x, __y); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::iterator, bool> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_unique(const _Val& __v) > > { > typedef pair<iterator, bool> _Res; > pair<_Base_ptr, _Base_ptr> __res > = _M_get_insert_unique_pos(_KeyOfValue()(__v)); > > if (__res.second) > return _Res(_M_insert_(__res.first, __res.second, > (__v)), > true); > > return _Res(iterator(static_cast<_Link_type>(__res.first)), false); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_equal(const _Val& __v) > > { > pair<_Base_ptr, _Base_ptr> __res > = _M_get_insert_equal_pos(_KeyOfValue()(__v)); > return _M_insert_(__res.first, __res.second, (__v)); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr, > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_get_insert_hint_unique_pos(const_iterator __position, > const key_type& __k) > { > iterator __pos = __position._M_const_cast(); > typedef pair<_Base_ptr, _Base_ptr> _Res; > > > if (__pos._M_node == _M_end()) > { > if (size() > 0 > && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) > return _Res(0, _M_rightmost()); > else > return _M_get_insert_unique_pos(__k); > } > else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node))) > { > > iterator __before = __pos; > if (__pos._M_node == _M_leftmost()) > return _Res(_M_leftmost(), _M_leftmost()); > else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) > { > if (_S_right(__before._M_node) == 0) > return _Res(0, __before._M_node); > else > return _Res(__pos._M_node, __pos._M_node); > } > else > return _M_get_insert_unique_pos(__k); > } > else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) > { > > iterator __after = __pos; > if (__pos._M_node == _M_rightmost()) > return _Res(0, _M_rightmost()); > else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) > { > if (_S_right(__pos._M_node) == 0) > return _Res(0, __pos._M_node); > else > return _Res(__after._M_node, __after._M_node); > } > else > return _M_get_insert_unique_pos(__k); > } > else > > return _Res(__pos._M_node, 0); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_unique_(const_iterator __position, const _Val& __v) > > { > pair<_Base_ptr, _Base_ptr> __res > = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); > > if (__res.second) > return _M_insert_(__res.first, __res.second, > (__v)); > return iterator(static_cast<_Link_type>(__res.first)); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > pair<typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr, > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::_Base_ptr> > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) > { > iterator __pos = __position._M_const_cast(); > typedef pair<_Base_ptr, _Base_ptr> _Res; > > > if (__pos._M_node == _M_end()) > { > if (size() > 0 > && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) > return _Res(0, _M_rightmost()); > else > return _M_get_insert_equal_pos(__k); > } > else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) > { > > iterator __before = __pos; > if (__pos._M_node == _M_leftmost()) > return _Res(_M_leftmost(), _M_leftmost()); > else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) > { > if (_S_right(__before._M_node) == 0) > return _Res(0, __before._M_node); > else > return _Res(__pos._M_node, __pos._M_node); > } > else > return _M_get_insert_equal_pos(__k); > } > else > { > > iterator __after = __pos; > if (__pos._M_node == _M_rightmost()) > return _Res(0, _M_rightmost()); > else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) > { > if (_S_right(__pos._M_node) == 0) > return _Res(0, __pos._M_node); > else > return _Res(__after._M_node, __after._M_node); > } > else > return _Res(0, 0); > } > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > > > > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > > > > _M_insert_equal_(const_iterator __position, const _Val& __v) > > { > pair<_Base_ptr, _Base_ptr> __res > = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); > > if (__res.second) > return _M_insert_(__res.first, __res.second, > (__v)); > > return _M_insert_equal_lower((__v)); > } ># 1714 "/usr/include/c++/4.8.2/bits/stl_tree.h" 3 > template<typename _Key, typename _Val, typename _KoV, > typename _Cmp, typename _Alloc> > template<class _II> > void > _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: > _M_insert_unique(_II __first, _II __last) > { > for (; __first != __last; ++__first) > _M_insert_unique_(end(), *__first); > } > > template<typename _Key, typename _Val, typename _KoV, > typename _Cmp, typename _Alloc> > template<class _II> > void > _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: > _M_insert_equal(_II __first, _II __last) > { > for (; __first != __last; ++__first) > _M_insert_equal_(end(), *__first); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_erase_aux(const_iterator __position) > { > _Link_type __y = > static_cast<_Link_type>(_Rb_tree_rebalance_for_erase > (const_cast<_Base_ptr>(__position._M_node), > this->_M_impl._M_header)); > _M_destroy_node(__y); > --_M_impl._M_node_count; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > _M_erase_aux(const_iterator __first, const_iterator __last) > { > if (__first == begin() && __last == end()) > clear(); > else > while (__first != __last) > erase(__first++); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > erase(const _Key& __x) > { > pair<iterator, iterator> __p = equal_range(__x); > const size_type __old_size = size(); > erase(__p.first, __p.second); > return __old_size - size(); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > void > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > erase(const _Key* __first, const _Key* __last) > { > while (__first != __last) > erase(*__first++); > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > find(const _Key& __k) > { > iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); > return (__j == end() > || _M_impl._M_key_compare(__k, > _S_key(__j._M_node))) ? end() : __j; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, > _Compare, _Alloc>::const_iterator > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > find(const _Key& __k) const > { > const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); > return (__j == end() > || _M_impl._M_key_compare(__k, > _S_key(__j._M_node))) ? end() : __j; > } > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type > _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: > count(const _Key& __k) const > { > pair<const_iterator, const_iterator> __p = equal_range(__k); > const size_type __n = std::distance(__p.first, __p.second); > return __n; > } > > __attribute__ ((__pure__)) unsigned int > _Rb_tree_black_count(const _Rb_tree_node_base* __node, > const _Rb_tree_node_base* __root) throw (); > > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc> > bool > _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const > { > if (_M_impl._M_node_count == 0 || begin() == end()) > return _M_impl._M_node_count == 0 && begin() == end() > && this->_M_impl._M_header._M_left == _M_end() > && this->_M_impl._M_header._M_right == _M_end(); > > unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); > for (const_iterator __it = begin(); __it != end(); ++__it) > { > _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); > _Const_Link_type __L = _S_left(__x); > _Const_Link_type __R = _S_right(__x); > > if (__x->_M_color == _S_red) > if ((__L && __L->_M_color == _S_red) > || (__R && __R->_M_color == _S_red)) > return false; > > if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) > return false; > if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) > return false; > > if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) > return false; > } > > if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) > return false; > if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) > return false; > return true; > } > > >} ># 61 "/usr/include/c++/4.8.2/map" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_map.h" 1 3 ># 66 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 94 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>, > typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > > > class map > { > public: > typedef _Key key_type; > typedef _Tp mapped_type; > typedef std::pair<const _Key, _Tp> value_type; > typedef _Compare key_compare; > typedef _Alloc allocator_type; > > private: > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > > > public: > class value_compare > : public std::binary_function<value_type, value_type, bool> > { > friend class map<_Key, _Tp, _Compare, _Alloc>; > protected: > _Compare comp; > > value_compare(_Compare __c) > : comp(__c) { } > > public: > bool operator()(const value_type& __x, const value_type& __y) const > { return comp(__x.first, __y.first); } > }; > > private: > > typedef typename _Alloc::template rebind<value_type>::other > _Pair_alloc_type; > > typedef _Rb_tree<key_type, value_type, _Select1st<value_type>, > key_compare, _Pair_alloc_type> _Rep_type; > > > _Rep_type _M_t; > > public: > > > typedef typename _Pair_alloc_type::pointer pointer; > typedef typename _Pair_alloc_type::const_pointer const_pointer; > typedef typename _Pair_alloc_type::reference reference; > typedef typename _Pair_alloc_type::const_reference const_reference; > typedef typename _Rep_type::iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > typedef typename _Rep_type::reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > > > > > > > > map() > : _M_t() { } > > > > > > > explicit > map(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Pair_alloc_type(__a)) { } ># 180 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > map(const map& __x) > : _M_t(__x._M_t) { } ># 223 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > template<typename _InputIterator> > map(_InputIterator __first, _InputIterator __last) > : _M_t() > { _M_t._M_insert_unique(__first, __last); } ># 240 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > template<typename _InputIterator> > map(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Pair_alloc_type(__a)) > { _M_t._M_insert_unique(__first, __last); } ># 263 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > map& > operator=(const map& __x) > { > _M_t = __x._M_t; > return *this; > } ># 309 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > allocator_type > get_allocator() const > { return allocator_type(_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(); } ># 428 "/usr/include/c++/4.8.2/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(); } ># 455 "/usr/include/c++/4.8.2/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; > } ># 500 "/usr/include/c++/4.8.2/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; > } ># 593 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > std::pair<iterator, bool> > insert(const value_type& __x) > { return _M_t._M_insert_unique(__x); } ># 642 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > iterator > > > > insert(iterator __position, const value_type& __x) > > { return _M_t._M_insert_unique_(__position, __x); } ># 668 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > template<typename _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t._M_insert_unique(__first, __last); } ># 709 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > void > erase(iterator __position) > { _M_t.erase(__position); } ># 725 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 761 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > void > erase(iterator __first, iterator __last) > { _M_t.erase(__first, __last); } ># 777 "/usr/include/c++/4.8.2/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()); } ># 820 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } ># 835 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } ># 847 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > size_type > count(const key_type& __x) const > { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } ># 862 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } ># 877 "/usr/include/c++/4.8.2/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); } ># 916 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > std::pair<iterator, iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } ># 935 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > std::pair<const_iterator, const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > template<typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator==(const map<_K1, _T1, _C1, _A1>&, > const map<_K1, _T1, _C1, _A1>&); > > template<typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator<(const map<_K1, _T1, _C1, _A1>&, > const map<_K1, _T1, _C1, _A1>&); > }; ># 960 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, > const map<_Key, _Tp, _Compare, _Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 977 "/usr/include/c++/4.8.2/bits/stl_map.h" 3 > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, > const map<_Key, _Tp, _Compare, _Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, > const map<_Key, _Tp, _Compare, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, > const map<_Key, _Tp, _Compare, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, > const map<_Key, _Tp, _Compare, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, > const map<_Key, _Tp, _Compare, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline void > swap(map<_Key, _Tp, _Compare, _Alloc>& __x, > map<_Key, _Tp, _Compare, _Alloc>& __y) > { __x.swap(__y); } > > >} ># 62 "/usr/include/c++/4.8.2/map" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 1 3 ># 64 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 92 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > template <typename _Key, typename _Tp, > typename _Compare = std::less<_Key>, > typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > > > class multimap > { > public: > typedef _Key key_type; > typedef _Tp mapped_type; > typedef std::pair<const _Key, _Tp> value_type; > typedef _Compare key_compare; > typedef _Alloc allocator_type; > > private: > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > > > public: > class value_compare > : public std::binary_function<value_type, value_type, bool> > { > friend class multimap<_Key, _Tp, _Compare, _Alloc>; > protected: > _Compare comp; > > value_compare(_Compare __c) > : comp(__c) { } > > public: > bool operator()(const value_type& __x, const value_type& __y) const > { return comp(__x.first, __y.first); } > }; > > private: > > typedef typename _Alloc::template rebind<value_type>::other > _Pair_alloc_type; > > typedef _Rb_tree<key_type, value_type, _Select1st<value_type>, > key_compare, _Pair_alloc_type> _Rep_type; > > _Rep_type _M_t; > > public: > > > typedef typename _Pair_alloc_type::pointer pointer; > typedef typename _Pair_alloc_type::const_pointer const_pointer; > typedef typename _Pair_alloc_type::reference reference; > typedef typename _Pair_alloc_type::const_reference const_reference; > typedef typename _Rep_type::iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > typedef typename _Rep_type::reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > > > > > > > multimap() > : _M_t() { } > > > > > > > explicit > multimap(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Pair_alloc_type(__a)) { } ># 177 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > multimap(const multimap& __x) > : _M_t(__x._M_t) { } ># 218 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > template<typename _InputIterator> > multimap(_InputIterator __first, _InputIterator __last) > : _M_t() > { _M_t._M_insert_equal(__first, __last); } ># 234 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > template<typename _InputIterator> > multimap(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Pair_alloc_type(__a)) > { _M_t._M_insert_equal(__first, __last); } ># 257 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > multimap& > operator=(const multimap& __x) > { > _M_t = __x._M_t; > return *this; > } ># 303 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > allocator_type > get_allocator() const > { return allocator_type(_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(); } ># 420 "/usr/include/c++/4.8.2/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(); } ># 500 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > iterator > insert(const value_type& __x) > { return _M_t._M_insert_equal(__x); } ># 533 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > iterator > > > > insert(iterator __position, const value_type& __x) > > { return _M_t._M_insert_equal_(__position, __x); } ># 560 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > template<typename _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t._M_insert_equal(__first, __last); } ># 614 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > void > erase(iterator __position) > { _M_t.erase(__position); } ># 630 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 670 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > void > erase(iterator __first, iterator __last) > { _M_t.erase(__first, __last); } ># 686 "/usr/include/c++/4.8.2/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()); } ># 729 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } ># 744 "/usr/include/c++/4.8.2/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); } ># 768 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } ># 783 "/usr/include/c++/4.8.2/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); } ># 820 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > std::pair<iterator, iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } ># 837 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > std::pair<const_iterator, const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > template<typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator==(const multimap<_K1, _T1, _C1, _A1>&, > const multimap<_K1, _T1, _C1, _A1>&); > > template<typename _K1, typename _T1, typename _C1, typename _A1> > friend bool > operator<(const multimap<_K1, _T1, _C1, _A1>&, > const multimap<_K1, _T1, _C1, _A1>&); > }; ># 862 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, > const multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 879 "/usr/include/c++/4.8.2/bits/stl_multimap.h" 3 > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, > const multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, > const multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, > const multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, > const multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline bool > operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, > const multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Key, typename _Tp, typename _Compare, typename _Alloc> > inline void > swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, > multimap<_Key, _Tp, _Compare, _Alloc>& __y) > { __x.swap(__y); } > > >} ># 63 "/usr/include/c++/4.8.2/map" 2 3 ># 126 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" 2 > ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 128 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" 2 ># 137 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_memory.h" 1 ># 19 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_memory.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_base.h" 1 ># 20 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_base.h" >extern "C" { ># 143 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_base.h" >} ># 20 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_memory.h" 2 > > >extern "C" { ># 42 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_memory.h" >struct PSI_thread; > > > > > > >typedef unsigned int PSI_memory_key; ># 150 "/buildbot/mariadb-10.2.31/include/mysql/psi/psi_memory.h" >} ># 138 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0proc.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0proc.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0proc.h" 2 > > ># 1 "/usr/include/sys/ipc.h" 1 3 4 ># 28 "/usr/include/sys/ipc.h" 3 4 ># 1 "/usr/include/bits/ipctypes.h" 1 3 4 ># 32 "/usr/include/bits/ipctypes.h" 3 4 >typedef int __ipc_pid_t; ># 29 "/usr/include/sys/ipc.h" 2 3 4 ># 1 "/usr/include/bits/ipc.h" 1 3 4 ># 42 "/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; > unsigned int mode; > unsigned short int __seq; > unsigned short int __pad1; > __syscall_ulong_t __glibc_reserved1; > __syscall_ulong_t __glibc_reserved2; > }; ># 30 "/usr/include/sys/ipc.h" 2 3 4 ># 51 "/usr/include/sys/ipc.h" 3 4 >extern "C" { > > >extern key_t ftok (const char *__pathname, int __proj_id) throw (); > >} ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0proc.h" 2 ># 1 "/usr/include/sys/shm.h" 1 3 4 ># 24 "/usr/include/sys/shm.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 25 "/usr/include/sys/shm.h" 2 3 4 > > > > > ># 1 "/usr/include/bits/shm.h" 1 3 4 ># 24 "/usr/include/bits/shm.h" 3 4 ># 1 "/usr/include/bits/wordsize.h" 1 3 4 ># 25 "/usr/include/bits/shm.h" 2 3 4 ># 40 "/usr/include/bits/shm.h" 3 4 >extern "C" { > > > >extern int __getpagesize (void) throw () __attribute__ ((__const__)); > > > >typedef unsigned long int shmatt_t; > > >struct shmid_ds > { > struct ipc_perm shm_perm; > size_t shm_segsz; > __time_t shm_atime; > > > > __time_t shm_dtime; > > > > __time_t shm_ctime; > > > > __pid_t shm_cpid; > __pid_t shm_lpid; > shmatt_t shm_nattch; > unsigned long int __unused4; > unsigned long int __unused5; > }; ># 86 "/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; > }; > > > >} ># 31 "/usr/include/sys/shm.h" 2 3 4 ># 44 "/usr/include/sys/shm.h" 3 4 >extern "C" { > > > > > >extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) throw (); > > >extern int shmget (key_t __key, size_t __size, int __shmflg) throw (); > > >extern void *shmat (int __shmid, const void *__shmaddr, int __shmflg) > throw (); > > >extern int shmdt (const void *__shmaddr) throw (); > >} ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0proc.h" 2 > > >typedef void* os_process_t; >typedef unsigned long int os_process_id_t; > > > >extern ulint os_total_large_mem_allocated; > > > >ulint >os_proc_get_number(void); > > > > >void* >os_mem_alloc_large( > ulint* n); > > > > >void >os_mem_free_large( > void *ptr, > ulint size); ># 140 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0thread.h" 1 ># 65 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0thread.h" >typedef pthread_t os_thread_t; >typedef pthread_t os_thread_id_t; > > >extern "C" { typedef void* (*os_thread_func_t)(void*); } ># 78 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0thread.h" >typedef void* (*os_posix_f_t) (void*); > > > > > > > >extern ulint os_thread_count; > > > > >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_func( > > os_thread_func_t func, > > void* arg, > > os_thread_id_t* thread_id); > > > > > >void >os_thread_join( > os_thread_id_t thread); > > > > >__attribute__((noreturn)) __attribute__((cold)) >void os_thread_exit(bool detach = true); > > > > >os_thread_id_t >os_thread_get_curr_id(void); > > > >void >os_thread_yield(void); > > > >void >os_thread_sleep( > > ulint tm); ># 141 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" 2 ># 149 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" >extern const size_t alloc_max_retries; ># 164 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" >extern PSI_memory_key mem_key_ahi; >extern PSI_memory_key mem_key_buf_buf_pool; >extern PSI_memory_key mem_key_dict_stats_bg_recalc_pool_t; >extern PSI_memory_key mem_key_dict_stats_index_map_t; >extern PSI_memory_key mem_key_dict_stats_n_diff_on_level; >extern PSI_memory_key mem_key_other; >extern PSI_memory_key mem_key_row_log_buf; >extern PSI_memory_key mem_key_row_merge_sort; >extern PSI_memory_key mem_key_std; >extern PSI_memory_key mem_key_trx_sys_t_rw_trx_ids; > > > >void >ut_new_boot(); ># 198 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" >struct ut_new_pfx_t { ># 227 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" > size_t m_size; > > > > > >}; > > > > >template <class T, bool oom_fatal = true> >class ut_allocator { >public: > typedef T* pointer; > typedef const T* const_pointer; > typedef T& reference; > typedef const T& const_reference; > typedef T value_type; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > > > explicit > ut_allocator(PSI_memory_key key = 0) > > > > { > } > > > template <class U> > ut_allocator( > const ut_allocator<U>& other) > > > > { > } > > > > size_type > max_size() const > { > const size_type s_max = std::numeric_limits<size_type>::max(); > > > > > return(s_max / sizeof(T)); > > } ># 296 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" > pointer > allocate( > size_type n_elements, > const_pointer hint = __null, > const char* file = __null, > bool set_to_zero = false, > bool throw_on_error = true) > { > if (n_elements == 0) { > return(__null); > } > > if (n_elements > max_size()) { > if (throw_on_error) { > throw(std::bad_alloc()); > } else { > return(__null); > } > } > > void* ptr; > size_t total_bytes = n_elements * sizeof(T); ># 327 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" > for (size_t retries = 1; ; retries++) { > > if (set_to_zero) { > ptr = calloc(1, total_bytes); > } else { > ptr = malloc(total_bytes); > } > > if (ptr != __null || retries >= alloc_max_retries) { > break; > } > > os_thread_sleep(1000000 ); > } > > if (ptr == __null) { > ib::fatal_or_error(oom_fatal) > << "Cannot allocate " << total_bytes > << " bytes of memory after " > << alloc_max_retries << " retries over " > << alloc_max_retries << " seconds. OS error: " > << strerror((*__errno_location ())) << " (" << (*__errno_location ()) << "). " > << "Check if you should increase the swap file or ulimits of your" " operating system. Note that on most 32-bit computers the process" " memory space is limited to 2 GB or 4 GB."; > if (throw_on_error) { > throw(std::bad_alloc()); > } else { > return(__null); > } > } ># 364 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" > return(reinterpret_cast<pointer>(ptr)); > > } > > > > void deallocate(pointer ptr, size_type) > { ># 383 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" > free(ptr); > > } > > > > void > construct( > pointer p, > const T& val) > { > new(p) T(val); > } > > > void > destroy( > pointer p) > { > p->~T(); > } > > > pointer > address( > reference x) const > { > return(&x); > } > > > const_pointer > address( > const_reference x) const > { > return(&x); > } > > template <class U> > struct rebind { > typedef ut_allocator<U> other; > }; ># 572 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" > pointer > allocate_large( > size_type n_elements, > ut_new_pfx_t* pfx) > { > if (n_elements == 0 || n_elements > max_size()) { > return(__null); > } > > ulint n_bytes = n_elements * sizeof(T); > > pointer ptr = reinterpret_cast<pointer>( > os_mem_alloc_large(&n_bytes)); > > > > > > > pfx->m_size = n_bytes; > > > return(ptr); > } > > > > > > > void > deallocate_large( > pointer ptr, > const ut_new_pfx_t* pfx) > { > > > > > os_mem_free_large(ptr, pfx->m_size); > } ># 710 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0new.h" >private: > > > template <class U> > void > operator=( > const ut_allocator<U>&); >}; > > > > >template <typename T> >inline >bool >operator==( > const ut_allocator<T>& lhs, > const ut_allocator<T>& rhs) >{ > return(true); >} > > >template <typename T> >inline >bool >operator!=( > const ut_allocator<T>& lhs, > const ut_allocator<T>& rhs) >{ > return(!(lhs == rhs)); >} ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" 2 > > > > > > >typedef pthread_mutex_t sys_mutex_t; > > > >enum mutex_state_t { > > MUTEX_STATE_UNLOCKED = 0, > > > MUTEX_STATE_LOCKED = 1, > > > MUTEX_STATE_WAITERS = 2 >}; ># 189 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" >enum latch_level_t { > SYNC_UNKNOWN = 0, > > SYNC_MUTEX = 1, > > RW_LOCK_SX, > RW_LOCK_X_WAIT, > RW_LOCK_S, > RW_LOCK_X, > RW_LOCK_NOT_LOCKED, > > SYNC_MONITOR_MUTEX, > > SYNC_ANY_LATCH, > > SYNC_DOUBLEWRITE, > > SYNC_BUF_FLUSH_LIST, > > SYNC_BUF_BLOCK, > SYNC_BUF_PAGE_HASH, > > SYNC_BUF_POOL, > > SYNC_POOL, > SYNC_POOL_MANAGER, > > SYNC_SEARCH_SYS, > > SYNC_WORK_QUEUE, > > SYNC_FTS_TOKENIZE, > SYNC_FTS_OPTIMIZE, > SYNC_FTS_BG_THREADS, > SYNC_FTS_CACHE_INIT, > SYNC_RECV, > SYNC_LOG_FLUSH_ORDER, > SYNC_LOG, > SYNC_LOG_WRITE, > SYNC_PAGE_CLEANER, > SYNC_PURGE_QUEUE, > SYNC_TRX_SYS_HEADER, > SYNC_REC_LOCK, > SYNC_THREADS, > SYNC_TRX, > SYNC_TRX_SYS, > SYNC_LOCK_SYS, > SYNC_LOCK_WAIT_SYS, > > SYNC_INDEX_ONLINE_LOG, > > SYNC_IBUF_BITMAP, > SYNC_IBUF_BITMAP_MUTEX, > SYNC_IBUF_TREE_NODE, > SYNC_IBUF_TREE_NODE_NEW, > SYNC_IBUF_INDEX_TREE, > > SYNC_IBUF_MUTEX, > > SYNC_FSP_PAGE, > SYNC_FSP, > SYNC_EXTERN_STORAGE, > SYNC_TRX_UNDO_PAGE, > SYNC_RSEG_HEADER, > SYNC_RSEG_HEADER_NEW, > SYNC_NOREDO_RSEG, > SYNC_REDO_RSEG, > SYNC_TRX_UNDO, > SYNC_PURGE_LATCH, > SYNC_TREE_NODE, > SYNC_TREE_NODE_FROM_HASH, > SYNC_TREE_NODE_NEW, > SYNC_IBUF_PESS_INSERT_MUTEX, > SYNC_INDEX_TREE, > > SYNC_IBUF_HEADER, > SYNC_DICT_HEADER, > SYNC_STATS_AUTO_RECALC, > SYNC_DICT_AUTOINC_MUTEX, > SYNC_DICT, > SYNC_FTS_CACHE, > > SYNC_FILE_FORMAT_TAG, > > SYNC_DICT_OPERATION, > > SYNC_TRX_I_S_LAST_READ, > > SYNC_TRX_I_S_RWLOCK, > > SYNC_RECV_WRITER, > > > > > > SYNC_LEVEL_VARYING, > > > SYNC_NO_ORDER_CHECK, > > > SYNC_LEVEL_MAX = SYNC_NO_ORDER_CHECK >}; > > > >enum latch_id_t { > LATCH_ID_NONE = 0, > LATCH_ID_AUTOINC, > LATCH_ID_BUF_BLOCK_MUTEX, > LATCH_ID_BUF_POOL, > LATCH_ID_BUF_POOL_ZIP, > LATCH_ID_CACHE_LAST_READ, > LATCH_ID_DICT_FOREIGN_ERR, > LATCH_ID_DICT_SYS, > LATCH_ID_FILE_FORMAT_MAX, > LATCH_ID_FIL_SYSTEM, > LATCH_ID_FLUSH_LIST, > LATCH_ID_FTS_BG_THREADS, > LATCH_ID_FTS_DELETE, > LATCH_ID_FTS_OPTIMIZE, > LATCH_ID_FTS_DOC_ID, > LATCH_ID_FTS_PLL_TOKENIZE, > LATCH_ID_HASH_TABLE_MUTEX, > LATCH_ID_IBUF_BITMAP, > LATCH_ID_IBUF, > LATCH_ID_IBUF_PESSIMISTIC_INSERT, > LATCH_ID_LOG_SYS, > LATCH_ID_LOG_WRITE, > LATCH_ID_LOG_FLUSH_ORDER, > LATCH_ID_LIST, > LATCH_ID_MUTEX_LIST, > LATCH_ID_PAGE_CLEANER, > LATCH_ID_PURGE_SYS_PQ, > LATCH_ID_RECALC_POOL, > LATCH_ID_RECV_SYS, > LATCH_ID_RECV_WRITER, > LATCH_ID_REDO_RSEG, > LATCH_ID_NOREDO_RSEG, > LATCH_ID_RW_LOCK_DEBUG, > LATCH_ID_RTR_SSN_MUTEX, > LATCH_ID_RTR_ACTIVE_MUTEX, > LATCH_ID_RTR_MATCH_MUTEX, > LATCH_ID_RTR_PATH_MUTEX, > LATCH_ID_RW_LOCK_LIST, > LATCH_ID_RW_LOCK_MUTEX, > LATCH_ID_SRV_INNODB_MONITOR, > LATCH_ID_SRV_MISC_TMPFILE, > LATCH_ID_SRV_MONITOR_FILE, > LATCH_ID_BUF_DBLWR, > LATCH_ID_TRX_UNDO, > LATCH_ID_TRX_POOL, > LATCH_ID_TRX_POOL_MANAGER, > LATCH_ID_TRX, > LATCH_ID_LOCK_SYS, > LATCH_ID_LOCK_SYS_WAIT, > LATCH_ID_TRX_SYS, > LATCH_ID_SRV_SYS, > LATCH_ID_SRV_SYS_TASKS, > LATCH_ID_PAGE_ZIP_STAT_PER_INDEX, > LATCH_ID_EVENT_MANAGER, > LATCH_ID_EVENT_MUTEX, > LATCH_ID_SYNC_ARRAY_MUTEX, > LATCH_ID_ZIP_PAD_MUTEX, > LATCH_ID_OS_AIO_READ_MUTEX, > LATCH_ID_OS_AIO_WRITE_MUTEX, > LATCH_ID_OS_AIO_LOG_MUTEX, > LATCH_ID_OS_AIO_IBUF_MUTEX, > LATCH_ID_OS_AIO_SYNC_MUTEX, > LATCH_ID_ROW_DROP_LIST, > LATCH_ID_INDEX_ONLINE_LOG, > LATCH_ID_WORK_QUEUE, > LATCH_ID_BTR_SEARCH, > LATCH_ID_BUF_BLOCK_LOCK, > LATCH_ID_BUF_BLOCK_DEBUG, > LATCH_ID_DICT_OPERATION, > LATCH_ID_CHECKPOINT, > LATCH_ID_FIL_SPACE, > LATCH_ID_FTS_CACHE, > LATCH_ID_FTS_CACHE_INIT, > LATCH_ID_TRX_I_S_CACHE, > LATCH_ID_TRX_PURGE, > LATCH_ID_IBUF_INDEX_TREE, > LATCH_ID_INDEX_TREE, > LATCH_ID_DICT_TABLE_STATS, > LATCH_ID_HASH_TABLE_RW_LOCK, > LATCH_ID_BUF_CHUNK_MAP_LATCH, > LATCH_ID_SYNC_DEBUG_MUTEX, > LATCH_ID_SCRUB_STAT_MUTEX, > LATCH_ID_DEFRAGMENT_MUTEX, > LATCH_ID_BTR_DEFRAGMENT_MUTEX, > LATCH_ID_MTFLUSH_THREAD_MUTEX, > LATCH_ID_MTFLUSH_MUTEX, > LATCH_ID_FIL_CRYPT_MUTEX, > LATCH_ID_FIL_CRYPT_STAT_MUTEX, > LATCH_ID_FIL_CRYPT_DATA_MUTEX, > LATCH_ID_FIL_CRYPT_THREADS_MUTEX, > LATCH_ID_TEST_MUTEX, > LATCH_ID_MAX = LATCH_ID_TEST_MUTEX >}; > > > > > > >struct OSMutex { > > > OSMutex() > > { > ; > } > > > void init() > > { > do { } while(0); > > > > > { > int ret = pthread_mutex_init(&m_mutex, __null); > do { if (__builtin_expect(!(ulint) (ret == 0), (0))) { ut_dbg_assertion_failed("ret == 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h", 416); } } while (0); > } > > > ; > } > > > ~OSMutex() { } > > > void destroy() > > { > do { } while(0); > > > > int ret; > > ret = pthread_mutex_destroy(&m_mutex); > > if (ret != 0) { > > ib::error() > << "Return value " << ret << " when calling " > << "pthread_mutex_destroy()."; > } > > ; > } > > > void exit() > > { > do { } while(0); > > > > int ret = pthread_mutex_unlock(&m_mutex); > do { if (__builtin_expect(!(ulint) (ret == 0), (0))) { ut_dbg_assertion_failed("ret == 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h", 457); } } while (0); > > } > > > void enter() > > { > do { } while(0); > > > > int ret = pthread_mutex_lock(&m_mutex); > do { if (__builtin_expect(!(ulint) (ret == 0), (0))) { ut_dbg_assertion_failed("ret == 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h", 470); } } while (0); > > } > > > bool try_lock() > > { > do { } while(0); > > > > return(pthread_mutex_trylock(&m_mutex) == 0); > > } > > > operator sys_mutex_t*() > > { > return(&m_mutex); > } > >private: > > > > > > sys_mutex_t m_mutex; >}; ># 533 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" >class LatchCounter { > >public: > > struct Count { > > > Count() > > : > m_spins(), > m_waits(), > m_calls(), > m_enabled() > { > > } > > > void reset() > > { > m_spins = 0; > m_waits = 0; > m_calls = 0; > } > > > uint32_t m_spins; > > > uint32_t m_waits; > > > uint32_t m_calls; > > > bool m_enabled; > }; > > > LatchCounter() > > : > m_active(false) > { > m_mutex.init(); > } > > > ~LatchCounter() > > { > m_mutex.destroy(); > > for (Counters::iterator it = m_counters.begin(); > it != m_counters.end(); > ++it) { > > Count* count = *it; > > ::delete count; > } > } > > > > > > void reset() > > { > m_mutex.enter(); > > Counters::iterator end = m_counters.end(); > > for (Counters::iterator it = m_counters.begin(); > it != end; > ++it) { > > (*it)->reset(); > } > > m_mutex.exit(); > } > > > Count* sum_register() > > { > m_mutex.enter(); > > Count* count; > > if (m_counters.empty()) { > count = ::new(std::nothrow) Count(); > m_counters.push_back(count); > } else { > do { if (__builtin_expect(!(ulint) (m_counters.size() == 1), (0))) { ut_dbg_assertion_failed("m_counters.size() == 1", "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h", 631); } } while (0); > count = m_counters[0]; > } > > m_mutex.exit(); > > return(count); > } > > > void single_register(Count* count) > > { > m_mutex.enter(); > > m_counters.push_back(count); > > m_mutex.exit(); > } > > > > void single_deregister(Count* count) > > { > m_mutex.enter(); > > m_counters.erase( > std::remove( > m_counters.begin(), > m_counters.end(), count), > m_counters.end()); > > m_mutex.exit(); > } > > > template <typename Callback> > void iterate(Callback& callback) const > > { > Counters::const_iterator end = m_counters.end(); > > for (Counters::const_iterator it = m_counters.begin(); > it != end; > ++it) { > > callback(*it); > } > } > > > void enable() > > { > m_mutex.enter(); > > Counters::const_iterator end = m_counters.end(); > > for (Counters::const_iterator it = m_counters.begin(); > it != end; > ++it) { > > (*it)->m_enabled = true; > } > > m_active = true; > > m_mutex.exit(); > } > > > void disable() > > { > m_mutex.enter(); > > Counters::const_iterator end = m_counters.end(); > > for (Counters::const_iterator it = m_counters.begin(); > it != end; > ++it) { > > (*it)->m_enabled = false; > } > > m_active = false; > > m_mutex.exit(); > } > > > bool is_enabled() const > > { > return(m_active); > } > >private: > > LatchCounter(const LatchCounter&); > LatchCounter& operator=(const LatchCounter&); > >private: > typedef OSMutex Mutex; > typedef std::vector<Count*> Counters; > > > Mutex m_mutex; > > > Counters m_counters; > > > bool m_active; >}; > > >template <typename Counter = LatchCounter> >class LatchMeta { > >public: > typedef Counter CounterType; > > > > > > > LatchMeta() > : > m_id(LATCH_ID_NONE), > m_name(), > m_level(SYNC_UNKNOWN), > m_level_name() > > > > { > } > > > ~LatchMeta() { } > > > > > > > > LatchMeta( > latch_id_t id, > const char* name, > latch_level_t level, > const char* level_name > > > > ) > : > m_id(id), > m_name(name), > m_level(level), > m_level_name(level_name) > > > > { > > } > > > > > bool operator<(const LatchMeta& rhs) const > { > return(get_id() < rhs.get_id()); > } > > > latch_id_t get_id() const > { > return(m_id); > } > > > const char* get_name() const > { > return(m_name); > } > > > latch_level_t get_level() const > { > return(m_level); > } > > > const char* get_level_name() const > { > return(m_level_name); > } ># 843 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" > Counter* get_counter() > { > return(&m_counter); > } > >private: > > latch_id_t m_id; > > > const char* m_name; > > > latch_level_t m_level; > > > const char* m_level_name; > > > > > > > > Counter m_counter; >}; > >typedef LatchMeta<LatchCounter> latch_meta_t; >typedef std::vector<latch_meta_t*, ut_allocator<latch_meta_t*> > LatchMetaData; > > > > >extern LatchMetaData latch_meta; > > > > >inline >latch_meta_t& >sync_latch_get_meta(latch_id_t id) >{ > do { } while(0); > do { } while(0); > > return(*latch_meta[id]); >} > > > > >inline >latch_meta_t::CounterType* >sync_latch_get_counter(latch_id_t id) >{ > latch_meta_t& meta = sync_latch_get_meta(id); > > return(meta.get_counter()); >} > > > > >inline >const char* >sync_latch_get_name(latch_id_t id) >{ > const latch_meta_t& meta = sync_latch_get_meta(id); > > return(meta.get_name()); >} > > > > >inline >latch_level_t >sync_latch_get_level(latch_id_t id) >{ > const latch_meta_t& meta = sync_latch_get_meta(id); > > return(meta.get_level()); >} ># 946 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" >std::string >sync_mutex_to_string( > latch_id_t id, > const std::string& created); > > > > >const char* >sync_latch_get_name(latch_level_t level); > > > >const char* >sync_basename(const char* filename); > > > > > >void >sync_file_created_register( > const void* ptr, > const char* filename, > uint16_t line); > > > >void >sync_file_created_deregister(const void* ptr); > > > > >std::string >sync_file_created_get(const void* ptr); ># 1201 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0types.h" >template <typename Type = ulint, bool atomic = false> >struct __attribute__((__aligned__((128)))) simple_counter >{ > > Type inc() { return add(1); } > > Type dec() { return sub(1); } > > > > > Type add(Type i) > { > do { typedef char compile_time_assert[(!atomic || sizeof(Type) == sizeof(lint)) ? 1 : -1] __attribute__((unused)); } while(0); > if (atomic) { > > > > > > return Type(my_atomic_add64((int64*) (reinterpret_cast<ulint*> (&m_counter)), (i)) > ); > > > > } else { > return m_counter += i; > } > } > > > > Type sub(Type i) > { > do { typedef char compile_time_assert[(!atomic || sizeof(Type) == sizeof(lint)) ? 1 : -1] __attribute__((unused)); } while(0); > if (atomic) { > return Type(my_atomic_add64((int64*) (&m_counter), (-lint(i)))); > } else { > return m_counter -= i; > } > } > > > operator Type() const { return m_counter; } > >private: > > Type m_counter; >}; ># 618 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 > ># 1 "/buildbot/mariadb-10.2.31/include/my_valgrind.h" 1 ># 620 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" 2 ># 670 "/buildbot/mariadb-10.2.31/storage/innobase/include/univ.i" >extern ulong srv_page_size_shift; >extern ulong srv_page_size; > >static const size_t UNIV_SECTOR_SIZE = 512; ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.h" 2 > >extern ulint data_mysql_default_charset_coll; > > > >struct dtype_t; > > >enum ib_like_t { > IB_LIKE_EXACT, > IB_LIKE_PREFIX >}; ># 229 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.h" >static inline >ulint >dtype_get_mysql_type( > > const dtype_t* type); > > > > > >ulint >dtype_get_at_most_n_mbchars( > > ulint prtype, > ulint mbminlen, > > ulint mbmaxlen, > > 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); > > >static inline >void >dtype_copy( > > dtype_t* type1, > const dtype_t* type2); > > > >static inline >ulint >dtype_get_mtype( > > const dtype_t* type); > > > >static inline >ulint >dtype_get_prtype( > > const dtype_t* type); > > > >static inline >void >dtype_get_mblen( > > ulint mtype, > ulint prtype, > ulint* mbminlen, > > ulint* mbmaxlen); > > > > >static inline >ulint >dtype_get_charset_coll( > > ulint prtype); > > > > > > >static inline >uint32_t >dtype_form_prtype(ulint old_prtype, ulint charset_coll) >{ > do { } while(0); > do { } while(0); > return(uint32_t(old_prtype + (charset_coll << 16))); >} > > > > > > >static inline >ulint >dtype_is_utf8( > > ulint prtype); > > > >static inline >ulint >dtype_get_len( > > const 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_fixed_size_low( > > ulint mtype, > ulint prtype, > ulint len, > ulint mbminlen, > > ulint mbmaxlen, > > ulint comp); > > > > >static inline >ulint >dtype_get_min_size_low( > > ulint mtype, > ulint prtype, > ulint len, > ulint mbminlen, > ulint mbmaxlen); > > > > >static inline >ulint >dtype_get_max_size_low( > > ulint mtype, > ulint len); > > > > >static inline >ulint >dtype_get_sql_null_size( > > const dtype_t* type, > ulint comp); > > > > >static inline >void >dtype_read_for_order_and_null_size( > > dtype_t* type, > const byte* buf); > > > > >static inline >void >dtype_new_store_for_order_and_null_size( > > byte* buf, > > > const dtype_t* type, > ulint prefix_len); > > > > > >static inline >void >dtype_new_read_for_order_and_null_size( > > dtype_t* type, > const byte* buf); > > > > >static inline >char* >dtype_sql_name( > > unsigned mtype, > unsigned prtype, > unsigned len, > char* name, > unsigned name_sz); > > > > >ulint >dtype_validate( > > const dtype_t* type); ># 508 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.h" >struct dtype_t{ > unsigned prtype:32; > > > > > > > unsigned mtype:8; > > > > unsigned len:16; > > > > > > > > unsigned mbminlen:3; > > unsigned mbmaxlen:3; > >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0types.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0types.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" 1 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0event.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0event.h" >struct os_event; >typedef struct os_event* os_event_t; ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0event.h" >os_event_t >os_event_create( > > const char* name); > > > > > >void >os_event_set( > > os_event_t event); > > > > >bool >os_event_is_set( > > const os_event_t event); ># 74 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0event.h" >int64_t >os_event_reset( > > os_event_t event); > > > >void >os_event_destroy( > > os_event_t& event); ># 103 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0event.h" >void >os_event_wait_low( > > os_event_t event, > int64_t reset_sig_count); ># 119 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0event.h" >ulint >os_event_wait_time_low( > > os_event_t event, > ulint time_in_usec, > > > int64_t reset_sig_count); ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0byte.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0byte.h" >static inline >ib_uint64_t >ut_ull_create( > > ulint high, > ulint low) > __attribute__((const)); > > > > >static inline >ib_uint64_t >ut_uint64_align_down( > > ib_uint64_t n, > ulint align_no); > > > > >static inline >ib_uint64_t >ut_uint64_align_up( > > ib_uint64_t n, > ulint align_no); > > > > >static inline >void* >ut_align( > > const void* ptr, > ulint align_no); > > > > >static inline >void* >ut_align_down( > > const 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 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0byte.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0byte.ic" >static inline >ib_uint64_t >ut_ull_create( > > ulint high, > ulint low) >{ > do { } while(0); > do { } while(0); > return(((ib_uint64_t) high) << 32 | low); >} > > > > >static inline >ib_uint64_t >ut_uint64_align_down( > > ib_uint64_t n, > ulint align_no) > >{ > do { } while(0); > do { } while(0); > > return(n & ~((ib_uint64_t) align_no - 1)); >} > > > > >static inline >ib_uint64_t >ut_uint64_align_up( > > ib_uint64_t n, > ulint align_no) > >{ > ib_uint64_t align_1 = (ib_uint64_t) align_no - 1; > > do { } while(0); > do { } while(0); > > return((n + align_1) & ~align_1); >} > > > > >static inline >void* >ut_align( > > const void* ptr, > ulint align_no) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > do { } while(0); > > return((void*)((((ulint) ptr) + align_no - 1) & ~(align_no - 1))); >} > > > > > >static inline >void* >ut_align_down( > > const void* ptr, > ulint align_no) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > do { } while(0); > > return((void*)(((ulint) ptr) & ~(align_no - 1))); >} > > > > > >static inline >ulint >ut_align_offset( > > const void* ptr, > ulint align_no) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > do { } while(0); > > return(((ulint) ptr) & (align_no - 1)); >} > > > > >static inline >ulint >ut_bit_get_nth( > > ulint a, > ulint n) >{ > do { } while(0); > > > > return(1 & (a >> n)); >} > > > > >static inline >ulint >ut_bit_set_nth( > > ulint a, > ulint n, > ulint val) >{ > do { } while(0); > > > > if (val) { > return(((ulint) 1 << n) | a); > } else { > return(~((ulint) 1 << n) & a); > } >} ># 116 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0byte.h" 2 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/my_sys.h" 1 ># 24 "/buildbot/mariadb-10.2.31/include/my_sys.h" >extern "C" { ># 38 "/buildbot/mariadb-10.2.31/include/my_sys.h" ># 1 "/buildbot/mariadb-10.2.31/include/m_ctype.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >enum loglevel { > ERROR_LEVEL= 0, > WARNING_LEVEL= 1, > INFORMATION_LEVEL= 2 >}; > > >extern "C" { ># 63 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >typedef const struct my_charset_handler_st MY_CHARSET_HANDLER; >typedef const struct my_collation_handler_st MY_COLLATION_HANDLER; > >typedef const struct unicase_info_st MY_UNICASE_INFO; >typedef const struct uni_ctype_st MY_UNI_CTYPE; >typedef const struct my_uni_idx_st MY_UNI_IDX; > >typedef struct unicase_info_char_st >{ > uint32 toupper; > uint32 tolower; > uint32 sort; >} MY_UNICASE_CHARACTER; > > >struct unicase_info_st >{ > ulong maxchar; > MY_UNICASE_CHARACTER **page; >}; > > >extern MY_UNICASE_INFO my_unicase_default; >extern MY_UNICASE_INFO my_unicase_turkish; >extern MY_UNICASE_INFO my_unicase_mysql500; >extern MY_UNICASE_INFO my_unicase_unicode520; ># 106 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >typedef struct my_contraction_t >{ > ulong ch[6]; > uint16 weight[(2*8+1)]; > my_bool with_context; >} MY_CONTRACTION; > > >typedef struct my_contraction_list_t >{ > size_t nitems; > MY_CONTRACTION *item; > char *flags; >} MY_CONTRACTIONS; > >my_bool my_uca_can_be_contraction_head(const MY_CONTRACTIONS *c, ulong wc); >my_bool my_uca_can_be_contraction_tail(const MY_CONTRACTIONS *c, ulong wc); >uint16 *my_uca_contraction2_weight(const MY_CONTRACTIONS *c, > ulong wc1, ulong wc2); > > > >typedef struct my_uca_level_info_st >{ > ulong maxchar; > uchar *lengths; > uint16 **weights; > MY_CONTRACTIONS contractions; > uint levelno; >} MY_UCA_WEIGHT_LEVEL; > > >typedef struct uca_info_st >{ > MY_UCA_WEIGHT_LEVEL level[2]; > > > ulong first_non_ignorable; > ulong last_non_ignorable; > ulong first_primary_ignorable; > ulong last_primary_ignorable; > ulong first_secondary_ignorable; > ulong last_secondary_ignorable; > ulong first_tertiary_ignorable; > ulong last_tertiary_ignorable; > ulong first_trailing; > ulong last_trailing; > ulong first_variable; > ulong last_variable; > >} MY_UCA_INFO; > > > >extern MY_UCA_INFO my_uca_v400; > > >struct uni_ctype_st >{ > uchar pctype; > const uchar *ctype; >}; > >extern MY_UNI_CTYPE my_uni_ctype[256]; ># 278 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >struct my_uni_idx_st >{ > uint16 from; > uint16 to; > const uchar *tab; >}; > >typedef struct >{ > uint beg; > uint end; > uint mb_len; >} my_match_t; > >enum my_lex_states >{ > MY_LEX_START, MY_LEX_CHAR, MY_LEX_IDENT, > MY_LEX_IDENT_SEP, MY_LEX_IDENT_START, > MY_LEX_REAL, MY_LEX_HEX_NUMBER, MY_LEX_BIN_NUMBER, > MY_LEX_CMP_OP, MY_LEX_LONG_CMP_OP, MY_LEX_STRING, MY_LEX_COMMENT, MY_LEX_END, > MY_LEX_OPERATOR_OR_IDENT, MY_LEX_NUMBER_IDENT, MY_LEX_INT_OR_REAL, > MY_LEX_REAL_OR_POINT, MY_LEX_BOOL, MY_LEX_EOL, MY_LEX_ESCAPE, > MY_LEX_LONG_COMMENT, MY_LEX_END_LONG_COMMENT, MY_LEX_SEMICOLON, > MY_LEX_SET_VAR, MY_LEX_USER_END, MY_LEX_HOSTNAME, MY_LEX_SKIP, > MY_LEX_USER_VARIABLE_DELIMITER, MY_LEX_SYSTEM_VAR, > MY_LEX_IDENT_OR_KEYWORD, > MY_LEX_IDENT_OR_HEX, MY_LEX_IDENT_OR_BIN, MY_LEX_IDENT_OR_NCHAR, > MY_LEX_STRING_OR_DELIMITER, MY_LEX_MINUS_OR_COMMENT, MY_LEX_PLACEHOLDER, > MY_LEX_COMMA >}; > >struct charset_info_st; > >typedef struct my_charset_loader_st >{ > char error[128]; > void *(*once_alloc)(size_t); > void *(*malloc)(size_t); > void *(*realloc)(void *, size_t); > void (*free)(void *); > void (*reporter)(enum loglevel, const char *format, ...); > int (*add_collation)(struct charset_info_st *cs); >} MY_CHARSET_LOADER; > > >extern int (*my_string_stack_guard)(int); > > >struct my_collation_handler_st >{ > my_bool (*init)(struct charset_info_st *, MY_CHARSET_LOADER *); > > int (*strnncoll)(CHARSET_INFO *, > const uchar *, size_t, const uchar *, size_t, my_bool); > int (*strnncollsp)(CHARSET_INFO *, > const uchar *, size_t, const uchar *, size_t); > size_t (*strnxfrm)(CHARSET_INFO *, > uchar *dst, size_t dstlen, uint nweights, > const uchar *src, size_t srclen, uint flags); > size_t (*strnxfrmlen)(CHARSET_INFO *, size_t); > my_bool (*like_range)(CHARSET_INFO *, > const char *s, size_t s_length, > pchar w_prefix, pchar w_one, pchar w_many, > size_t res_length, > char *min_str, char *max_str, > size_t *min_len, size_t *max_len); > int (*wildcmp)(CHARSET_INFO *, > const char *str,const char *str_end, > const char *wildstr,const char *wildend, > int escape,int w_one, int w_many); > > int (*strcasecmp)(CHARSET_INFO *, const char *, const char *); > > uint (*instr)(CHARSET_INFO *, > const char *b, size_t b_length, > const char *s, size_t s_length, > my_match_t *match, uint nmatch); > > > void (*hash_sort)(CHARSET_INFO *cs, const uchar *key, size_t len, > ulong *nr1, ulong *nr2); > my_bool (*propagate)(CHARSET_INFO *cs, const uchar *str, size_t len); >}; > >extern MY_COLLATION_HANDLER my_collation_8bit_bin_handler; >extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler; >extern MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler; >extern MY_COLLATION_HANDLER my_collation_8bit_simple_nopad_ci_handler; >extern MY_COLLATION_HANDLER my_collation_ucs2_uca_handler; > > >typedef int (*my_charset_conv_mb_wc)(CHARSET_INFO *, ulong *, > const uchar *, const uchar *); >typedef int (*my_charset_conv_wc_mb)(CHARSET_INFO *, ulong, > uchar *, uchar *); >typedef size_t (*my_charset_conv_case)(CHARSET_INFO *, > const char *, size_t, char *, size_t); ># 387 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >typedef struct >{ > const char *m_source_end_pos; > const char *m_well_formed_error_pos; >} MY_STRCOPY_STATUS; > > > > > >typedef struct >{ > const char *m_cannot_convert_error_pos; >} MY_STRCONV_STATUS; > > > >struct my_charset_handler_st >{ > my_bool (*init)(struct charset_info_st *, MY_CHARSET_LOADER *loader); > > size_t (*numchars)(CHARSET_INFO *, const char *b, const char *e); > size_t (*charpos)(CHARSET_INFO *, const char *b, const char *e, > size_t pos); > size_t (*lengthsp)(CHARSET_INFO *, const char *ptr, size_t length); > size_t (*numcells)(CHARSET_INFO *, const char *b, const char *e); > > > my_charset_conv_mb_wc mb_wc; > my_charset_conv_wc_mb wc_mb; > > > int (*ctype)(CHARSET_INFO *cs, int *ctype, > const uchar *s, const uchar *e); > > > size_t (*caseup_str)(CHARSET_INFO *, char *); > size_t (*casedn_str)(CHARSET_INFO *, char *); > > my_charset_conv_case caseup; > my_charset_conv_case casedn; > > > size_t (*snprintf)(CHARSET_INFO *, char *to, size_t n, > const char *fmt, > ...) __attribute__((format(printf, 4, 5))); > size_t (*long10_to_str)(CHARSET_INFO *, char *to, size_t n, > int radix, long int val); > size_t (*longlong10_to_str)(CHARSET_INFO *, char *to, size_t n, > int radix, longlong val); > > void (*fill)(CHARSET_INFO *, char *to, size_t len, int fill); > > > long (*strntol)(CHARSET_INFO *, const char *s, size_t l, > int base, char **e, int *err); > ulong (*strntoul)(CHARSET_INFO *, const char *s, size_t l, > int base, char **e, int *err); > longlong (*strntoll)(CHARSET_INFO *, const char *s, size_t l, > int base, char **e, int *err); > ulonglong (*strntoull)(CHARSET_INFO *, const char *s, size_t l, > int base, char **e, int *err); > double (*strntod)(CHARSET_INFO *, char *s, size_t l, char **e, > int *err); > longlong (*strtoll10)(CHARSET_INFO *cs, > const char *nptr, char **endptr, int *error); > ulonglong (*strntoull10rnd)(CHARSET_INFO *cs, > const char *str, size_t length, > int unsigned_fl, > char **endptr, int *error); > size_t (*scan)(CHARSET_INFO *, const char *b, const char *e, > int sq); ># 472 "/buildbot/mariadb-10.2.31/include/m_ctype.h" > int (*charlen)(CHARSET_INFO *cs, const uchar *str, const uchar *end); ># 497 "/buildbot/mariadb-10.2.31/include/m_ctype.h" > size_t (*well_formed_char_length)(CHARSET_INFO *cs, > const char *str, const char *end, > size_t nchars, > MY_STRCOPY_STATUS *status); ># 514 "/buildbot/mariadb-10.2.31/include/m_ctype.h" > size_t (*copy_fix)(CHARSET_INFO *, > char *dst, size_t dst_length, > const char *src, size_t src_length, > size_t nchars, MY_STRCOPY_STATUS *status); ># 531 "/buildbot/mariadb-10.2.31/include/m_ctype.h" > my_charset_conv_wc_mb native_to_mb; >}; > >extern MY_CHARSET_HANDLER my_charset_8bit_handler; >extern MY_CHARSET_HANDLER my_charset_ucs2_handler; >extern MY_CHARSET_HANDLER my_charset_utf8_handler; ># 546 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >struct charset_info_st >{ > uint number; > uint primary_number; > uint binary_number; > uint state; > const char *csname; > const char *name; > const char *comment; > const char *tailoring; > const uchar *ctype; > const uchar *to_lower; > const uchar *to_upper; > const uchar *sort_order; > MY_UCA_INFO *uca; > const uint16 *tab_to_uni; > MY_UNI_IDX *tab_from_uni; > MY_UNICASE_INFO *caseinfo; > const uchar *state_map; > const uchar *ident_map; > uint strxfrm_multiply; > uchar caseup_multiply; > uchar casedn_multiply; > uint mbminlen; > uint mbmaxlen; > ulong min_sort_char; > ulong max_sort_char; > uchar pad_char; > my_bool escape_with_backslash_is_dangerous; > uchar levels_for_order; > > MY_CHARSET_HANDLER *cset; > MY_COLLATION_HANDLER *coll; > >}; > > >extern struct charset_info_st my_charset_bin; >extern struct charset_info_st my_charset_latin1; >extern struct charset_info_st my_charset_latin1_nopad; >extern struct charset_info_st my_charset_filename; >extern struct charset_info_st my_charset_utf8_general_ci; > >extern struct charset_info_st my_charset_big5_bin; >extern struct charset_info_st my_charset_big5_chinese_ci; >extern struct charset_info_st my_charset_big5_nopad_bin; >extern struct charset_info_st my_charset_big5_chinese_nopad_ci; >extern struct charset_info_st my_charset_cp1250_czech_ci; >extern struct charset_info_st my_charset_cp932_bin; >extern struct charset_info_st my_charset_cp932_japanese_ci; >extern struct charset_info_st my_charset_cp932_nopad_bin; >extern struct charset_info_st my_charset_cp932_japanese_nopad_ci; >extern struct charset_info_st my_charset_eucjpms_bin; >extern struct charset_info_st my_charset_eucjpms_japanese_ci; >extern struct charset_info_st my_charset_eucjpms_nopad_bin; >extern struct charset_info_st my_charset_eucjpms_japanese_nopad_ci; >extern struct charset_info_st my_charset_euckr_bin; >extern struct charset_info_st my_charset_euckr_korean_ci; >extern struct charset_info_st my_charset_euckr_nopad_bin; >extern struct charset_info_st my_charset_euckr_korean_nopad_ci; >extern struct charset_info_st my_charset_gb2312_bin; >extern struct charset_info_st my_charset_gb2312_chinese_ci; >extern struct charset_info_st my_charset_gb2312_nopad_bin; >extern struct charset_info_st my_charset_gb2312_chinese_nopad_ci; >extern struct charset_info_st my_charset_gbk_bin; >extern struct charset_info_st my_charset_gbk_chinese_ci; >extern struct charset_info_st my_charset_gbk_nopad_bin; >extern struct charset_info_st my_charset_gbk_chinese_nopad_ci; >extern struct charset_info_st my_charset_latin1_bin; >extern struct charset_info_st my_charset_latin1_nopad_bin; >extern struct charset_info_st my_charset_latin1_german2_ci; >extern struct charset_info_st my_charset_latin2_czech_ci; >extern struct charset_info_st my_charset_sjis_bin; >extern struct charset_info_st my_charset_sjis_japanese_ci; >extern struct charset_info_st my_charset_sjis_nopad_bin; >extern struct charset_info_st my_charset_sjis_japanese_nopad_ci; >extern struct charset_info_st my_charset_tis620_bin; >extern struct charset_info_st my_charset_tis620_thai_ci; >extern struct charset_info_st my_charset_tis620_nopad_bin; >extern struct charset_info_st my_charset_tis620_thai_nopad_ci; >extern struct charset_info_st my_charset_ucs2_bin; >extern struct charset_info_st my_charset_ucs2_general_ci; >extern struct charset_info_st my_charset_ucs2_nopad_bin; >extern struct charset_info_st my_charset_ucs2_general_nopad_ci; >extern struct charset_info_st my_charset_ucs2_general_mysql500_ci; >extern struct charset_info_st my_charset_ucs2_unicode_ci; >extern struct charset_info_st my_charset_ucs2_unicode_nopad_ci; >extern struct charset_info_st my_charset_ucs2_general_mysql500_ci; >extern struct charset_info_st my_charset_ujis_bin; >extern struct charset_info_st my_charset_ujis_japanese_ci; >extern struct charset_info_st my_charset_ujis_nopad_bin; >extern struct charset_info_st my_charset_ujis_japanese_nopad_ci; >extern struct charset_info_st my_charset_utf16_bin; >extern struct charset_info_st my_charset_utf16_general_ci; >extern struct charset_info_st my_charset_utf16_unicode_ci; >extern struct charset_info_st my_charset_utf16_unicode_nopad_ci; >extern struct charset_info_st my_charset_utf16le_bin; >extern struct charset_info_st my_charset_utf16le_general_ci; >extern struct charset_info_st my_charset_utf16_general_nopad_ci; >extern struct charset_info_st my_charset_utf16_nopad_bin; >extern struct charset_info_st my_charset_utf16le_nopad_bin; >extern struct charset_info_st my_charset_utf16le_general_nopad_ci; >extern struct charset_info_st my_charset_utf32_bin; >extern struct charset_info_st my_charset_utf32_general_ci; >extern struct charset_info_st my_charset_utf32_unicode_ci; >extern struct charset_info_st my_charset_utf32_unicode_nopad_ci; >extern struct charset_info_st my_charset_utf32_nopad_bin; >extern struct charset_info_st my_charset_utf32_general_nopad_ci; >extern struct charset_info_st my_charset_utf8_bin; >extern struct charset_info_st my_charset_utf8_nopad_bin; >extern struct charset_info_st my_charset_utf8_general_nopad_ci; >extern struct charset_info_st my_charset_utf8_general_mysql500_ci; >extern struct charset_info_st my_charset_utf8_unicode_ci; >extern struct charset_info_st my_charset_utf8_unicode_nopad_ci; >extern struct charset_info_st my_charset_utf8mb4_bin; >extern struct charset_info_st my_charset_utf8mb4_general_ci; >extern struct charset_info_st my_charset_utf8mb4_nopad_bin; >extern struct charset_info_st my_charset_utf8mb4_general_nopad_ci; >extern struct charset_info_st my_charset_utf8mb4_unicode_ci; >extern struct charset_info_st my_charset_utf8mb4_unicode_nopad_ci; > > > > >my_bool my_cs_have_contractions(CHARSET_INFO *cs); >my_bool my_cs_can_be_contraction_head(CHARSET_INFO *cs, ulong wc); >my_bool my_cs_can_be_contraction_tail(CHARSET_INFO *cs, ulong wc); >const uint16 *my_cs_contraction2_weight(CHARSET_INFO *cs, ulong wc1, > ulong wc2); > > >extern size_t my_strnxfrm_simple(CHARSET_INFO *, > uchar *dst, size_t dstlen, uint nweights, > const uchar *src, size_t srclen, uint flags); >size_t my_strnxfrmlen_simple(CHARSET_INFO *, size_t); >extern int my_strnncoll_simple(CHARSET_INFO *, const uchar *, size_t, > const uchar *, size_t, my_bool); > >extern int my_strnncollsp_simple(CHARSET_INFO *, const uchar *, size_t, > const uchar *, size_t); > >extern void my_hash_sort_simple(CHARSET_INFO *cs, > const uchar *key, size_t len, > ulong *nr1, ulong *nr2); > >extern void my_hash_sort_simple_nopad(CHARSET_INFO *cs, > const uchar *key, size_t len, > ulong *nr1, ulong *nr2); > >extern void my_hash_sort_bin(CHARSET_INFO *cs, > const uchar *key, size_t len, ulong *nr1, > ulong *nr2); ># 708 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >extern int my_strnncollsp_padspace_bin(const uchar *str, size_t length); > >extern size_t my_lengthsp_8bit(CHARSET_INFO *cs, const char *ptr, size_t length); > >extern uint my_instr_simple(CHARSET_INFO *, > const char *b, size_t b_length, > const char *s, size_t s_length, > my_match_t *match, uint nmatch); > >size_t my_copy_8bit(CHARSET_INFO *, > char *dst, size_t dst_length, > const char *src, size_t src_length, > size_t nchars, MY_STRCOPY_STATUS *); >size_t my_copy_fix_mb(CHARSET_INFO *cs, > char *dst, size_t dst_length, > const char *src, size_t src_length, > size_t nchars, MY_STRCOPY_STATUS *); > > >extern size_t my_caseup_str_8bit(CHARSET_INFO *, char *); >extern size_t my_casedn_str_8bit(CHARSET_INFO *, char *); >extern size_t my_caseup_8bit(CHARSET_INFO *, > const char *src, size_t srclen, > char *dst, size_t dstlen); >extern size_t my_casedn_8bit(CHARSET_INFO *, > const char *src, size_t srclen, > char *dst, size_t dstlen); > >extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *); > >int my_mb_wc_8bit(CHARSET_INFO *cs,ulong *wc, const uchar *s,const uchar *e); >int my_wc_mb_8bit(CHARSET_INFO *cs,ulong wc, uchar *s, uchar *e); >int my_wc_mb_bin(CHARSET_INFO *cs,ulong wc, uchar *s, uchar *e); > >int my_mb_ctype_8bit(CHARSET_INFO *,int *, const uchar *,const uchar *); >int my_mb_ctype_mb(CHARSET_INFO *,int *, const uchar *,const uchar *); > >size_t my_scan_8bit(CHARSET_INFO *cs, const char *b, const char *e, int sq); > >size_t my_snprintf_8bit(CHARSET_INFO *, char *to, size_t n, > const char *fmt, ...) > __attribute__((format(printf, 4, 5))); > >long my_strntol_8bit(CHARSET_INFO *, const char *s, size_t l, int base, > char **e, int *err); >ulong my_strntoul_8bit(CHARSET_INFO *, const char *s, size_t l, int base, > char **e, int *err); >longlong my_strntoll_8bit(CHARSET_INFO *, const char *s, size_t l, int base, > char **e, int *err); >ulonglong my_strntoull_8bit(CHARSET_INFO *, const char *s, size_t l, int base, > char **e, int *err); >double my_strntod_8bit(CHARSET_INFO *, char *s, size_t l,char **e, > int *err); >size_t my_long10_to_str_8bit(CHARSET_INFO *, char *to, size_t l, int radix, > long int val); >size_t my_longlong10_to_str_8bit(CHARSET_INFO *, char *to, size_t l, int radix, > longlong val); > >longlong my_strtoll10_8bit(CHARSET_INFO *cs, > const char *nptr, char **endptr, int *error); >longlong my_strtoll10_ucs2(CHARSET_INFO *cs, > const char *nptr, char **endptr, int *error); > >ulonglong my_strntoull10rnd_8bit(CHARSET_INFO *cs, > const char *str, size_t length, int > unsigned_fl, char **endptr, int *error); >ulonglong my_strntoull10rnd_ucs2(CHARSET_INFO *cs, > const char *str, size_t length, > int unsigned_fl, char **endptr, int *error); > >void my_fill_8bit(CHARSET_INFO *cs, char* to, size_t l, int fill); > > >my_bool my_like_range_simple(CHARSET_INFO *cs, > const char *ptr, size_t ptr_length, > pbool escape, pbool w_one, pbool w_many, > size_t res_length, > char *min_str, char *max_str, > size_t *min_length, size_t *max_length); > > >my_bool my_like_range_mb(CHARSET_INFO *cs, > const char *ptr, size_t ptr_length, > pbool escape, pbool w_one, pbool w_many, > size_t res_length, > char *min_str, char *max_str, > size_t *min_length, size_t *max_length); > > >my_bool my_like_range_generic(CHARSET_INFO *cs, > const char *ptr, size_t ptr_length, > pbool escape, pbool w_one, pbool w_many, > size_t res_length, > char *min_str, char *max_str, > size_t *min_length, size_t *max_length); > >int my_wildcmp_8bit(CHARSET_INFO *, > const char *str,const char *str_end, > const char *wildstr,const char *wildend, > int escape, int w_one, int w_many); > >int my_wildcmp_bin(CHARSET_INFO *, > const char *str,const char *str_end, > const char *wildstr,const char *wildend, > int escape, int w_one, int w_many); > >size_t my_numchars_8bit(CHARSET_INFO *, const char *b, const char *e); >size_t my_numcells_8bit(CHARSET_INFO *, const char *b, const char *e); >size_t my_charpos_8bit(CHARSET_INFO *, const char *b, const char *e, size_t pos); >size_t my_well_formed_char_length_8bit(CHARSET_INFO *cs, > const char *b, const char *e, > size_t nchars, > MY_STRCOPY_STATUS *status); >int my_charlen_8bit(CHARSET_INFO *, const uchar *str, const uchar *end); > > > >extern size_t my_caseup_str_mb(CHARSET_INFO *, char *); >extern size_t my_casedn_str_mb(CHARSET_INFO *, char *); >extern size_t my_caseup_mb(CHARSET_INFO *, > const char *src, size_t srclen, > char *dst, size_t dstlen); >extern size_t my_casedn_mb(CHARSET_INFO *, > const char *src, size_t srclen, > char *dst, size_t dstlen); >extern size_t my_caseup_ujis(CHARSET_INFO *, > const char *src, size_t srclen, > char *dst, size_t dstlen); >extern size_t my_casedn_ujis(CHARSET_INFO *, > const char *src, size_t srclen, > char *dst, size_t dstlen); >extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *); > >int my_wildcmp_mb(CHARSET_INFO *, > const char *str,const char *str_end, > const char *wildstr,const char *wildend, > int escape, int w_one, int w_many); >size_t my_numchars_mb(CHARSET_INFO *, const char *b, const char *e); >size_t my_numcells_mb(CHARSET_INFO *, const char *b, const char *e); >size_t my_charpos_mb(CHARSET_INFO *, const char *b, const char *e, size_t pos); >uint my_instr_mb(CHARSET_INFO *, > const char *b, size_t b_length, > const char *s, size_t s_length, > my_match_t *match, uint nmatch); > >int my_wildcmp_mb_bin(CHARSET_INFO *cs, > const char *str,const char *str_end, > const char *wildstr,const char *wildend, > int escape, int w_one, int w_many); > >int my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)), > const char *s, const char *t); > >void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)), > const uchar *key, size_t len,ulong *nr1, ulong *nr2); > >void my_hash_sort_mb_nopad_bin(CHARSET_INFO *cs __attribute__((unused)), > const uchar *key, size_t len, > ulong *nr1, ulong *nr2); > >size_t my_strnxfrm_mb(CHARSET_INFO *, > uchar *dst, size_t dstlen, uint nweights, > const uchar *src, size_t srclen, uint flags); > >size_t my_strnxfrm_mb_nopad(CHARSET_INFO *, > uchar *dst, size_t dstlen, uint nweights, > const uchar *src, size_t srclen, uint flags); > >size_t my_strnxfrm_unicode(CHARSET_INFO *, > uchar *dst, size_t dstlen, uint nweights, > const uchar *src, size_t srclen, uint flags); > >size_t my_strnxfrm_unicode_nopad(CHARSET_INFO *, > uchar *dst, size_t dstlen, uint nweights, > const uchar *src, size_t srclen, uint flags); > >size_t my_strnxfrmlen_unicode(CHARSET_INFO *, size_t); > >size_t my_strnxfrm_unicode_full_bin(CHARSET_INFO *, > uchar *dst, size_t dstlen, > uint nweights, const uchar *src, > size_t srclen, uint flags); > >size_t my_strnxfrm_unicode_full_nopad_bin(CHARSET_INFO *, > uchar *dst, size_t dstlen, > uint nweights, const uchar *src, > size_t srclen, uint flags); > >size_t my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *, size_t); > >int my_wildcmp_unicode(CHARSET_INFO *cs, > const char *str, const char *str_end, > const char *wildstr, const char *wildend, > int escape, int w_one, int w_many, > MY_UNICASE_INFO *weights); > >extern my_bool my_parse_charset_xml(MY_CHARSET_LOADER *loader, > const char *buf, size_t buflen); >extern char *my_strchr(CHARSET_INFO *cs, const char *str, const char *end, > pchar c); >extern size_t my_strcspn(CHARSET_INFO *cs, const char *str, const char *end, > const char *accept); > >my_bool my_propagate_simple(CHARSET_INFO *cs, const uchar *str, size_t len); >my_bool my_propagate_complex(CHARSET_INFO *cs, const uchar *str, size_t len); > > >typedef struct >{ > size_t char_length; > uint repertoire; >} MY_STRING_METADATA; > >void my_string_metadata_get(MY_STRING_METADATA *metadata, > CHARSET_INFO *cs, const char *str, size_t len); >uint my_string_repertoire(CHARSET_INFO *cs, const char *str, ulong len); >my_bool my_charset_is_ascii_based(CHARSET_INFO *cs); >uint my_charset_repertoire(CHARSET_INFO *cs); > >uint my_strxfrm_flag_normalize(uint flags, uint nlevels); >void my_strxfrm_desc_and_reverse(uchar *str, uchar *strend, > uint flags, uint level); >size_t my_strxfrm_pad_desc_and_reverse(CHARSET_INFO *cs, > uchar *str, uchar *frmend, uchar *strend, > uint nweights, uint flags, uint level); >size_t my_strxfrm_pad_desc_and_reverse_nopad(CHARSET_INFO *cs, > uchar *str, uchar *frmend, > uchar *strend, uint nweights, > uint flags, uint level); > >const MY_CONTRACTIONS *my_charset_get_contractions(CHARSET_INFO *cs, > int level); > >extern size_t my_vsnprintf_ex(CHARSET_INFO *cs, char *to, size_t n, > const char* fmt, va_list ap); > > > > > > >uint32 my_convert(char *to, uint32 to_length, CHARSET_INFO *to_cs, > const char *from, uint32 from_length, > CHARSET_INFO *from_cs, uint *errors); > > > > > > > >uint32 my_convert_using_func(char *to, uint32 to_length, CHARSET_INFO *to_cs, > my_charset_conv_wc_mb mb_wc, > const char *from, uint32 from_length, > CHARSET_INFO *from_cs, > my_charset_conv_mb_wc wc_mb, > uint *errors); ># 988 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >size_t my_convert_fix(CHARSET_INFO *dstcs, char *dst, size_t dst_length, > CHARSET_INFO *srccs, const char *src, size_t src_length, > size_t nchars, > MY_STRCOPY_STATUS *copy_status, > MY_STRCONV_STATUS *conv_status); ># 1047 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >static inline >uint my_ismbchar(CHARSET_INFO *cs, const char *str, const char *end) >{ > int char_length= (cs->cset->charlen)(cs, (const uchar *) str, > (const uchar *) end); > return char_length > 1 ? (uint) char_length : 0U; >} ># 1067 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >static inline >int my_charlen(CHARSET_INFO *cs, const char *str, const char *end) >{ > return (cs->cset->charlen)(cs, (const uchar *) str, > (const uchar *) end); >} > > > > > >static inline >uint my_charlen_fix(CHARSET_INFO *cs, const char *str, const char *end) >{ > int char_length= my_charlen(cs, str, end); > do { } while(0); > return char_length > 0 ? (uint) char_length : (uint) 1U; >} > > > > > > > >static inline size_t >my_well_formed_length(CHARSET_INFO *cs, const char *b, const char *e, > size_t nchars, int *error) >{ > MY_STRCOPY_STATUS status; > (void) cs->cset->well_formed_char_length(cs, b, e, nchars, &status); > *error= status.m_well_formed_error_pos == __null ? 0 : 1; > return status.m_source_end_pos - b; >} ># 1120 "/buildbot/mariadb-10.2.31/include/m_ctype.h" >} ># 39 "/buildbot/mariadb-10.2.31/include/my_sys.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/include/typelib.h" 1 ># 21 "/buildbot/mariadb-10.2.31/include/typelib.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_alloc.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/my_alloc.h" >extern "C" { > > >typedef struct st_used_mem >{ > struct st_used_mem *next; > size_t left; > size_t size; >} USED_MEM; > > >typedef struct st_mem_root >{ > USED_MEM *free; > USED_MEM *used; > USED_MEM *pre_alloc; > > size_t min_malloc; > size_t block_size; > unsigned int block_num; > > > > > unsigned int first_block_usage; > > void (*error_handler)(void); >} MEM_ROOT; > > >} ># 22 "/buildbot/mariadb-10.2.31/include/typelib.h" 2 > >typedef struct st_typelib { > unsigned int count; > const char *name; > const char **type_names; > unsigned int *type_lengths; >} TYPELIB; > >extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position); >extern int find_type_with_warning(const char *x, TYPELIB *typelib, > const char *option); ># 43 "/buildbot/mariadb-10.2.31/include/typelib.h" >extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags); >extern void make_type(char *to,unsigned int nr,TYPELIB *typelib); >extern const char *get_type(TYPELIB *typelib,unsigned int nr); >extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from); > >extern TYPELIB sql_protocol_typelib; > >my_ulonglong find_set_from_flags(const TYPELIB *lib, unsigned int default_name, > my_ulonglong cur_set, my_ulonglong default_set, > const char *str, unsigned int length, > char **err_pos, unsigned int *err_len); ># 41 "/buildbot/mariadb-10.2.31/include/my_sys.h" 2 ># 166 "/buildbot/mariadb-10.2.31/include/my_sys.h" >typedef void (*MALLOC_SIZE_CB) (long long size, my_bool is_thread_specific); >extern void set_malloc_size_cb(MALLOC_SIZE_CB func); > > >extern void *my_malloc(size_t Size,myf MyFlags); >extern void *my_multi_malloc(myf MyFlags, ...); >extern void *my_multi_malloc_large(myf MyFlags, ...); >extern void *my_realloc(void *oldpoint, size_t Size, myf MyFlags); >extern void my_free(void *ptr); >extern void *my_memdup(const void *from,size_t length,myf MyFlags); >extern char *my_strdup(const char *from,myf MyFlags); >extern char *my_strndup(const char *from, size_t length, myf MyFlags); > > >extern uint my_get_large_page_size(void); >extern uchar * my_large_malloc(size_t size, myf my_flags); >extern void my_large_free(uchar *ptr); > > > > > > >void my_init_atomic_write(void); > >my_bool my_test_if_atomic_write(File handle, int pagesize); > > > >extern my_bool my_may_have_atomic_write; ># 230 "/buildbot/mariadb-10.2.31/include/my_sys.h" >extern char *home_dir; >extern char *mysql_data_home; >extern const char *my_progname; >extern const char *my_progname_short; >extern char curr_dir[]; >extern void (*error_handler_hook)(uint my_err, const char *str,myf MyFlags); >extern void (*fatal_error_handler_hook)(uint my_err, const char *str, > myf MyFlags); >extern uint my_file_limit; >extern ulonglong my_thread_stack_size; >extern int sf_leaking_memory; > >extern void (*proc_info_hook)(void *, const PSI_stage_info *, PSI_stage_info *, > const char *, const char *, const unsigned int); > > >extern my_bool my_use_large_pages; >extern uint my_large_page_size; > > > > >extern CHARSET_INFO *default_charset_info; >extern CHARSET_INFO *all_charsets[2048]; >extern struct charset_info_st compiled_charsets[]; > > >extern my_bool my_collation_is_known_id(uint id); >extern ulonglong my_collation_statistics_get_use_count(uint id); >extern const char *my_collation_get_tailoring(uint id); > > >extern ulong my_file_opened,my_stream_opened, my_tmp_file_created; >extern ulong my_file_total_opened; >extern ulong my_sync_count; >extern uint mysys_usage_id; >extern my_bool my_init_done, my_thr_key_mysys_exists; >extern my_bool my_assert_on_error; >extern myf my_global_flags; > >extern void (*my_sigtstp_cleanup)(void), > > (*my_sigtstp_restart)(void); > >extern int my_umask; >extern int my_umask_dir, > my_recived_signals, > my_safe_to_handle_signal, > my_dont_interrupt; >extern my_bool my_use_symdir; > >extern ulong my_default_record_cache_size; >extern my_bool my_disable_locking, my_disable_async_io, > my_disable_flush_key_blocks, my_disable_symlinks; >extern my_bool my_disable_sync, my_disable_copystat_in_redel; >extern char wild_many,wild_one,wild_prefix; >extern const char *charsets_dir; >extern my_bool timed_mutexes; > >enum cache_type >{ > TYPE_NOT_SET= 0, READ_CACHE, WRITE_CACHE, > SEQ_READ_APPEND , > READ_FIFO, READ_NET}; > >enum flush_type >{ > FLUSH_KEEP, > FLUSH_RELEASE, > FLUSH_IGNORE_CHANGED, > > > > > FLUSH_FORCE_WRITE, > > > > > > FLUSH_KEEP_LAZY >}; > >typedef struct st_record_cache >{ > File file; > int rc_seek,error,inited; > uint rc_length,read_length,reclength; > my_off_t rc_record_pos,end_of_file; > uchar *rc_buff,*rc_buff2,*rc_pos,*rc_end,*rc_request_pos; > > > > > enum cache_type type; >} RECORD_CACHE; > >enum file_type >{ > UNOPEN = 0, FILE_BY_OPEN, FILE_BY_CREATE, STREAM_BY_FOPEN, STREAM_BY_FDOPEN, > FILE_BY_MKSTEMP, FILE_BY_DUP >}; > >struct st_my_file_info >{ > char *name; > > > > > enum file_type type; >}; > >extern struct st_my_file_info *my_file_info; > > >typedef void (*FREE_FUNC)(void *); > >typedef struct st_dynamic_array >{ > uchar *buffer; > uint elements,max_element; > uint alloc_increment; > uint size_of_element; > myf malloc_flags; >} DYNAMIC_ARRAY; > >typedef struct st_my_tmpdir >{ > DYNAMIC_ARRAY full_list; > char **list; > uint cur, max; > mysql_mutex_t mutex; >} MY_TMPDIR; > >typedef struct st_dynamic_string >{ > char *str; > size_t length,max_length,alloc_increment; >} DYNAMIC_STRING; > >struct st_io_cache; > >typedef struct st_io_cache_share >{ > mysql_mutex_t mutex; > mysql_cond_t cond; > mysql_cond_t cond_writer; > > my_off_t pos_in_file; > > struct st_io_cache *source_cache; > uchar *buffer; > uchar *read_end; > int running_threads; > int total_threads; > int error; > > > > >} IO_CACHE_SHARE; > >typedef struct st_io_cache >{ > > my_off_t pos_in_file; > > > > > > my_off_t end_of_file; > > uchar *read_pos; > > uchar *read_end; > uchar *buffer; > > uchar *request_pos; > > > uchar *write_buffer; > > > > > > > uchar *append_read_pos; > > uchar *write_pos; > > uchar *write_end; > > > > > > mysql_mutex_t append_buffer_lock; > > > > > > > > IO_CACHE_SHARE *share; ># 447 "/buildbot/mariadb-10.2.31/include/my_sys.h" > int (*read_function)(struct st_io_cache *,uchar *,size_t); > > > > > int (*write_function)(struct st_io_cache *,const uchar *,size_t); > > > > > > enum cache_type type; > > > > > > ulong disk_writes; > char *file_name; > const char *dir; > char prefix[3]; > File file; > > struct st_io_cache *next_file_user; > > > > > > > > int seek_not_done,error; > > size_t buffer_length; > > size_t read_length; > myf myflags; > > > > > > > my_bool alloced_buffer; ># 500 "/buildbot/mariadb-10.2.31/include/my_sys.h" >} IO_CACHE; > >typedef int (*qsort2_cmp)(const void *, const void *, const void *); > >typedef void (*my_error_reporter)(enum loglevel level, const char *format, ...) > __attribute__((format(printf, 2, 3))); > >extern my_error_reporter my_charset_error_reporter; > > > >extern int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock); >extern int _my_b_get(IO_CACHE *info); >extern int _my_b_read(IO_CACHE *info,uchar *Buffer,size_t Count); >extern int _my_b_write(IO_CACHE *info,const uchar *Buffer,size_t Count); > > >static inline void my_b_clear(IO_CACHE *info) { info->buffer= 0; } >static inline int my_b_inited(IO_CACHE *info) { return ((info->buffer) ? 1 : 0); } > > >static inline int my_b_read(IO_CACHE *info, uchar *Buffer, size_t Count) >{ > if (info->read_pos + Count <= info->read_end) > { > memcpy(Buffer, info->read_pos, Count); > info->read_pos+= Count; > return 0; > } > return _my_b_read(info, Buffer, Count); >} > >static inline int my_b_write(IO_CACHE *info, const uchar *Buffer, size_t Count) >{ > if (info->write_pos + Count <= info->write_end) > { > memcpy(info->write_pos, Buffer, Count); > info->write_pos+= Count; > return 0; > } > return _my_b_write(info, Buffer, Count); >} > >static inline int my_b_get(IO_CACHE *info) >{ > if (info->read_pos != info->read_end) > { > info->read_pos++; > return info->read_pos[-1]; > } > return _my_b_get(info); >} > > >static inline void my_b_write_byte(IO_CACHE *info, uchar chr) >{ > if (info->write_pos >= info->write_end) > my_b_flush_io_cache(info, 1); > *info->write_pos++= chr; >} ># 571 "/buildbot/mariadb-10.2.31/include/my_sys.h" >static inline size_t my_b_fill(IO_CACHE *info) >{ > info->read_pos= info->read_end; > return _my_b_read(info,0,0) ? 0 : info->read_end - info->read_pos; >} > >static inline my_off_t my_b_tell(const IO_CACHE *info) >{ > if (info->type == WRITE_CACHE) { > return info->pos_in_file + (info->write_pos - info->request_pos); > > } > return info->pos_in_file + (info->read_pos - info->request_pos); >} > >static inline my_off_t my_b_write_tell(const IO_CACHE *info) >{ > return info->pos_in_file + (info->write_pos - info->write_buffer); >} > >static inline uchar* my_b_get_buffer_start(const IO_CACHE *info) >{ > return info->request_pos; >} > >static inline size_t my_b_get_bytes_in_buffer(const IO_CACHE *info) >{ > return info->read_end - info->request_pos; >} > >static inline my_off_t my_b_get_pos_in_file(const IO_CACHE *info) >{ > return info->pos_in_file; >} > >static inline size_t my_b_bytes_in_cache(const IO_CACHE *info) >{ > if (info->type == WRITE_CACHE) { > return info->write_end - info->write_pos; > } > return info->read_end - info->read_pos; >} > >int my_b_copy_to_file (IO_CACHE *cache, FILE *file, size_t count); >int my_b_copy_all_to_file(IO_CACHE *cache, FILE *file); > >my_off_t my_b_append_tell(IO_CACHE* info); >my_off_t my_b_safe_tell(IO_CACHE* info); >int my_b_pread(IO_CACHE *info, uchar *Buffer, size_t Count, my_off_t pos); > >typedef uint32 ha_checksum; > >extern int (*mysys_test_invalid_symlink)(const char *filename); ># 1 "/buildbot/mariadb-10.2.31/include/my_alloc.h" 1 ># 625 "/buildbot/mariadb-10.2.31/include/my_sys.h" 2 > > > >extern int my_copy(const char *from,const char *to,myf MyFlags); >extern int my_delete(const char *name,myf MyFlags); >extern int my_rmtree(const char *name, myf Myflags); >extern int my_getwd(char * buf,size_t size,myf MyFlags); >extern int my_setwd(const char *dir,myf MyFlags); >extern int my_lock(File fd,int op,my_off_t start, my_off_t length,myf MyFlags); >extern void *my_once_alloc(size_t Size,myf MyFlags); >extern void my_once_free(void); >extern char *my_once_strdup(const char *src,myf myflags); >extern void *my_once_memdup(const void *src, size_t len, myf myflags); >extern File my_open(const char *FileName,int Flags,myf MyFlags); >extern File my_register_filename(File fd, const char *FileName, > enum file_type type_of_file, > uint error_message_number, myf MyFlags); >extern File my_create(const char *FileName,int CreateFlags, > int AccessFlags, myf MyFlags); >extern int my_close(File Filedes,myf MyFlags); >extern int my_mkdir(const char *dir, int Flags, myf MyFlags); >extern int my_readlink(char *to, const char *filename, myf MyFlags); >extern int my_is_symlink(const char *filename); >extern int my_realpath(char *to, const char *filename, myf MyFlags); >extern File my_create_with_symlink(const char *linkname, const char *filename, > int createflags, int access_flags, > myf MyFlags); >extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags); >extern int my_symlink(const char *content, const char *linkname, myf MyFlags); >extern int my_handler_delete_with_symlink(const char *filename, myf sync_dir); > >extern size_t my_read(File Filedes,uchar *Buffer,size_t Count,myf MyFlags); >extern size_t my_pread(File Filedes,uchar *Buffer,size_t Count,my_off_t offset, > myf MyFlags); >extern int my_rename(const char *from,const char *to,myf MyFlags); >extern my_off_t my_seek(File fd,my_off_t pos,int whence,myf MyFlags); >extern my_off_t my_tell(File fd,myf MyFlags); >extern size_t my_write(File Filedes,const uchar *Buffer,size_t Count, > myf MyFlags); >extern size_t my_pwrite(File Filedes,const uchar *Buffer,size_t Count, > my_off_t offset,myf MyFlags); >extern size_t my_fread(FILE *stream,uchar *Buffer,size_t Count,myf MyFlags); >extern size_t my_fwrite(FILE *stream,const uchar *Buffer,size_t Count, > myf MyFlags); >extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags); >extern my_off_t my_ftell(FILE *stream,myf MyFlags); > > >extern void *my_memmem(const void *haystack, size_t haystacklen, > const void *needle, size_t needlelen); ># 683 "/buildbot/mariadb-10.2.31/include/my_sys.h" >struct passwd *my_check_user(const char *user, myf MyFlags); >int my_set_user(const char *user, struct passwd *user_info, myf MyFlags); > > >extern int check_if_legal_filename(const char *path); >extern int check_if_legal_tablename(const char *path); ># 703 "/buildbot/mariadb-10.2.31/include/my_sys.h" >extern void init_glob_errs(void); >extern const char** get_global_errmsgs(int nr); >extern void wait_for_free_space(const char *filename, int errors); >extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags); >extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags); >extern FILE *my_freopen(const char *path, const char *mode, FILE *stream); >extern int my_fclose(FILE *fd,myf MyFlags); >extern int my_vfprintf(FILE *stream, const char* format, va_list args); >extern const char* my_strerror(char *buf, size_t len, int nr); >extern int my_fprintf(FILE *stream, const char* format, ...); >extern File my_fileno(FILE *fd); >extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags); >extern int my_chmod(const char *name, mode_t mode, myf my_flags); >extern const char *my_basename(const char *filename); >extern void thr_set_sync_wait_callback(void (*before_sync)(void), > void (*after_sync)(void)); >extern int my_sync(File fd, myf my_flags); >extern int my_sync_dir(const char *dir_name, myf my_flags); >extern int my_sync_dir_by_file(const char *file_name, myf my_flags); >extern const char *my_get_err_msg(uint nr); >extern int my_error_register(const char** (*get_errmsgs) (int nr), > uint first, uint last); >extern my_bool my_error_unregister(uint first, uint last); >extern void my_message(uint my_err, const char *str,myf MyFlags); >extern void my_message_stderr(uint my_err, const char *str, myf MyFlags); >extern my_bool my_init(void); >extern void my_end(int infoflag); >extern int my_redel(const char *from, const char *to, time_t backup_time_stamp, > myf MyFlags); >void my_create_backup_name(char *to, const char *from, > time_t backup_time_stamp); >extern int my_copystat(const char *from, const char *to, int MyFlags); >extern char * my_filename(File fd); > > > > > > > >extern my_bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist); >extern char *my_tmpdir(MY_TMPDIR *tmpdir); >extern void free_tmpdir(MY_TMPDIR *tmpdir); > >extern void my_remember_signal(int signal_number,void (*func)(int)); >extern size_t dirname_part(char * to,const char *name, size_t *to_res_length); >extern size_t dirname_length(const char *name); > >extern int test_if_hard_path(const char *dir_name); >extern my_bool has_path(const char *name); >extern char *convert_dirname(char *to, const char *from, const char *from_end); >extern void to_unix_path(char * name); >extern char * fn_ext(const char *name); >extern char * fn_ext2(const char *name); >extern char * fn_same(char * toname,const char *name,int flag); >extern char * fn_format(char * to,const char *name,const char *dir, > const char *form, uint flag); >extern size_t strlength(const char *str); >extern void pack_dirname(char * to,const char *from); >extern size_t normalize_dirname(char * to, const char *from); >extern size_t unpack_dirname(char * to,const char *from); >extern size_t cleanup_dirname(char * to,const char *from); >extern size_t system_filename(char * to,const char *from); >extern size_t unpack_filename(char * to,const char *from); >extern char * intern_filename(char * to,const char *from); >extern int pack_filename(char * to, const char *name, size_t max_length); >extern char * my_path(char * to,const char *progname, > const char *own_pathname_part); >extern char * my_load_path(char * to, const char *path, > const char *own_path_prefix); >extern int wild_compare(const char *str,const char *wildstr, > pbool str_is_pattern); >extern my_bool array_append_string_unique(const char *str, > const char **array, size_t size); >extern void get_date(char * to,int timeflag,time_t use_time); >extern void soundex(CHARSET_INFO *, char * out_pntr, char * in_pntr, > pbool remove_garbage); >extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,File file, > size_t reclength,enum cache_type type, > pbool use_async_io); >extern int read_cache_record(RECORD_CACHE *info,uchar *to); >extern int end_record_cache(RECORD_CACHE *info); >extern int write_cache_record(RECORD_CACHE *info,my_off_t filepos, > const uchar *record,size_t length); >extern int flush_write_cache(RECORD_CACHE *info); >extern void handle_recived_signals(void); > >extern void my_set_alarm_variable(int signo); >extern my_bool radixsort_is_appliccable(uint n_items, size_t size_of_element); >extern void my_string_ptr_sort(uchar *base,uint items,size_t size); >extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements, > size_t size_of_element,uchar *buffer[]); >extern void my_qsort(void *base_ptr, size_t total_elems, size_t size, > qsort_cmp cmp); >extern void my_qsort2(void *base_ptr, size_t total_elems, size_t size, > qsort2_cmp cmp, void *cmp_argument); >extern qsort2_cmp get_ptr_compare(size_t); >void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos); >my_off_t my_get_ptr(uchar *ptr, size_t pack_length); >extern int init_io_cache(IO_CACHE *info,File file,size_t cachesize, > enum cache_type type,my_off_t seek_offset, > my_bool use_async_io, myf cache_myflags); >extern my_bool reinit_io_cache(IO_CACHE *info,enum cache_type type, > my_off_t seek_offset, my_bool use_async_io, > my_bool clear_cache); >extern void init_io_cache_share(IO_CACHE *read_cache, IO_CACHE_SHARE *cshare, > IO_CACHE *write_cache, uint num_threads); > >extern int init_slave_io_cache(IO_CACHE *master, IO_CACHE *slave); >void end_slave_io_cache(IO_CACHE *cache); >void seek_io_cache(IO_CACHE *cache, my_off_t needed_offset); > >extern void remove_io_thread(IO_CACHE *info); >extern int _my_b_async_read(IO_CACHE *info,uchar *Buffer,size_t Count); >extern int my_b_append(IO_CACHE *info,const uchar *Buffer,size_t Count); >extern int my_b_safe_write(IO_CACHE *info,const uchar *Buffer,size_t Count); > >extern int my_block_write(IO_CACHE *info, const uchar *Buffer, > size_t Count, my_off_t pos); > > > >extern int end_io_cache(IO_CACHE *info); >extern void my_b_seek(IO_CACHE *info,my_off_t pos); >extern size_t my_b_gets(IO_CACHE *info, char *to, size_t max_length); >extern my_off_t my_b_filelength(IO_CACHE *info); >extern size_t my_b_write_backtick_quote(IO_CACHE *info, const char *str, > size_t len); >extern size_t my_b_printf(IO_CACHE *info, const char* fmt, ...); >extern size_t my_b_vprintf(IO_CACHE *info, const char* fmt, va_list ap); >extern my_bool open_cached_file(IO_CACHE *cache,const char *dir, > const char *prefix, size_t cache_size, > myf cache_myflags); >extern my_bool real_open_cached_file(IO_CACHE *cache); >extern void close_cached_file(IO_CACHE *cache); >File create_temp_file(char *to, const char *dir, const char *pfx, > int mode, myf MyFlags); > > >extern my_bool init_dynamic_array2(DYNAMIC_ARRAY *array, uint element_size, > void *init_buffer, uint init_alloc, > uint alloc_increment, myf my_flags); >extern my_bool insert_dynamic(DYNAMIC_ARRAY *array, const void* element); >extern void *alloc_dynamic(DYNAMIC_ARRAY *array); >extern void *pop_dynamic(DYNAMIC_ARRAY*); >extern my_bool set_dynamic(DYNAMIC_ARRAY *array, const void *element, > uint array_index); >extern my_bool allocate_dynamic(DYNAMIC_ARRAY *array, uint max_elements); >extern void get_dynamic(DYNAMIC_ARRAY *array, void *element, uint array_index); >extern void delete_dynamic(DYNAMIC_ARRAY *array); >extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index); >extern void delete_dynamic_with_callback(DYNAMIC_ARRAY *array, FREE_FUNC f); >extern void freeze_size(DYNAMIC_ARRAY *array); >extern int get_index_dynamic(DYNAMIC_ARRAY *array, void *element); > > > > > > >extern my_bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str, > size_t init_alloc,size_t alloc_increment); >extern my_bool dynstr_append(DYNAMIC_STRING *str, const char *append); >my_bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append, > size_t length); >extern my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append, > ...); >extern my_bool dynstr_append_quoted(DYNAMIC_STRING *str, > const char *append, size_t len, > char quote); >extern my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str); >extern my_bool dynstr_realloc(DYNAMIC_STRING *str, size_t additional_size); >extern my_bool dynstr_trunc(DYNAMIC_STRING *str, size_t n); >extern void dynstr_free(DYNAMIC_STRING *str); >extern uint32 copy_and_convert_extended(char *to, uint32 to_length, > CHARSET_INFO *to_cs, > const char *from, uint32 from_length, > CHARSET_INFO *from_cs, uint *errors); >extern void dynstr_reassociate(DYNAMIC_STRING *str, char **res, size_t *length, > size_t *alloc_length); >extern uint32 copy_and_convert_extended(char *to, uint32 to_length, > CHARSET_INFO *to_cs, > const char *from, uint32 from_length, > CHARSET_INFO *from_cs, uint *errors); ># 897 "/buildbot/mariadb-10.2.31/include/my_sys.h" >extern void init_alloc_root(MEM_ROOT *mem_root, size_t block_size, > size_t pre_alloc_size, myf my_flags); >extern void *alloc_root(MEM_ROOT *mem_root, size_t Size); >extern void *multi_alloc_root(MEM_ROOT *mem_root, ...); >extern void free_root(MEM_ROOT *root, myf MyFLAGS); >extern void set_prealloc_root(MEM_ROOT *root, char *ptr); >extern void reset_root_defaults(MEM_ROOT *mem_root, size_t block_size, > size_t prealloc_size); >extern char *strdup_root(MEM_ROOT *root,const char *str); >static inline char *safe_strdup_root(MEM_ROOT *root, const char *str) >{ > return str ? strdup_root(root, str) : 0; >} >extern char *strmake_root(MEM_ROOT *root,const char *str,size_t len); >extern void *memdup_root(MEM_ROOT *root,const void *str, size_t len); >extern my_bool my_compress(uchar *, size_t *, size_t *); >extern my_bool my_uncompress(uchar *, size_t , size_t *); >extern uchar *my_compress_alloc(const uchar *packet, size_t *len, > size_t *complen); >extern void *my_az_allocator(void *dummy, unsigned int items, unsigned int size); >extern void my_az_free(void *dummy, void *address); >extern int my_compress_buffer(uchar *dest, size_t *destLen, > const uchar *source, size_t sourceLen); >extern int packfrm(const uchar *, size_t, uchar **, size_t *); >extern int unpackfrm(uchar **, size_t *, const uchar *); > >extern ha_checksum my_checksum(ha_checksum crc, const uchar *mem, > size_t count); > > > > > > >extern void my_sleep(ulong m_seconds); >extern ulong crc32(ulong crc, const uchar *buf, uint len); >extern uint my_set_max_open_files(uint files); >void my_free_open_file_info(void); > >extern my_bool my_gethwaddr(uchar *to); >extern int my_getncpus(void); > > >typedef struct {ulonglong val;} my_hrtime_t; >void my_time_init(void); >extern my_hrtime_t my_hrtime(void); >extern ulonglong my_interval_timer(void); >extern ulonglong my_getcputime(void); ># 999 "/buildbot/mariadb-10.2.31/include/my_sys.h" >int my_msync(int, void *, size_t, int); > > > > >void my_uuid_init(ulong seed1, ulong seed2); >void my_uuid(uchar *guid); >void my_uuid2str(const uchar *guid, char *s); >void my_uuid_end(void); > >const char *my_dlerror(const char *dlpath); > > >extern void my_charset_loader_init_mysys(MY_CHARSET_LOADER *loader); >extern uint get_charset_number(const char *cs_name, uint cs_flags); >extern uint get_collation_number(const char *name); >extern const char *get_charset_name(uint cs_number); > >extern CHARSET_INFO *get_charset(uint cs_number, myf flags); >extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags); >extern CHARSET_INFO *my_collation_get_by_name(MY_CHARSET_LOADER *loader, > const char *name, myf flags); >extern CHARSET_INFO *get_charset_by_csname(const char *cs_name, > uint cs_flags, myf my_flags); >extern CHARSET_INFO *my_charset_get_by_name(MY_CHARSET_LOADER *loader, > const char *name, > uint cs_flags, myf my_flags); >extern my_bool resolve_charset(const char *cs_name, > CHARSET_INFO *default_cs, > CHARSET_INFO **cs); >extern my_bool resolve_collation(const char *cl_name, > CHARSET_INFO *default_cl, > CHARSET_INFO **cl); >extern void free_charsets(void); >extern char *get_charsets_dir(char *buf); >extern my_bool my_charset_same(CHARSET_INFO *cs1, CHARSET_INFO *cs2); >extern my_bool init_compiled_charsets(myf flags); >extern void add_compiled_collation(struct charset_info_st *cs); >extern size_t escape_string_for_mysql(CHARSET_INFO *charset_info, > char *to, size_t to_length, > const char *from, size_t length); >extern char *get_tty_password(const char *opt_message); > > > > > >extern const char *my_default_csname(void); >extern size_t escape_quotes_for_mysql(CHARSET_INFO *charset_info, > char *to, size_t to_length, > const char *from, size_t length); > >extern void thd_increment_bytes_sent(void *thd, ulong length); >extern void thd_increment_bytes_received(void *thd, ulong length); >extern void thd_increment_net_big_packet_count(void *thd, ulong length); ># 1078 "/buildbot/mariadb-10.2.31/include/my_sys.h" >struct st_mysql_file; >extern struct st_mysql_file *mysql_stdin; >} ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.h" 2 > > > >extern int32 ut_rnd_current; > > >inline uint32_t ut_rnd_gen() >{ > > > > > > > const uint32_t crc32c= 0x1edc6f41; > > uint32_t rnd= __atomic_load_n((&ut_rnd_current), (0)) > ; > > if (__builtin_expect(rnd == 0, (0))) > { > rnd= static_cast<uint32_t>(my_interval_timer()); > if (!rnd) rnd= 1; > } > else > { > bool lsb= rnd & 1; > rnd>>= 1; > if (lsb) > rnd^= crc32c; > } > > __atomic_store_n((&ut_rnd_current), (rnd), (0)); > return rnd; >} > > >inline ulint ut_rnd_interval(ulint n) >{ > return n > 1 ? static_cast<ulint>(ut_rnd_gen() % n) : 0; >} > > > > > > >static inline >ulint >ut_hash_ulint( > > ulint key, > ulint table_size); > > > >static inline >ulint >ut_fold_ull( > > ib_uint64_t d) > __attribute__((const)); > > > >static inline >ulint >ut_fold_string( > > const char* str) > __attribute__((warn_unused_result)); > > > > >ulint >ut_find_prime( > > ulint n) > __attribute__((const)); > > > > > > >static inline >ulint >ut_fold_ulint_pair( > > ulint n1, > ulint n2) > __attribute__((const)); > > > >static inline >ulint >ut_fold_binary( > > const byte* str, > ulint len) > __attribute__((pure)); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.ic" 1 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.ic" >static inline >ulint >ut_hash_ulint( > > ulint key, > ulint table_size) >{ > do { } while(0); > key = key ^ 1653893711; > > return(key % table_size); >} > > > > >static inline >ulint >ut_fold_ull( > > ib_uint64_t d) >{ > return(ut_fold_ulint_pair((ulint) d & 0xFFFFFFFF, > (ulint) (d >> 32))); >} > > > > >static inline >ulint >ut_fold_string( > > const char* str) >{ > ulint fold = 0; > > do { } while(0); > > while (*str != '\0') { > fold = ut_fold_ulint_pair(fold, (ulint)(*str)); > str++; > } > > return(fold); >} > > > > > > >static inline >ulint >ut_fold_ulint_pair( > > ulint n1, > ulint n2) >{ > return(((((n1 ^ n2 ^ 1653893711) << 8) + n1) > ^ 1463735687) + n2); >} > > > > >static inline >ulint >ut_fold_binary( > > const byte* str, > ulint len) >{ > ulint fold = 0; > const byte* str_end = str + (len & 0xFFFFFFF8); > > do { } while(0); > > while (str < str_end) { > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > } > > switch (len & 0x7) { > case 7: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > > case 6: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > > case 5: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > > case 4: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > > case 3: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > > case 2: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > > case 1: > fold = ut_fold_ulint_pair(fold, (ulint)(*str++)); > } > > return(fold); >} ># 137 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rnd.h" 2 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" 1 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >enum monitor_running_status { > MONITOR_STARTED = 1, > MONITOR_STOPPED = 2 >}; > >typedef enum monitor_running_status monitor_running_t; > > >typedef int64_t mon_type_t; ># 65 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >struct monitor_value_t { > time_t mon_start_time; > time_t mon_stop_time; > time_t mon_reset_time; > mon_type_t mon_value; > mon_type_t mon_max_value; > mon_type_t mon_min_value; > mon_type_t mon_value_reset; > mon_type_t mon_max_value_start; > mon_type_t mon_min_value_start; > mon_type_t mon_start_value; > mon_type_t mon_last_value; > monitor_running_t mon_status; >}; > > > >enum monitor_type_t { > MONITOR_NONE = 0, > MONITOR_MODULE = 1, > > MONITOR_EXISTING = 2, > > MONITOR_NO_AVERAGE = 4, > > MONITOR_DISPLAY_CURRENT = 8, > > > > MONITOR_GROUP_MODULE = 16, > > MONITOR_DEFAULT_ON = 32, > > MONITOR_SET_OWNER = 64, > > MONITOR_SET_MEMBER = 128, > MONITOR_HIDDEN = 256 > >}; ># 129 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >enum monitor_id_t { > > > MONITOR_DEFAULT_START = 0, > > > MONITOR_MODULE_METADATA, > MONITOR_TABLE_OPEN, > MONITOR_TABLE_CLOSE, > MONITOR_TABLE_REFERENCE, > > > MONITOR_MODULE_LOCK, > MONITOR_DEADLOCK, > MONITOR_TIMEOUT, > MONITOR_LOCKREC_WAIT, > MONITOR_TABLELOCK_WAIT, > MONITOR_NUM_RECLOCK_REQ, > MONITOR_RECLOCK_CREATED, > MONITOR_RECLOCK_REMOVED, > MONITOR_NUM_RECLOCK, > MONITOR_TABLELOCK_CREATED, > MONITOR_TABLELOCK_REMOVED, > MONITOR_NUM_TABLELOCK, > MONITOR_OVLD_ROW_LOCK_CURRENT_WAIT, > MONITOR_OVLD_LOCK_WAIT_TIME, > MONITOR_OVLD_LOCK_MAX_WAIT_TIME, > MONITOR_OVLD_ROW_LOCK_WAIT, > MONITOR_OVLD_LOCK_AVG_WAIT_TIME, > > > MONITOR_MODULE_BUFFER, > MONITOR_OVLD_BUFFER_POOL_SIZE, > MONITOR_OVLD_BUF_POOL_READS, > MONITOR_OVLD_BUF_POOL_READ_REQUESTS, > MONITOR_OVLD_BUF_POOL_WRITE_REQUEST, > MONITOR_OVLD_BUF_POOL_WAIT_FREE, > MONITOR_OVLD_BUF_POOL_READ_AHEAD, > MONITOR_OVLD_BUF_POOL_READ_AHEAD_EVICTED, > MONITOR_OVLD_BUF_POOL_PAGE_TOTAL, > MONITOR_OVLD_BUF_POOL_PAGE_MISC, > MONITOR_OVLD_BUF_POOL_PAGES_DATA, > MONITOR_OVLD_BUF_POOL_BYTES_DATA, > MONITOR_OVLD_BUF_POOL_PAGES_DIRTY, > MONITOR_OVLD_BUF_POOL_BYTES_DIRTY, > MONITOR_OVLD_BUF_POOL_PAGES_FREE, > MONITOR_OVLD_PAGE_CREATED, > MONITOR_OVLD_PAGES_WRITTEN, > MONITOR_OVLD_INDEX_PAGES_WRITTEN, > MONITOR_OVLD_NON_INDEX_PAGES_WRITTEN, > MONITOR_OVLD_PAGES_READ, > MONITOR_OVLD_PAGES0_READ, > MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS, > MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS_AVOIDED, > MONITOR_OVLD_BYTE_READ, > MONITOR_OVLD_BYTE_WRITTEN, > MONITOR_FLUSH_BATCH_SCANNED, > MONITOR_FLUSH_BATCH_SCANNED_NUM_CALL, > MONITOR_FLUSH_BATCH_SCANNED_PER_CALL, > MONITOR_FLUSH_BATCH_TOTAL_PAGE, > MONITOR_FLUSH_BATCH_COUNT, > MONITOR_FLUSH_BATCH_PAGES, > MONITOR_FLUSH_NEIGHBOR_TOTAL_PAGE, > MONITOR_FLUSH_NEIGHBOR_COUNT, > MONITOR_FLUSH_NEIGHBOR_PAGES, > MONITOR_FLUSH_N_TO_FLUSH_REQUESTED, > > MONITOR_FLUSH_N_TO_FLUSH_BY_AGE, > MONITOR_FLUSH_ADAPTIVE_AVG_TIME_SLOT, > MONITOR_LRU_BATCH_FLUSH_AVG_TIME_SLOT, > > MONITOR_FLUSH_ADAPTIVE_AVG_TIME_THREAD, > MONITOR_LRU_BATCH_FLUSH_AVG_TIME_THREAD, > MONITOR_FLUSH_ADAPTIVE_AVG_TIME_EST, > MONITOR_LRU_BATCH_FLUSH_AVG_TIME_EST, > MONITOR_FLUSH_AVG_TIME, > > MONITOR_FLUSH_ADAPTIVE_AVG_PASS, > MONITOR_LRU_BATCH_FLUSH_AVG_PASS, > MONITOR_FLUSH_AVG_PASS, > > MONITOR_LRU_GET_FREE_LOOPS, > MONITOR_LRU_GET_FREE_WAITS, > > MONITOR_FLUSH_AVG_PAGE_RATE, > MONITOR_FLUSH_LSN_AVG_RATE, > MONITOR_FLUSH_PCT_FOR_DIRTY, > MONITOR_FLUSH_PCT_FOR_LSN, > MONITOR_FLUSH_SYNC_WAITS, > MONITOR_FLUSH_ADAPTIVE_TOTAL_PAGE, > MONITOR_FLUSH_ADAPTIVE_COUNT, > MONITOR_FLUSH_ADAPTIVE_PAGES, > MONITOR_FLUSH_SYNC_TOTAL_PAGE, > MONITOR_FLUSH_SYNC_COUNT, > MONITOR_FLUSH_SYNC_PAGES, > MONITOR_FLUSH_BACKGROUND_TOTAL_PAGE, > MONITOR_FLUSH_BACKGROUND_COUNT, > MONITOR_FLUSH_BACKGROUND_PAGES, > MONITOR_LRU_BATCH_SCANNED, > MONITOR_LRU_BATCH_SCANNED_NUM_CALL, > MONITOR_LRU_BATCH_SCANNED_PER_CALL, > MONITOR_LRU_BATCH_FLUSH_TOTAL_PAGE, > MONITOR_LRU_BATCH_FLUSH_COUNT, > MONITOR_LRU_BATCH_FLUSH_PAGES, > MONITOR_LRU_BATCH_EVICT_TOTAL_PAGE, > MONITOR_LRU_BATCH_EVICT_COUNT, > MONITOR_LRU_BATCH_EVICT_PAGES, > MONITOR_LRU_SINGLE_FLUSH_SCANNED, > MONITOR_LRU_SINGLE_FLUSH_SCANNED_NUM_CALL, > MONITOR_LRU_SINGLE_FLUSH_SCANNED_PER_CALL, > MONITOR_LRU_SINGLE_FLUSH_FAILURE_COUNT, > MONITOR_LRU_GET_FREE_SEARCH, > MONITOR_LRU_SEARCH_SCANNED, > MONITOR_LRU_SEARCH_SCANNED_NUM_CALL, > MONITOR_LRU_SEARCH_SCANNED_PER_CALL, > MONITOR_LRU_UNZIP_SEARCH_SCANNED, > MONITOR_LRU_UNZIP_SEARCH_SCANNED_NUM_CALL, > MONITOR_LRU_UNZIP_SEARCH_SCANNED_PER_CALL, > > > MONITOR_MODULE_BUF_PAGE, > MONITOR_INDEX_LEAF_PAGE_READ, > MONITOR_INDEX_NON_LEAF_PAGE_READ, > MONITOR_INDEX_IBUF_LEAF_PAGE_READ, > MONITOR_INDEX_IBUF_NON_LEAF_PAGE_READ, > MONITOR_UNDO_LOG_PAGE_READ, > MONITOR_INODE_PAGE_READ, > MONITOR_IBUF_FREELIST_PAGE_READ, > MONITOR_IBUF_BITMAP_PAGE_READ, > MONITOR_SYSTEM_PAGE_READ, > MONITOR_TRX_SYSTEM_PAGE_READ, > MONITOR_FSP_HDR_PAGE_READ, > MONITOR_XDES_PAGE_READ, > MONITOR_BLOB_PAGE_READ, > MONITOR_ZBLOB_PAGE_READ, > MONITOR_ZBLOB2_PAGE_READ, > MONITOR_OTHER_PAGE_READ, > MONITOR_INDEX_LEAF_PAGE_WRITTEN, > MONITOR_INDEX_NON_LEAF_PAGE_WRITTEN, > MONITOR_INDEX_IBUF_LEAF_PAGE_WRITTEN, > MONITOR_INDEX_IBUF_NON_LEAF_PAGE_WRITTEN, > MONITOR_UNDO_LOG_PAGE_WRITTEN, > MONITOR_INODE_PAGE_WRITTEN, > MONITOR_IBUF_FREELIST_PAGE_WRITTEN, > MONITOR_IBUF_BITMAP_PAGE_WRITTEN, > MONITOR_SYSTEM_PAGE_WRITTEN, > MONITOR_TRX_SYSTEM_PAGE_WRITTEN, > MONITOR_FSP_HDR_PAGE_WRITTEN, > MONITOR_XDES_PAGE_WRITTEN, > MONITOR_BLOB_PAGE_WRITTEN, > MONITOR_ZBLOB_PAGE_WRITTEN, > MONITOR_ZBLOB2_PAGE_WRITTEN, > MONITOR_OTHER_PAGE_WRITTEN, > > > MONITOR_MODULE_OS, > MONITOR_OVLD_OS_FILE_READ, > MONITOR_OVLD_OS_FILE_WRITE, > MONITOR_OVLD_OS_FSYNC, > MONITOR_OS_PENDING_READS, > MONITOR_OS_PENDING_WRITES, > MONITOR_OVLD_OS_LOG_WRITTEN, > MONITOR_OVLD_OS_LOG_FSYNC, > MONITOR_OVLD_OS_LOG_PENDING_FSYNC, > MONITOR_OVLD_OS_LOG_PENDING_WRITES, > > > MONITOR_MODULE_TRX, > MONITOR_TRX_RW_COMMIT, > MONITOR_TRX_RO_COMMIT, > MONITOR_TRX_NL_RO_COMMIT, > MONITOR_TRX_COMMIT_UNDO, > MONITOR_TRX_ROLLBACK, > MONITOR_TRX_ROLLBACK_SAVEPOINT, > MONITOR_TRX_ROLLBACK_ACTIVE, > MONITOR_TRX_ACTIVE, > MONITOR_RSEG_HISTORY_LEN, > MONITOR_NUM_UNDO_SLOT_USED, > MONITOR_NUM_UNDO_SLOT_CACHED, > MONITOR_RSEG_CUR_SIZE, > > > MONITOR_MODULE_PURGE, > MONITOR_N_DEL_ROW_PURGE, > MONITOR_N_UPD_EXIST_EXTERN, > MONITOR_PURGE_INVOKED, > MONITOR_PURGE_N_PAGE_HANDLED, > MONITOR_DML_PURGE_DELAY, > MONITOR_PURGE_STOP_COUNT, > MONITOR_PURGE_RESUME_COUNT, > > > MONITOR_MODULE_RECOVERY, > MONITOR_NUM_CHECKPOINT, > MONITOR_OVLD_LSN_FLUSHDISK, > MONITOR_OVLD_LSN_CHECKPOINT, > MONITOR_OVLD_LSN_CURRENT, > MONITOR_LSN_CHECKPOINT_AGE, > MONITOR_OVLD_BUF_OLDEST_LSN, > MONITOR_OVLD_MAX_AGE_ASYNC, > MONITOR_OVLD_MAX_AGE_SYNC, > MONITOR_PENDING_LOG_FLUSH, > MONITOR_PENDING_CHECKPOINT_WRITE, > MONITOR_LOG_IO, > MONITOR_OVLD_LOG_WAITS, > MONITOR_OVLD_LOG_WRITE_REQUEST, > MONITOR_OVLD_LOG_WRITES, > MONITOR_OVLD_LOG_PADDED, > > > MONITOR_MODULE_PAGE, > MONITOR_PAGE_COMPRESS, > MONITOR_PAGE_DECOMPRESS, > MONITOR_PAD_INCREMENTS, > MONITOR_PAD_DECREMENTS, > > MONITOR_OVLD_PAGE_COMPRESS_SAVED, > MONITOR_OVLD_PAGES_PAGE_COMPRESSED, > MONITOR_OVLD_PAGE_COMPRESSED_TRIM_OP, > MONITOR_OVLD_PAGES_PAGE_DECOMPRESSED, > MONITOR_OVLD_PAGES_PAGE_COMPRESSION_ERROR, > > > MONITOR_OVLD_PAGES_ENCRYPTED, > MONITOR_OVLD_PAGES_DECRYPTED, > > > MONITOR_MODULE_INDEX, > MONITOR_INDEX_SPLIT, > MONITOR_INDEX_MERGE_ATTEMPTS, > MONITOR_INDEX_MERGE_SUCCESSFUL, > MONITOR_INDEX_REORG_ATTEMPTS, > MONITOR_INDEX_REORG_SUCCESSFUL, > MONITOR_INDEX_DISCARD, > > > > MONITOR_MODULE_ADAPTIVE_HASH, > MONITOR_OVLD_ADAPTIVE_HASH_SEARCH, > > MONITOR_OVLD_ADAPTIVE_HASH_SEARCH_BTREE, > > MONITOR_ADAPTIVE_HASH_PAGE_ADDED, > MONITOR_ADAPTIVE_HASH_PAGE_REMOVED, > MONITOR_ADAPTIVE_HASH_ROW_ADDED, > MONITOR_ADAPTIVE_HASH_ROW_REMOVED, > MONITOR_ADAPTIVE_HASH_ROW_REMOVE_NOT_FOUND, > MONITOR_ADAPTIVE_HASH_ROW_UPDATED, > > > > MONITOR_MODULE_FIL_SYSTEM, > MONITOR_OVLD_N_FILE_OPENED, > > > MONITOR_MODULE_IBUF_SYSTEM, > MONITOR_OVLD_IBUF_MERGE_INSERT, > MONITOR_OVLD_IBUF_MERGE_DELETE, > MONITOR_OVLD_IBUF_MERGE_PURGE, > MONITOR_OVLD_IBUF_MERGE_DISCARD_INSERT, > MONITOR_OVLD_IBUF_MERGE_DISCARD_DELETE, > MONITOR_OVLD_IBUF_MERGE_DISCARD_PURGE, > MONITOR_OVLD_IBUF_MERGES, > MONITOR_OVLD_IBUF_SIZE, > > > MONITOR_MODULE_SERVER, > MONITOR_MASTER_THREAD_SLEEP, > MONITOR_OVLD_SERVER_ACTIVITY, > MONITOR_MASTER_ACTIVE_LOOPS, > MONITOR_MASTER_IDLE_LOOPS, > MONITOR_SRV_BACKGROUND_DROP_TABLE_MICROSECOND, > MONITOR_SRV_IBUF_MERGE_MICROSECOND, > MONITOR_SRV_LOG_FLUSH_MICROSECOND, > MONITOR_SRV_MEM_VALIDATE_MICROSECOND, > MONITOR_SRV_PURGE_MICROSECOND, > MONITOR_SRV_DICT_LRU_MICROSECOND, > MONITOR_SRV_DICT_LRU_EVICT_COUNT_ACTIVE, > MONITOR_SRV_DICT_LRU_EVICT_COUNT_IDLE, > MONITOR_SRV_CHECKPOINT_MICROSECOND, > MONITOR_OVLD_SRV_DBLWR_WRITES, > MONITOR_OVLD_SRV_DBLWR_PAGES_WRITTEN, > MONITOR_OVLD_SRV_PAGE_SIZE, > MONITOR_OVLD_RWLOCK_S_SPIN_WAITS, > MONITOR_OVLD_RWLOCK_X_SPIN_WAITS, > MONITOR_OVLD_RWLOCK_SX_SPIN_WAITS, > MONITOR_OVLD_RWLOCK_S_SPIN_ROUNDS, > MONITOR_OVLD_RWLOCK_X_SPIN_ROUNDS, > MONITOR_OVLD_RWLOCK_SX_SPIN_ROUNDS, > MONITOR_OVLD_RWLOCK_S_OS_WAITS, > MONITOR_OVLD_RWLOCK_X_OS_WAITS, > MONITOR_OVLD_RWLOCK_SX_OS_WAITS, > > > MONITOR_MODULE_DML_STATS, > MONITOR_OLVD_ROW_READ, > MONITOR_OLVD_ROW_INSERTED, > MONITOR_OLVD_ROW_DELETED, > MONITOR_OLVD_ROW_UPDTATED, > MONITOR_OLVD_SYSTEM_ROW_READ, > MONITOR_OLVD_SYSTEM_ROW_INSERTED, > MONITOR_OLVD_SYSTEM_ROW_DELETED, > MONITOR_OLVD_SYSTEM_ROW_UPDATED, > > > MONITOR_MODULE_DDL_STATS, > MONITOR_BACKGROUND_DROP_INDEX, > MONITOR_BACKGROUND_DROP_TABLE, > MONITOR_ONLINE_CREATE_INDEX, > MONITOR_PENDING_ALTER_TABLE, > MONITOR_ALTER_TABLE_SORT_FILES, > MONITOR_ALTER_TABLE_LOG_FILES, > > MONITOR_MODULE_ICP, > MONITOR_ICP_ATTEMPTS, > MONITOR_ICP_NO_MATCH, > MONITOR_ICP_OUT_OF_RANGE, > MONITOR_ICP_MATCH, > > > MONITOR_MODULE_LATCHES, > MONITOR_LATCHES, > > > > MONITOR_ALL_COUNTER, > > > NUM_MONITOR >}; ># 469 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >struct monitor_info_t { > const char* monitor_name; > const char* monitor_module; > > const char* monitor_desc; > monitor_type_t monitor_type; > monitor_id_t monitor_related_id; > > > > monitor_id_t monitor_id; > >}; > > > > >enum mon_option_t { > MONITOR_TURN_ON = 1, > MONITOR_TURN_OFF, > MONITOR_RESET_VALUE, > MONITOR_RESET_ALL_VALUE, > MONITOR_GET_VALUE > > >}; > > > > > > >extern ulint monitor_set_tbl[(NUM_MONITOR + (sizeof(ulint) * 8) - 1) / > (sizeof(ulint) * 8)]; ># 521 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >extern monitor_value_t innodb_counter_value[NUM_MONITOR]; ># 823 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >monitor_info_t* >srv_mon_get_info( > > monitor_id_t monitor_id); > > > > > > >const char* >srv_mon_get_name( > > monitor_id_t monitor_id); > > > > > > > >void >srv_mon_set_module_control( > > monitor_id_t module_id, > > > > mon_option_t set_option); ># 860 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" >void >srv_mon_process_existing_counter( > > monitor_id_t monitor_id, > > mon_option_t set_option); > > > > > >static inline >mon_type_t >srv_mon_calc_max_since_start( > > monitor_id_t monitor); > > > > >static inline >mon_type_t >srv_mon_calc_min_since_start( > > monitor_id_t monitor); > > > >void >srv_mon_reset( > > monitor_id_t monitor); > > >static inline >void >srv_mon_reset_all( > > monitor_id_t monitor); > > >void >srv_mon_default_on(void); > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.ic" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.ic" >static inline >mon_type_t >srv_mon_calc_max_since_start( > > monitor_id_t monitor) >{ > if ((innodb_counter_value[monitor].mon_max_value_start) == (-9223372036854775807L -1)) { > > > > > (innodb_counter_value[monitor].mon_max_value_start) = > (innodb_counter_value[monitor].mon_max_value); > > } else if ((innodb_counter_value[monitor].mon_max_value) != (-9223372036854775807L -1) > && ((innodb_counter_value[monitor].mon_max_value) > + (innodb_counter_value[monitor].mon_value_reset) > > (innodb_counter_value[monitor].mon_max_value_start))) { > > > > > > (innodb_counter_value[monitor].mon_max_value_start) = > (innodb_counter_value[monitor].mon_max_value) > + (innodb_counter_value[monitor].mon_value_reset); > } > > return((innodb_counter_value[monitor].mon_max_value_start)); >} > > > > > >static inline >mon_type_t >srv_mon_calc_min_since_start( > > monitor_id_t monitor) >{ > if ((innodb_counter_value[monitor].mon_min_value_start) == (9223372036854775807L)) { > > > > > (innodb_counter_value[monitor].mon_min_value_start) = > (innodb_counter_value[monitor].mon_min_value); > > } else if ((innodb_counter_value[monitor].mon_min_value) != (9223372036854775807L) > && ((innodb_counter_value[monitor].mon_min_value) > + (innodb_counter_value[monitor].mon_value_reset) > < (innodb_counter_value[monitor].mon_min_value_start))) { > > > > > > (innodb_counter_value[monitor].mon_min_value_start) = > (innodb_counter_value[monitor].mon_min_value) > + (innodb_counter_value[monitor].mon_value_reset); > } > > return((innodb_counter_value[monitor].mon_min_value_start)); >} > > > >static inline >void >srv_mon_reset_all( > > monitor_id_t monitor) >{ > > if ((monitor_set_tbl[monitor / (sizeof(ulint) * 8)] & ((ulint)1 << (monitor % (sizeof(ulint) * 8))))) { > fprintf(stderr, "InnoDB: Cannot reset all values for" > " monitor counter %s while it is on. Please" > " turn it off and retry.\n", > srv_mon_get_name(monitor)); > } else { > do { (innodb_counter_value[monitor].mon_value) = 0; (innodb_counter_value[monitor].mon_max_value) = (-9223372036854775807L -1); (innodb_counter_value[monitor].mon_min_value) = (9223372036854775807L); (innodb_counter_value[monitor].mon_value_reset) = 0; (innodb_counter_value[monitor].mon_max_value_start) = (-9223372036854775807L -1); (innodb_counter_value[monitor].mon_min_value_start) = (9223372036854775807L); (innodb_counter_value[monitor].mon_last_value) = 0; (innodb_counter_value[monitor].mon_start_time) = 0; (innodb_counter_value[monitor].mon_stop_time) = 0; (innodb_counter_value[monitor].mon_reset_time) = 0; } while (0); > } >} ># 906 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" 2 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.h" 2 ># 234 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.h" >template <typename Mutex> >struct NoPolicy { > > NoPolicy() { } > > void init(const Mutex&, latch_id_t, const char*, uint32_t) > { } > void destroy() { } > void enter(const Mutex&, const char*, unsigned line) { } > void add(uint32_t, uint32_t) { } > void locked(const Mutex&, const char*, ulint) { } > void release(const Mutex&) { } > std::string to_string() const { return(""); }; > latch_id_t get_id() const; >}; > > >template <typename Mutex> >struct GenericPolicy > > > >{ >public: > typedef Mutex MutexType; > > > GenericPolicy() > > : > > > > m_count(), > m_id() > { } > > > ~GenericPolicy() { } > > > > > > > > void init( > const MutexType& mutex, > latch_id_t id, > const char* filename, > uint32_t line) > > { > m_id = id; > > latch_meta_t& meta = sync_latch_get_meta(id); > > do { } while(0); > > meta.get_counter()->single_register(&m_count); > > sync_file_created_register(this, filename, uint16_t(line)); > > ; > } > > > void destroy() > > { > latch_meta_t& meta = sync_latch_get_meta(m_id); > > meta.get_counter()->single_deregister(&m_count); > > sync_file_created_deregister(this); > > ; > } > > > > > > > void add( > uint32_t n_spins, > uint32_t n_waits) > > { > > > if (!m_count.m_enabled) { > > return; > } > > m_count.m_spins += n_spins; > m_count.m_waits += n_waits; > > ++m_count.m_calls; > } > > > > > > void enter( > const MutexType& mutex, > const char* filename, > unsigned line) > > { > ; > } > > > > > > void locked( > const MutexType& mutex, > const char* filename, > unsigned line) > > { > ; > } > > > > void release(const MutexType& mutex) > > { > ; > } > > > > std::string print() const > ; > > > latch_id_t get_id() const > > { > return(m_id); > } > > > std::string to_string() const; > >private: > typedef latch_meta_t::CounterType Counter; > > > Counter::Count m_count; > > > latch_id_t m_id; >}; > > > >template <typename Mutex> >class BlockMutexPolicy > > > >{ >public: > typedef Mutex MutexType; > typedef typename latch_meta_t::CounterType::Count Count; > > > BlockMutexPolicy() > : > > > > m_count(), > m_id() > { > > } > > > ~BlockMutexPolicy() { } > > > > > > > > void init( > const MutexType& mutex, > latch_id_t id, > const char* filename, > uint32_t line) > > { > > > > > > m_id = id; > > latch_meta_t& meta = sync_latch_get_meta(m_id); > > do { } while(0); > > m_count = meta.get_counter()->sum_register(); > > ; > } > > > void destroy() > > { > m_count = __null; > ; > } > > > > > > > void add( > uint32_t n_spins, > uint32_t n_waits) > > { > if (!m_count->m_enabled) { > > return; > } > > m_count->m_spins += n_spins; > m_count->m_waits += n_waits; > > ++m_count->m_calls; > } > > > > > > void locked( > const MutexType& mutex, > const char* filename, > unsigned line) > > { > ; > } > > > > void release(const MutexType& mutex) > > { > ; > } > > > > > > void enter( > const MutexType& mutex, > const char* filename, > unsigned line) > > { > ; > } > > > > std::string print() const > ; > > > latch_id_t get_id() const > { > return(m_id); > } > > > std::string to_string() const; > >private: > typedef latch_meta_t::CounterType Counter; > > > Counter::Count* m_count; > > > latch_id_t m_id; >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0debug.h" 1 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0debug.h" >void >sync_check_init(); > > >void >sync_check_close(); ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.ic" 2 > >template <typename Mutex> >std::string GenericPolicy<Mutex>::to_string() const >{ > return(sync_mutex_to_string(get_id(), sync_file_created_get(this))); >} > >template <typename Mutex> >std::string BlockMutexPolicy<Mutex>::to_string() const >{ > > > > return(sync_mutex_to_string(get_id(), "buf0buf.cc:0")); >} ># 539 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0policy.h" 2 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.h" >struct sync_cell_t; > > >struct sync_array_t; ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.h" >static inline >sync_array_t* >sync_array_get_and_reserve_cell( > void* object, > ulint type, > const char* file, > unsigned line, > sync_cell_t** cell); > > > >sync_cell_t* >sync_array_reserve_cell( > sync_array_t* arr, > void* object, > ulint type, > const char* file, > unsigned line); > > > > > > >void >sync_array_wait_event( > sync_array_t* arr, > sync_cell_t*& cell); > > > > >void >sync_array_free_cell( > sync_array_t* arr, > sync_cell_t*& cell); > > > >void >sync_array_object_signalled(); > > > > >ulint >sync_array_print_long_waits( > os_thread_id_t* waiter, > const void** sema); > > > >void >sync_array_print( > FILE* file); > > > >void >sync_array_init( > ulint n_threads); > > > >void >sync_array_close(); > > > >static inline >sync_array_t* >sync_array_get(); > > >__attribute__((visibility ("hidden"))) >void >sync_array_print_innodb(void); > > > > >__attribute__((visibility ("hidden"))) >sync_cell_t* >sync_array_get_nth_cell( > > sync_array_t* arr, > ulint n); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.ic" >extern ulint sync_array_size; >extern sync_array_t** sync_wait_array; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0counter.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0counter.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_rdtsc.h" 1 ># 29 "/buildbot/mariadb-10.2.31/include/my_rdtsc.h" >struct my_timer_unit_info >{ > > ulonglong routine; > > ulonglong overhead; > > ulonglong frequency; > > ulonglong resolution; >}; > > > > > >struct my_timer_info >{ > > struct my_timer_unit_info cycles; > > struct my_timer_unit_info nanoseconds; > > struct my_timer_unit_info microseconds; > > struct my_timer_unit_info milliseconds; > > struct my_timer_unit_info ticks; >}; > >typedef struct my_timer_info MY_TIMER_INFO; > >extern "C" { > > > > > >ulonglong my_timer_cycles(void); > > > > > >ulonglong my_timer_nanoseconds(void); > > > > > >ulonglong my_timer_microseconds(void); > > > > > >ulonglong my_timer_milliseconds(void); > > > > > >ulonglong my_timer_ticks(void); > > > > > >void my_timer_init(MY_TIMER_INFO *mti); > >} ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0counter.h" 2 ># 46 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0counter.h" >template <typename Type, int N> >struct generic_indexer_t { > > static size_t offset(size_t index) > { > return(((index % N) + 1) * (128 / sizeof(Type))); > } >}; > > > >template <typename Type=ulint, int N=1> >struct counter_indexer_t : public generic_indexer_t<Type, N> { > > static size_t get_rnd_index() > { > size_t c = static_cast<size_t>(my_timer_cycles()); > > if (c != 0) { > return(c); > } else { > > > > return(size_t(os_thread_get_curr_id())); > > > > > > > } > } > > > static size_t get_rnd_offset() > { > return(generic_indexer_t<Type, N>::offset(get_rnd_index())); > } >}; > > > > > > > >template < > typename Type, > int N = 64, > template<typename, int> class Indexer = counter_indexer_t> >struct __attribute__((__aligned__((128)))) ib_counter_t >{ > > void inc() { add(1); } > > > > void inc(size_t index) { add(index, 1); } > > > > void add(Type n) { add(m_policy.get_rnd_offset(), n); } > > > > > void add(size_t index, Type n) { > size_t i = m_policy.offset(index); > > do { } while(0); > > if (sizeof(Type) == 8) { > __atomic_fetch_add((reinterpret_cast<int64*>(&m_counter[i])), (static_cast<int64>(n)), (0)) > > ; > } else if (sizeof(Type) == 4) { > __atomic_fetch_add((reinterpret_cast<int32*>(&m_counter[i])), (static_cast<int32>(n)), (0)) > > ; > } > do { typedef char compile_time_assert[(sizeof(Type) == 8 || sizeof(Type) == 4) ? 1 : -1] __attribute__((unused)); } while(0); > } > > > operator Type() const { > Type total = 0; > > for (size_t i = 0; i < N; ++i) { > if (sizeof(Type) == 8) { > total += static_cast< > Type>(__atomic_load_n((reinterpret_cast<int64*>(const_cast<Type*>( &m_counter[m_policy.offset(i)]))), (0)) > > > ); > } else if (sizeof(Type) == 4) { > total += static_cast< > Type>(__atomic_load_n((reinterpret_cast<int32*>(const_cast<Type*>( &m_counter[m_policy.offset(i)]))), (0)) > > > ); > } > } > > return(total); > } > >private: > > Indexer<Type, N>m_policy; > > > Type m_counter[(N + 1) * (128 / sizeof(Type))]; >}; ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.ic" 2 > > > > > >static inline >sync_array_t* >sync_array_get() > >{ > if (sync_array_size <= 1) { > return(sync_wait_array[0]); > } > > return(sync_wait_array[counter_indexer_t<>::get_rnd_index() > % sync_array_size]); >} ># 58 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.ic" >static inline >sync_array_t* >sync_array_get_and_reserve_cell( > > void* object, > ulint type, > const char* file, > unsigned line, > sync_cell_t** cell) >{ > sync_array_t* sync_arr = __null; > > *cell = __null; > for (ulint i = 0; i < sync_array_size && *cell == __null; ++i) { > > > > sync_arr = sync_array_get(); > *cell = sync_array_reserve_cell(sync_arr, object, type, > file, line); > } > > > > > do { if (__builtin_expect(!(ulint) (*cell != __null), (0))) { ut_dbg_assertion_failed("*cell != NULL", "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.ic", 83); } } while (0); > > return(sync_arr); >} ># 134 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0arr.h" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" 2 > > >template <template <typename> class Policy = NoPolicy> >struct OSTrackMutex { > > typedef Policy<OSTrackMutex> MutexPolicy; > > explicit OSTrackMutex(bool destroy_mutex_at_exit = true) > > { > ; > ; > ; > } > > ~OSTrackMutex() > { > do { } while(0); > } > > > > > > void init( > latch_id_t id, > const char* filename, > uint32_t line) > > { > do { } while(0); > do { } while(0); > > m_mutex.init(); > > ; > } > > > void destroy() > { > do { } while(0); > do { } while(0); > > m_mutex.destroy(); > > ; > } > > > void exit() > { > do { } while(0); > ; > do { } while(0); > > m_mutex.exit(); > } > > > > > > > void enter( > uint32_t max_spins, > uint32_t max_delay, > const char* filename, > uint32_t line) > > { > do { } while(0); > > m_mutex.enter(); > > do { } while(0); > ; > } > > > bool try_lock() > { > do { } while(0); > > bool locked = m_mutex.try_lock(); > > if (locked) { > do { } while(0); > ; > } > > return(locked); > } > > > MutexPolicy& policy() > > { > return(m_policy); > } > > > const MutexPolicy& policy() const > > { > return(m_policy); > } > >private: ># 157 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" > OSMutex m_mutex; > > > MutexPolicy m_policy; >}; > > > > ># 1 "/usr/include/linux/futex.h" 1 3 4 ># 58 "/usr/include/linux/futex.h" 3 4 >struct robust_list { > struct robust_list *next; >}; ># 70 "/usr/include/linux/futex.h" 3 4 >struct robust_list_head { > > > > struct robust_list list; > > > > > > > > long futex_offset; ># 94 "/usr/include/linux/futex.h" 3 4 > struct robust_list *list_op_pending; >}; ># 167 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" 2 ># 1 "/usr/include/sys/syscall.h" 1 3 4 ># 24 "/usr/include/sys/syscall.h" 3 4 ># 1 "/usr/include/asm/unistd.h" 1 3 4 ># 20 "/usr/include/asm/unistd.h" 3 4 ># 1 "/usr/include/asm-generic/unistd.h" 1 3 4 ># 34 "/usr/include/asm-generic/unistd.h" 3 4 ># 669 "/usr/include/asm-generic/unistd.h" 3 4 ># 20 "/usr/include/asm/unistd.h" 2 3 4 ># 25 "/usr/include/sys/syscall.h" 2 3 4 > > > > > > ># 1 "/usr/include/bits/syscall.h" 1 3 4 ># 32 "/usr/include/sys/syscall.h" 2 3 4 ># 168 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" 2 > > >template <template <typename> class Policy = NoPolicy> >struct TTASFutexMutex { > > typedef Policy<TTASFutexMutex> MutexPolicy; > > TTASFutexMutex() > : > m_lock_word(MUTEX_STATE_UNLOCKED) > { > > do { } while(0); > } > > ~TTASFutexMutex() > { > do { if (__builtin_expect(!(ulint) (m_lock_word == MUTEX_STATE_UNLOCKED), (0))) { ut_dbg_assertion_failed("m_lock_word == MUTEX_STATE_UNLOCKED", "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h", 185); } } while (0); > } > > > > > > > void init( > latch_id_t id, > const char* filename, > uint32_t line) > > { > do { if (__builtin_expect(!(ulint) (m_lock_word == MUTEX_STATE_UNLOCKED), (0))) { ut_dbg_assertion_failed("m_lock_word == MUTEX_STATE_UNLOCKED", "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h", 199); } } while (0); > } > > > void destroy() > { > > do { if (__builtin_expect(!(ulint) (m_lock_word == MUTEX_STATE_UNLOCKED), (0))) { ut_dbg_assertion_failed("m_lock_word == MUTEX_STATE_UNLOCKED", "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h", 206); } } while (0); > } > > > > > > > void enter( > uint32_t max_spins, > uint32_t max_delay, > const char* filename, > uint32_t line) > { > uint32_t n_spins, n_waits; > > for (n_spins= 0; n_spins < max_spins; n_spins++) { > if (try_lock()) { > m_policy.add(n_spins, 0); > return; > } > > ut_delay(max_delay); > } > > for (n_waits= 0;; n_waits++) { > if (__atomic_exchange_n((&m_lock_word), (MUTEX_STATE_WAITERS), (2)) > > > == MUTEX_STATE_UNLOCKED) { > break; > } > > syscall(98, &m_lock_word, > (0 | 128), MUTEX_STATE_WAITERS, > 0, 0, 0); > } > > m_policy.add(n_spins, n_waits); > } > > > void exit() > { > if (__atomic_exchange_n((&m_lock_word), (MUTEX_STATE_UNLOCKED), (3)) > > > == MUTEX_STATE_WAITERS) { > syscall(98, &m_lock_word, (1 | 128), > 1, 0, 0, 0); > } > } > > > > bool try_lock() > { > int32 oldval = MUTEX_STATE_UNLOCKED; > return(__atomic_compare_exchange_n((&m_lock_word), (&oldval), (MUTEX_STATE_LOCKED), false, (2), (0)) > > > ); > } > > > MutexPolicy& policy() > { > return(m_policy); > } > > > const MutexPolicy& policy() const > { > return(m_policy); > } >private: > > MutexPolicy m_policy; > > > > int32 m_lock_word; >}; > > > >template <template <typename> class Policy = NoPolicy> >struct TTASMutex { > > typedef Policy<TTASMutex> MutexPolicy; > > TTASMutex() > : > m_lock_word(MUTEX_STATE_UNLOCKED) > { > > do { } while(0); > } > > ~TTASMutex() > { > do { } while(0); > } > > > > > > > void init( > latch_id_t id, > const char* filename, > uint32_t line) > > { > do { } while(0); > } > > > void destroy() > { > > do { } while(0); > } > > > > bool try_lock() > { > int32 oldval = MUTEX_STATE_UNLOCKED; > return(__atomic_compare_exchange_n((&m_lock_word), (&oldval), (MUTEX_STATE_LOCKED), false, (2), (0)) > > > ); > } > > > void exit() > { > do { } while(0); > __atomic_store_n((&m_lock_word), (MUTEX_STATE_UNLOCKED), (3)) > ; > } > > > > > > > void enter( > uint32_t max_spins, > uint32_t max_delay, > const char* filename, > uint32_t line) > { > const uint32_t step = max_spins; > uint32_t n_spins = 0; > > while (!try_lock()) { > ut_delay(max_delay); > if (++n_spins == max_spins) { > os_thread_yield(); > max_spins+= step; > } > } > > m_policy.add(n_spins, 0); > } > > > MutexPolicy& policy() > { > return(m_policy); > } > > > const MutexPolicy& policy() const > { > return(m_policy); > } > >private: > > TTASMutex(const TTASMutex&); > TTASMutex& operator=(const TTASMutex&); > > > MutexPolicy m_policy; > > > > int32 m_lock_word; >}; > >template <template <typename> class Policy = NoPolicy> >struct TTASEventMutex { > > typedef Policy<TTASEventMutex> MutexPolicy; > > TTASEventMutex() > > : > m_lock_word(MUTEX_STATE_UNLOCKED), > m_event() > { > > do { } while(0); > } > > ~TTASEventMutex() > > { > do { } while(0); > } > > > > > > > void init( > latch_id_t id, > const char* filename, > uint32_t line) > > { > do { if (__builtin_expect(!(ulint) (m_event == 0), (0))) { ut_dbg_assertion_failed("m_event == 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h", 432); } } while (0); > do { if (__builtin_expect(!(ulint) (m_lock_word == MUTEX_STATE_UNLOCKED), (0))) { ut_dbg_assertion_failed("m_lock_word == MUTEX_STATE_UNLOCKED", "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h", 433); } } while (0); > > m_event = os_event_create(sync_latch_get_name(id)); > } > > > > > void destroy() > > { > do { } while(0); > > > os_event_destroy(m_event); > m_event = 0; > } > > > > bool try_lock() > > { > int32 oldval = MUTEX_STATE_UNLOCKED; > return(__atomic_compare_exchange_n((&m_lock_word), (&oldval), (MUTEX_STATE_LOCKED), false, (2), (0)) > > > ); > } > > > void exit() > > { > if (__atomic_exchange_n((&m_lock_word), (MUTEX_STATE_UNLOCKED), (3)) > > > == MUTEX_STATE_WAITERS) { > os_event_set(m_event); > sync_array_object_signalled(); > } > } > > > > > > > void enter( > uint32_t max_spins, > uint32_t max_delay, > const char* filename, > uint32_t line) > > { > uint32_t n_spins = 0; > uint32_t n_waits = 0; > const uint32_t step = max_spins; > > while (!try_lock()) { > if (n_spins++ == max_spins) { > max_spins += step; > n_waits++; > os_thread_yield(); > > sync_cell_t* cell; > sync_array_t *sync_arr = sync_array_get_and_reserve_cell( > this, > (m_policy.get_id() == LATCH_ID_BUF_BLOCK_MUTEX > || m_policy.get_id() == LATCH_ID_BUF_POOL_ZIP) > ? SYNC_BUF_BLOCK > : SYNC_MUTEX, > filename, line, &cell); > > int32 oldval = MUTEX_STATE_LOCKED; > __atomic_compare_exchange_n((&m_lock_word), (&oldval), (MUTEX_STATE_WAITERS), false, (0), (0)) > > > ; > > if (oldval == MUTEX_STATE_UNLOCKED) { > sync_array_free_cell(sync_arr, cell); > } else { > sync_array_wait_event(sync_arr, cell); > } > } else { > ut_delay(max_delay); > } > } > > m_policy.add(n_spins, n_waits); > } > > > int32 state() const > > { > return(__atomic_load_n((const_cast<int32*> (&m_lock_word)), (0)) > > ); > } > > > > os_event_t event() > > { > return(m_event); > } > > > MutexPolicy& policy() > > { > return(m_policy); > } > > > const MutexPolicy& policy() const > > { > return(m_policy); > } > >private: > > TTASEventMutex(const TTASEventMutex&); > TTASEventMutex& operator=(const TTASEventMutex&); > > > > int32 m_lock_word; > > > os_event_t m_event; > > > MutexPolicy m_policy; >}; > > > >template <typename MutexImpl> >struct PolicyMutex >{ > typedef MutexImpl MutexType; > typedef typename MutexImpl::MutexPolicy Policy; > > PolicyMutex() : m_impl() > { > > > > } > > ~PolicyMutex() { } > > > Policy& policy() > { > return(m_impl.policy()); > } > > > const Policy& policy() const > { > return(m_impl.policy()); > } > > > void exit() > { > > > > > policy().release(m_impl); > > m_impl.exit(); > } > > > > > > > void enter( > uint32_t n_spins, > uint32_t n_delay, > const char* name, > uint32_t line) > { ># 635 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" > policy().enter(m_impl, name, line); > > m_impl.enter(n_spins, n_delay, name, line); > > policy().locked(m_impl, name, line); > > > > } > > > > > int trylock(const char* name, uint32_t line) > { ># 664 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" > int ret = m_impl.try_lock() ? 0 : 1; > > if (ret == 0) { > > policy().enter(m_impl, name, line); > > policy().locked(m_impl, name, line); > } > > > > > > return(ret); > } ># 694 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" > void init( > latch_id_t id, > const char* filename, > uint32_t line) > > { > > > > > m_impl.init(id, filename, line); > policy().init(m_impl, id, filename, line); > } > > > void destroy() > { > > > > m_impl.destroy(); > policy().destroy(); > } > > > operator sys_mutex_t*() > { > return(m_impl.operator sys_mutex_t*()); > } ># 805 "/buildbot/mariadb-10.2.31/storage/innobase/include/ib0mutex.h" >private: > > MutexImpl m_impl; > > > > > > >}; ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 2 > > > > > > > >typedef OSMutex EventMutex; > > >typedef PolicyMutex<TTASFutexMutex<GenericPolicy> > FutexMutex;; >typedef PolicyMutex<TTASFutexMutex<BlockMutexPolicy> > BlockFutexMutex;; > > >typedef PolicyMutex<TTASMutex<GenericPolicy> > SpinMutex;; >typedef PolicyMutex<TTASMutex<BlockMutexPolicy> > BlockSpinMutex;; > >typedef PolicyMutex<OSTrackMutex<GenericPolicy> > SysMutex;; >typedef PolicyMutex<OSTrackMutex<BlockMutexPolicy> > BlockSysMutex;; > >typedef PolicyMutex<TTASEventMutex<GenericPolicy> > SyncArrayMutex;; >typedef PolicyMutex<TTASEventMutex<BlockMutexPolicy> > BlockSyncArrayMutex;; ># 67 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" >typedef SyncArrayMutex ib_mutex_t; >typedef BlockSyncArrayMutex ib_bpmutex_t; > > > > > >extern uint srv_spin_wait_delay; >extern ulong srv_n_spin_wait_rounds; ># 113 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" >class MutexMonitor { >public: > > MutexMonitor() { } > > > ~MutexMonitor() { } > > > void enable(); > > > void disable(); > > > void reset(); > > > > > template<typename Callback> > bool iterate(Callback& callback) const > > { > LatchMetaData::iterator end = latch_meta.end(); > > for (LatchMetaData::iterator it = latch_meta.begin(); > it != end; > ++it) { > > > > if (*it == __null) { > continue; > } > > latch_meta_t* latch_meta = *it; > > bool ret = callback(*latch_meta); > > if (!ret) { > return(ret); > } > } > > return(true); > } >}; > > >extern MutexMonitor mutex_monitor; ># 175 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" >template <typename Mutex> >void mutex_init( > Mutex* mutex, > latch_id_t id, > const char* file_name, > uint32_t line) >{ > new(mutex) Mutex(); > > mutex->init(id, file_name, line); >} > > > > > >template <typename Mutex> >void mutex_destroy( > Mutex* mutex) >{ > mutex->destroy(); >} ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" 2 > > >struct rw_lock_stats_t { > typedef ib_counter_t<int64_t, 64> int64_counter_t; > > > > int64_counter_t rw_s_spin_wait_count; > > > > int64_counter_t rw_s_spin_round_count; > > > > int64_counter_t rw_s_os_wait_count; > > > > int64_counter_t rw_x_spin_wait_count; > > > > int64_counter_t rw_x_spin_round_count; > > > > int64_counter_t rw_x_os_wait_count; > > > > int64_counter_t rw_sx_spin_wait_count; > > > > int64_counter_t rw_sx_spin_round_count; > > > > int64_counter_t rw_sx_os_wait_count; >}; > > > > > >enum rw_lock_type_t { > RW_S_LATCH = 1, > RW_X_LATCH = 2, > RW_SX_LATCH = 4, > RW_NO_LATCH = 8 >}; ># 102 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >struct rw_lock_t; > > > > > >typedef ut_list_base<rw_lock_t, ut_list_node<rw_lock_t> rw_lock_t::*> rw_lock_list_t; > >extern rw_lock_list_t rw_lock_list; >extern ib_mutex_t rw_lock_list_mutex; > > >extern rw_lock_stats_t rw_lock_stats; ># 295 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >void >rw_lock_create_func( > > rw_lock_t* lock, > > > > const char* cfile_name, > unsigned cline); > > > > >void >rw_lock_free_func( > > rw_lock_t* lock); ># 326 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >static inline >ulint >rw_lock_s_lock_low( > > rw_lock_t* lock, > ulint pass __attribute__((unused)), > > > const char* file_name, > unsigned line); > > > > > > > >static inline >void >rw_lock_s_lock_func( > > rw_lock_t* lock, > ulint pass, > > const char* file_name, > unsigned line); > > > > > >static inline >ulint >rw_lock_x_lock_func_nowait( > > rw_lock_t* lock, > const char* file_name, > unsigned line); > > >static inline >void >rw_lock_s_unlock_func( > > > > > > rw_lock_t* lock); ># 385 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >void >rw_lock_x_lock_func( > > rw_lock_t* lock, > ulint pass, > > const char* file_name, > unsigned line); > > > >ulint >rw_lock_sx_lock_low( > > rw_lock_t* lock, > ulint pass, > > const char* file_name, > unsigned line); ># 413 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >void >rw_lock_sx_lock_func( > > rw_lock_t* lock, > ulint pass, > > const char* file_name, > unsigned line); > > >static inline >void >rw_lock_x_unlock_func( > > > > > > rw_lock_t* lock); > > > >static inline >void >rw_lock_sx_unlock_func( > > > > > > rw_lock_t* lock); ># 453 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >void >rw_lock_x_lock_move_ownership( > > rw_lock_t* lock); > > > > > >static inline >ulint >rw_lock_get_x_lock_count( > > const rw_lock_t* lock); > > > > >static inline >ulint >rw_lock_get_sx_lock_count( > > const rw_lock_t* lock); > > > > >static inline >ulint >rw_lock_get_writer( > > const rw_lock_t* lock); > > > >static inline >ulint >rw_lock_get_reader_count( > > const rw_lock_t* lock); > > > > >static inline >bool >rw_lock_lock_word_decr( > > rw_lock_t* lock, > ulint amount, > lint threshold); ># 530 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >bool >rw_lock_is_locked( > > rw_lock_t* lock, > ulint lock_type); ># 566 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >struct rw_lock_t > > > >{ > > volatile lint lock_word; > > > volatile uint32_t waiters; > > > volatile ulint sx_recursive; > > > > > > bool writer_is_wait_ex; > > > > > > > > volatile os_thread_id_t writer_thread; > > > os_event_t event; > > > > os_event_t wait_ex_event; > > > const char* cfile_name; > > > const char* last_s_file_name; > > > const char* last_x_file_name; > > > unsigned cline:13; > > > unsigned is_block_lock:1; > > > unsigned last_s_line:14; > > > unsigned last_x_line:14; > > > uint32_t count_os_wait; > > > ut_list_node<rw_lock_t> list; ># 644 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" >}; ># 852 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic" 1 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic" >void >rw_lock_s_lock_spin( > > rw_lock_t* lock, > ulint pass, > > const char* file_name, > unsigned line); ># 74 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic" >static inline >ulint >rw_lock_get_writer( > > const rw_lock_t* lock) >{ > lint lock_word = lock->lock_word; > > do { } while(0); > if (lock_word > 0x10000000) { > > > return(RW_LOCK_NOT_LOCKED); > } else if (lock_word > 0) { > > return(RW_LOCK_SX); > } else if (lock_word == 0 > || lock_word == -0x10000000 > || lock_word <= -0x20000000) { > > return(RW_LOCK_X); > } else { > > > > return(RW_LOCK_X_WAIT); > } >} > > > > >static inline >ulint >rw_lock_get_reader_count( > > const rw_lock_t* lock) >{ > lint lock_word = lock->lock_word; > do { } while(0); > > if (lock_word > 0x10000000) { > > return(0x20000000 - lock_word); > } else if (lock_word > 0) { > > return(0x10000000 - lock_word); > } else if (lock_word == 0) { > > return(0); > } else if (lock_word > -0x10000000) { > > return((ulint)(-lock_word)); > } else if (lock_word == -0x10000000) { > > return(0); > } else if (lock_word > -0x20000000) { > > return((ulint)(-(lock_word + 0x10000000))); > } > > return(0); >} > > > > > >static inline >ulint >rw_lock_get_x_lock_count( > > const rw_lock_t* lock) >{ > lint lock_copy = lock->lock_word; > do { } while(0); > > if (lock_copy == 0 || lock_copy == -0x10000000) { > > return(1); > } else if (lock_copy > -0x20000000) { > > return(0); > } else if (lock_copy > -(0x20000000 + 0x10000000)) { > > > > return(2 - (lock_copy + 0x20000000)); > } else { > > > > return(2 - (lock_copy + 0x20000000 + 0x10000000)); > } >} > > > > > >static inline >ulint >rw_lock_get_sx_lock_count( > > const rw_lock_t* lock) >{ ># 195 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic" > return(lock->sx_recursive); > >} ># 206 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic" >static inline >bool >rw_lock_lock_word_decr( > > rw_lock_t* lock, > ulint amount, > lint threshold) >{ > lint local_lock_word; > > local_lock_word = lock->lock_word; > while (local_lock_word > threshold) { > if (my_atomic_cas64((int64*) (&lock->lock_word), (int64*) (&local_lock_word), (local_lock_word - amount)) > > ) { > return(true); > } > } > return(false); >} > > > > > >static inline >ulint >rw_lock_s_lock_low( > > rw_lock_t* lock, > ulint pass __attribute__((unused)), > > > const char* file_name, > unsigned line) >{ > if (!rw_lock_lock_word_decr(lock, 1, 0)) { > > return((0)); > } > > ; > > > > lock->last_s_file_name = file_name; > lock->last_s_line = line; > > return((1)); >} > > > > > > > >static inline >void >rw_lock_s_lock_func( > > rw_lock_t* lock, > ulint pass, > > const char* file_name, > unsigned line) >{ ># 284 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic" > do { } while(0); > > if (!rw_lock_s_lock_low(lock, pass, file_name, line)) { > > > > rw_lock_s_lock_spin(lock, pass, file_name, line); > } >} > > > > > > >static inline >ulint >rw_lock_x_lock_func_nowait( > > rw_lock_t* lock, > const char* file_name, > unsigned line) >{ > lint oldval = 0x20000000; > > if (my_atomic_cas64((int64*) (&lock->lock_word), (int64*) (&oldval), (0))) { > lock->writer_thread = os_thread_get_curr_id(); > > } else if (os_thread_eq(lock->writer_thread, os_thread_get_curr_id())) { > > > > if (lock->lock_word == 0 || lock->lock_word == -0x10000000) { > > lock->lock_word -= 0x20000000; > } else if (lock->lock_word <= -0x20000000) { > > lock->lock_word--; > } else { > > return((0)); > } > > > do { } while(0); > > } else { > > return((0)); > } > > ; > > lock->last_x_file_name = file_name; > lock->last_x_line = line; > > do { } while(0); > > return((1)); >} > > > >static inline >void >rw_lock_s_unlock_func( > > > > > > rw_lock_t* lock) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > ; > > > lint lock_word = my_atomic_add64((int64*) (&lock->lock_word), (1)) + 1; > if (lock_word == 0 || lock_word == -0x10000000) { > > > > > os_event_set(lock->wait_ex_event); > sync_array_object_signalled(); > > } > > do { } while(0); >} > > > >static inline >void >rw_lock_x_unlock_func( > > > > > > rw_lock_t* lock) >{ > do { } while(0) > ; > > if (lock->lock_word == 0) { > > lock->writer_thread = 0; > } > > ; > > if (lock->lock_word == 0 || lock->lock_word == -0x10000000) { > > > if (my_atomic_add64((int64*) (&lock->lock_word), (0x20000000)) <= -0x20000000) { > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic", 404); > } > > > > > > > if (lock->waiters) { > my_atomic_store32((int32*) &lock->waiters, 0); > os_event_set(lock->event); > sync_array_object_signalled(); > } > } else if (lock->lock_word == -0x20000000 > || lock->lock_word == -(0x20000000 + 0x10000000)) { > > lock->lock_word += 0x20000000; > } else { > > do { } while(0); > lock->lock_word += 1; > } > > do { } while(0); >} > > > >static inline >void >rw_lock_sx_unlock_func( > > > > > > rw_lock_t* lock) >{ > do { } while(0); > do { } while(0); > > --lock->sx_recursive; > > ; > > if (lock->sx_recursive == 0) { > > if (lock->lock_word > 0) { > lock->writer_thread = 0; > > if (my_atomic_add64((int64*) (&lock->lock_word), (0x10000000)) <= 0) { > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.ic", 455); > } > > > > > if (lock->waiters) { > my_atomic_store32((int32*) &lock->waiters, 0); > os_event_set(lock->event); > sync_array_object_signalled(); > } > } else { > > do { } while(0) > > ; > lock->lock_word += 0x10000000; > } > } > > do { } while(0); >} ># 853 "/buildbot/mariadb-10.2.31/storage/innobase/include/sync0rw.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0types.h" 2 > > >struct mtr_t; > > >enum mtr_log_t { > > MTR_LOG_ALL = 0, > > > > > MTR_LOG_NONE, > > > MTR_LOG_NO_REDO, > > > MTR_LOG_SHORT_INSERTS >}; > > > > > >enum mlog_id_t { > > > > MLOG_SINGLE_REC_FLAG = 128, > > > MLOG_1BYTE = 1, > > > MLOG_2BYTES = 2, > > > MLOG_4BYTES = 4, > > > MLOG_8BYTES = 8, > > > MLOG_REC_INSERT = 9, > > > MLOG_REC_CLUST_DELETE_MARK = 10, > > > MLOG_REC_SEC_DELETE_MARK = 11, > > > MLOG_REC_UPDATE_IN_PLACE = 13, > > > MLOG_REC_DELETE = 14, > > > MLOG_LIST_END_DELETE = 15, > > > MLOG_LIST_START_DELETE = 16, > > > MLOG_LIST_END_COPY_CREATED = 17, > > > MLOG_PAGE_REORGANIZE = 18, > > > MLOG_PAGE_CREATE = 19, > > > MLOG_UNDO_INSERT = 20, > > > MLOG_UNDO_ERASE_END = 21, > > > MLOG_UNDO_INIT = 22, > > > MLOG_UNDO_HDR_REUSE = 24, > > > MLOG_UNDO_HDR_CREATE = 25, > > > MLOG_REC_MIN_MARK = 26, > > > MLOG_IBUF_BITMAP_INIT = 27, > > > > > > > > MLOG_WRITE_STRING = 30, > > > > MLOG_MULTI_REC_END = 31, > > > MLOG_DUMMY_RECORD = 32, ># 148 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0types.h" > MLOG_FILE_DELETE = 35, > > > MLOG_COMP_REC_MIN_MARK = 36, > > > MLOG_COMP_PAGE_CREATE = 37, > > > MLOG_COMP_REC_INSERT = 38, > > > MLOG_COMP_REC_CLUST_DELETE_MARK = 39, > > > MLOG_COMP_REC_UPDATE_IN_PLACE = 41, > > > MLOG_COMP_REC_DELETE = 42, > > > MLOG_COMP_LIST_END_DELETE = 43, > > > MLOG_COMP_LIST_START_DELETE = 44, > > > MLOG_COMP_LIST_END_COPY_CREATED = 45, > > > MLOG_COMP_PAGE_REORGANIZE = 46, > > > MLOG_FILE_CREATE2 = 47, > > > > MLOG_ZIP_WRITE_NODE_PTR = 48, > > > > MLOG_ZIP_WRITE_BLOB_PTR = 49, > > > MLOG_ZIP_WRITE_HEADER = 50, > > > MLOG_ZIP_PAGE_COMPRESS = 51, > > > MLOG_ZIP_PAGE_COMPRESS_NO_DATA = 52, > > > MLOG_ZIP_PAGE_REORGANIZE = 53, > > > MLOG_FILE_RENAME2 = 54, > > > MLOG_FILE_NAME = 55, > > > MLOG_CHECKPOINT = 56, > > > MLOG_PAGE_CREATE_RTREE = 57, > > > MLOG_COMP_PAGE_CREATE_RTREE = 58, > > > MLOG_INIT_FILE_PAGE2 = 59, > > > MLOG_TRUNCATE = 60, > > > > MLOG_INDEX_LOAD = 61, > > > MLOG_BIGGEST_TYPE = MLOG_INDEX_LOAD, > > > > MLOG_FILE_WRITE_CRYPT_DATA = 100, >}; ># 249 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0types.h" >enum mtr_memo_type_t { > MTR_MEMO_PAGE_S_FIX = RW_S_LATCH, > > MTR_MEMO_PAGE_X_FIX = RW_X_LATCH, > > MTR_MEMO_PAGE_SX_FIX = RW_SX_LATCH, > > MTR_MEMO_BUF_FIX = RW_NO_LATCH, > > > > > > MTR_MEMO_S_LOCK = RW_S_LATCH << 5, > > MTR_MEMO_X_LOCK = RW_X_LATCH << 5, > > MTR_MEMO_SX_LOCK = RW_SX_LATCH << 5 >}; > > >enum mtr_state_t { > MTR_STATE_INIT = 0, > MTR_STATE_ACTIVE, > MTR_STATE_COMMITTED >}; ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.h" 2 ># 44 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.h" >static inline >void >mach_write_to_1( > > byte* b, > ulint n); > > > >static inline >uint8_t >mach_read_from_1( > const byte* b) > __attribute__((warn_unused_result)); > > > >static inline >void >mach_write_to_2( > > byte* b, > ulint n); > > > > > >static inline >uint16_t >mach_read_from_2( > const byte* b) > __attribute__((warn_unused_result)); > > > > > > > >static inline >uint16 >mach_encode_2( > > ulint n) > __attribute__((const)); > > > > > >static inline >ulint >mach_decode_2( > > uint16 n) > __attribute__((const)); > > > >static inline >void >mach_write_to_3( > > byte* b, > ulint n); > > > > >static inline >uint32_t >mach_read_from_3( > const byte* b) > __attribute__((warn_unused_result)); > > > >static inline >void >mach_write_to_4( > > byte* b, > ulint n); > > > > >static inline >uint32_t >mach_read_from_4( > const byte* b) > __attribute__((warn_unused_result)); > > > >static inline >ulint >mach_write_compressed( > > byte* b, > ulint n); > > > >static inline >ulint >mach_get_compressed_size( > > ulint n) > __attribute__((const)); > > > > >static inline >ib_uint32_t >mach_read_next_compressed( > const byte** b); > > > >static inline >void >mach_write_to_6( > > byte* b, > ib_uint64_t id); > > > > >static inline >ib_uint64_t >mach_read_from_6( > > const byte* b) > __attribute__((warn_unused_result)); > > > >static inline >void >mach_write_to_7( > > byte* b, > ib_uint64_t n); > > > > >static inline >ib_uint64_t >mach_read_from_7( > > const byte* b) > __attribute__((warn_unused_result)); > > > >static inline >void >mach_write_to_8( > > void* b, > ib_uint64_t n); > > > > >static inline >ib_uint64_t >mach_read_from_8( > > const byte* b) > __attribute__((warn_unused_result)); > > > >static inline >ulint >mach_u64_write_compressed( > > byte* b, > ib_uint64_t n); > > > > >static inline >ib_uint64_t >mach_u64_read_next_compressed( > const byte** b); > > > >static inline >ulint >mach_u64_write_much_compressed( > > byte* b, > ib_uint64_t n); > > > >static inline >ib_uint64_t >mach_u64_read_much_compressed( > > const byte* b) > __attribute__((warn_unused_result)); > > > > > >ib_uint32_t >mach_parse_compressed( > const byte** ptr, > const byte* end_ptr); > > > > > >static inline >ib_uint64_t >mach_u64_parse_compressed( > const byte** ptr, > const byte* end_ptr); > > > > >static inline >double >mach_double_read( > > const byte* b) > __attribute__((warn_unused_result)); > > >static inline >void >mach_double_write( > > byte* b, > double d); > > > >static inline >float >mach_float_read( > > const byte* b) > __attribute__((warn_unused_result)); > > >static inline >void >mach_float_write( > > byte* b, > float d); > > > >static inline >ulint >mach_read_from_n_little_endian( > > const byte* buf, > ulint buf_size) > __attribute__((warn_unused_result)); > > >static inline >void >mach_write_to_n_little_endian( > > byte* dest, > ulint dest_size, > ulint n); > > > >static inline >ulint >mach_read_from_2_little_endian( > > const byte* buf) > __attribute__((warn_unused_result)); > > >static inline >void >mach_write_to_2_little_endian( > > byte* dest, > ulint n); > > > > >static inline >ib_uint64_t >mach_read_int_type( > > const byte* src, > ulint len, > ulint unsigned_type); > > > > >static inline >void >mach_write_ulonglong( > > byte* dest, > ulonglong src, > ulint len, > bool usign); > > > > > > > >static inline >ulint >mach_read_ulint( > const byte* ptr, > mlog_id_t type) > __attribute__((warn_unused_result)); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.ic" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.ic" >static inline >void >mach_write_to_1( > > byte* b, > ulint n) >{ > do { } while(0); > > b[0] = (byte) n; >} > > > > > > >static inline >void >mach_write_to_2( > > byte* b, > ulint n) >{ > do { } while(0); > > b[0] = (byte)(n >> 8); > b[1] = (byte)(n); >} > > > > >static inline >uint8_t >mach_read_from_1( > const byte* b) >{ > return(uint8_t(*b)); >} > > > > > >static inline >uint16_t >mach_read_from_2( > const byte* b) >{ > return(uint16_t(uint16_t(b[0]) << 8 | b[1])); >} ># 94 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.ic" >static inline >uint16 >mach_encode_2( > > ulint n) >{ > uint16 ret; > do { } while(0); > mach_write_to_2((byte*) &ret, n); > return(ret); >} > > > > > >static inline >ulint >mach_decode_2( > > uint16 n) >{ > do { } while(0); > return(mach_read_from_2((const byte*) &n)); >} > > > > >static inline >void >mach_write_to_3( > > byte* b, > ulint n) >{ > do { } while(0); > > b[0] = (byte)(n >> 16); > b[1] = (byte)(n >> 8); > b[2] = (byte)(n); >} > > > > > >static inline >uint32_t >mach_read_from_3( > const byte* b) >{ > return( (static_cast<uint32_t>(b[0]) << 16) > | (static_cast<uint32_t>(b[1]) << 8) > | static_cast<uint32_t>(b[2]) > ); >} > > > > > >static inline >void >mach_write_to_4( > > byte* b, > ulint n) >{ > b[0] = (byte)(n >> 24); > b[1] = (byte)(n >> 16); > b[2] = (byte)(n >> 8); > b[3] = (byte) n; >} > > > > > >static inline >uint32_t >mach_read_from_4( > const byte* b) >{ > return( (static_cast<uint32_t>(b[0]) << 24) > | (static_cast<uint32_t>(b[1]) << 16) > | (static_cast<uint32_t>(b[2]) << 8) > | static_cast<uint32_t>(b[3]) > ); >} ># 195 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.ic" >static inline >ulint >mach_write_compressed( > > byte* b, > ulint n) >{ > if (n < 0x80) { > > mach_write_to_1(b, n); > return(1); > } else if (n < 0x4000) { > > mach_write_to_2(b, n | 0x8000); > return(2); > } else if (n < 0x200000) { > > mach_write_to_3(b, n | 0xC00000); > return(3); > } else if (n < 0x10000000) { > > mach_write_to_4(b, n | 0xE0000000); > return(4); > } else { > > mach_write_to_1(b, 0xF0); > mach_write_to_4(b + 1, n); > return(5); > } >} > > > > >static inline >ulint >mach_get_compressed_size( > > ulint n) >{ > if (n < 0x80) { > > return(1); > } else if (n < 0x4000) { > > return(2); > } else if (n < 0x200000) { > > return(3); > } else if (n < 0x10000000) { > > return(4); > } else { > > return(5); > } >} > > > > >static inline >ulint >mach_read_compressed( > > const byte* b) >{ > ulint val; > > val = mach_read_from_1(b); > > if (val < 0x80) { > > } else if (val < 0xC0) { > > val = mach_read_from_2(b) & 0x3FFF; > do { } while(0); > } else if (val < 0xE0) { > > val = mach_read_from_3(b) & 0x1FFFFF; > do { } while(0); > } else if (val < 0xF0) { > > val = mach_read_from_4(b) & 0xFFFFFFF; > do { } while(0); > } else { > > do { } while(0); > val = mach_read_from_4(b + 1); > do { } while(0); > } > > return(val); >} > > > > > >static inline >ib_uint32_t >mach_read_next_compressed( > const byte** b) >{ > ulint val = mach_read_from_1(*b); > > if (val < 0x80) { > > ++*b; > } else if (val < 0xC0) { > > val = mach_read_from_2(*b) & 0x3FFF; > do { } while(0); > *b += 2; > } else if (val < 0xE0) { > > val = mach_read_from_3(*b) & 0x1FFFFF; > do { } while(0); > *b += 3; > } else if (val < 0xF0) { > > val = mach_read_from_4(*b) & 0xFFFFFFF; > do { } while(0); > *b += 4; > } else { > > do { } while(0); > val = mach_read_from_4(*b + 1); > do { } while(0); > *b += 5; > } > > return(static_cast<ib_uint32_t>(val)); >} > > > > >static inline >void >mach_write_to_8( > > void* b, > ib_uint64_t n) >{ > mach_write_to_4(static_cast<byte*>(b), (ulint) (n >> 32)); > mach_write_to_4(static_cast<byte*>(b) + 4, (ulint) n); >} > > > > > > > >static inline >ib_uint64_t >mach_read_from_8( > > const byte* b) >{ > ib_uint64_t u64; > > u64 = mach_read_from_4(b); > u64 <<= 32; > u64 |= mach_read_from_4(b + 4); > > return(u64); >} > > > > > > >static inline >void >mach_write_to_7( > > byte* b, > ib_uint64_t n) >{ > mach_write_to_3(b, (ulint) (n >> 32)); > mach_write_to_4(b + 3, (ulint) n); >} > > > > > >static inline >ib_uint64_t >mach_read_from_7( > > const byte* b) >{ > return(ut_ull_create(mach_read_from_3(b), mach_read_from_4(b + 3))); >} > > > > >static inline >void >mach_write_to_6( > > byte* b, > ib_uint64_t n) >{ > mach_write_to_2(b, (ulint) (n >> 32)); > mach_write_to_4(b + 2, (ulint) n); >} > > > > > >static inline >ib_uint64_t >mach_read_from_6( > > const byte* b) >{ > return(ut_ull_create(mach_read_from_2(b), mach_read_from_4(b + 2))); >} > > > > >static inline >ulint >mach_u64_write_compressed( > > byte* b, > ib_uint64_t n) >{ > ulint size = mach_write_compressed(b, (ulint) (n >> 32)); > mach_write_to_4(b + size, (ulint) n); > > return(size + 4); >} > > > > > >static inline >ib_uint64_t >mach_u64_read_next_compressed( > const byte** b) >{ > ib_uint64_t val; > > val = mach_read_next_compressed(b); > val <<= 32; > val |= mach_read_from_4(*b); > *b += 4; > return(val); >} > > > > >static inline >ulint >mach_u64_write_much_compressed( > > byte* b, > ib_uint64_t n) >{ > ulint size; > > if (!(n >> 32)) { > return(mach_write_compressed(b, (ulint) n)); > } > > *b = (byte)0xFF; > size = 1 + mach_write_compressed(b + 1, (ulint) (n >> 32)); > > size += mach_write_compressed(b + size, (ulint) n & 0xFFFFFFFF); > > return(size); >} > > > > >static inline >ib_uint64_t >mach_u64_read_much_compressed( > > const byte* b) >{ > ib_uint64_t n; > > if (*b != 0xFF) { > return(mach_read_compressed(b)); > } > > b++; > n = mach_read_next_compressed(&b); > n <<= 32; > n |= mach_read_compressed(b); > > return(n); >} > > > > > >static inline >ib_uint64_t >mach_read_next_much_compressed( > const byte** b) >{ > ib_uint64_t val = mach_read_from_1(*b); > > if (val < 0x80) { > > ++*b; > } else if (val < 0xC0) { > > val = mach_read_from_2(*b) & 0x3FFF; > do { } while(0); > *b += 2; > } else if (val < 0xE0) { > > val = mach_read_from_3(*b) & 0x1FFFFF; > do { } while(0); > *b += 3; > } else if (val < 0xF0) { > > val = mach_read_from_4(*b) & 0xFFFFFFF; > do { } while(0); > *b += 4; > } else if (val == 0xF0) { > > val = mach_read_from_4(*b + 1); > do { } while(0); > *b += 5; > } else { > > do { } while(0); > ++*b; > val = mach_read_next_compressed(b); > do { } while(0); > val <<= 32; > val |= mach_read_next_compressed(b); > } > > return(val); >} > > > > > > >static inline >ib_uint64_t >mach_u64_parse_compressed( > const byte** ptr, > const byte* end_ptr) >{ > ib_uint64_t val = 0; > > if (end_ptr < *ptr + 5) { > *ptr = __null; > return(val); > } > > val = mach_read_next_compressed(ptr); > > if (end_ptr < *ptr + 4) { > *ptr = __null; > return(val); > } > > val <<= 32; > val |= mach_read_from_4(*ptr); > *ptr += 4; > > return(val); >} > > > > >static inline >double >mach_double_read( > > const byte* b) >{ > double d; > ulint i; > byte* ptr; > > ptr = (byte*) &d; > > for (i = 0; i < sizeof(double); i++) { > > > > ptr[i] = b[i]; > > } > > return(d); >} > > > >static inline >void >mach_double_write( > > byte* b, > double d) >{ > ulint i; > byte* ptr; > > ptr = (byte*) &d; > > for (i = 0; i < sizeof(double); i++) { > > > > b[i] = ptr[i]; > > } >} > > > > >static inline >float >mach_float_read( > > const byte* b) >{ > float d; > ulint i; > byte* ptr; > > ptr = (byte*) &d; > > for (i = 0; i < sizeof(float); i++) { > > > > ptr[i] = b[i]; > > } > > return(d); >} > > > >static inline >void >mach_float_write( > > byte* b, > float d) >{ > ulint i; > byte* ptr; > > ptr = (byte*) &d; > > for (i = 0; i < sizeof(float); i++) { > > > > b[i] = ptr[i]; > > } >} > > > > >static inline >ulint >mach_read_from_n_little_endian( > > const byte* buf, > ulint buf_size) >{ > ulint n = 0; > const byte* ptr; > > do { } while(0); > > 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( > > byte* dest, > ulint dest_size, > ulint n) >{ > byte* end; > > do { } while(0); > do { } while(0); > > end = dest + dest_size; > > for (;;) { > *dest = (byte)(n & 0xFF); > > n = n >> 8; > > dest++; > > if (dest == end) { > break; > } > } > > do { } while(0); >} > > > > >static inline >ulint >mach_read_from_2_little_endian( > > const byte* buf) >{ > return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8)); >} > > > >static inline >void >mach_write_to_2_little_endian( > > byte* dest, > ulint n) >{ > do { } while(0); > > *dest = (byte)(n & 0xFFUL); > > n = n >> 8; > dest++; > > *dest = (byte)(n & 0xFFUL); >} > > > > > >static inline >ib_uint64_t >mach_read_int_type( > > const byte* src, > ulint len, > ulint unsigned_type) >{ > > > uintmax_t ret; > uint i; > > if (unsigned_type || (src[0] & 0x80)) { > > ret = 0x0000000000000000ULL; > } else { > > ret = 0xFFFFFFFFFFFFFF00ULL; > } > > if (unsigned_type) { > > ret |= src[0]; > } else { > > ret |= src[0] ^ 0x80; > } > > for (i = 1; i < len; i++) { > ret <<= 8; > ret |= src[i]; > } > > return(ret); >} > > >static inline >void >mach_swap_byte_order( > > byte* dest, > const byte* from, > ulint len) >{ > do { } while(0); > do { } while(0); > > dest += len; > > switch (len & 0x7) { > case 0: *--dest = *from++; > case 7: *--dest = *from++; > case 6: *--dest = *from++; > case 5: *--dest = *from++; > case 4: *--dest = *from++; > case 3: *--dest = *from++; > case 2: *--dest = *from++; > case 1: *--dest = *from; > } >} > > > > >static inline >void >mach_write_ulonglong( > > byte* dest, > ulonglong src, > ulint len, > bool usign) >{ > byte* ptr = reinterpret_cast<byte*>(&src); > > do { } while(0); > > > > > mach_swap_byte_order(dest, reinterpret_cast<byte*>(ptr), len); > > > if (!usign) { > *dest ^= 0x80; > } >} > > > > > > > >static inline >ulint >mach_read_ulint( > const byte* ptr, > mlog_id_t type) >{ > switch (type) { > case MLOG_1BYTE: > return(mach_read_from_1(ptr)); > case MLOG_2BYTES: > return(mach_read_from_2(ptr)); > case MLOG_4BYTES: > return(mach_read_from_4(ptr)); > default: > break; > } > > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.ic", 891); > return(0); >} ># 383 "/buildbot/mariadb-10.2.31/storage/innobase/include/mach0data.h" 2 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >class THD; ># 54 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >ulint >innobase_raw_format( > > const char* data, > ulint data_len, > > ulint charset_coll, > char* buf, > ulint buf_size); > > > > >void >innobase_invalidate_query_cache( > > trx_t* trx, > > const char* full_name, > > > > > ulint full_name_len); > > > > > > >void >innobase_quote_identifier( > FILE* file, > trx_t* trx, > const char* id); > > > > > > >std::string >innobase_quote_identifier( > trx_t* trx, > const char* id); > > > > >char* >innobase_convert_name( > > char* buf, > ulint buflen, > const char* id, > ulint idlen, > THD* thd); ># 119 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >ulint >thd_is_replication_slave_thread( > > THD* thd); > > > > > > > >ulint >thd_has_edited_nontrans_tables( > > THD* thd); > > > > > > >unsigned long long thd_query_start_micro(const THD* thd); > > > >void >innobase_mysql_print_thd( > > FILE* f, > THD* thd, > uint max_query_len); > > > > > > >__attribute__((visibility ("hidden"))) >void >innobase_mysql_log_notify( > > ib_uint64_t write_lsn, > ib_uint64_t flush_lsn); ># 170 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >ulint >get_innobase_type_from_mysql_type( > ulint* unsigned_flag, > const void* field); > > > >void >innobase_get_cset_width( > > ulint cset, > ulint* mbminlen, > ulint* mbmaxlen); > > > > >int >innobase_strcasecmp( > > const char* a, > const char* b); > > > > >const char* >innobase_basename( > const char* path_name); > > > > >ulint >thd_is_select( > > const THD* thd); > > > >void >innobase_convert_from_table_id( > > CHARSET_INFO* cs, > char* to, > const char* from, > ulint len); > > > >void >innobase_convert_from_id( > > CHARSET_INFO* cs, > char* to, > const char* from, > ulint len); > > > >void >innobase_casedn_str( > > char* a); > > >__attribute__((visibility ("hidden"))) >int >wsrep_innobase_kill_one_trx(void * const thd_ptr, > const trx_t * const bf_trx, > trx_t *victim_trx, > ulint signal); >int wsrep_innobase_mysql_sort(int mysql_type, uint charset_number, > unsigned char* str, unsigned int str_length, > unsigned int buf_length); > > > > > >CHARSET_INFO* >innobase_get_charset( > > THD* thd); > > > > > > >const char* >innobase_get_stmt_unsafe( > THD* thd, > size_t* length); ># 272 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >size_t >innobase_get_stmt_safe( > THD* thd, > char* buf, > size_t buflen); > > > > > > > >ulint >innobase_get_at_most_n_mbchars( > > ulint charset_id, > ulint prefix_len, > > > ulint data_len, > const char* str); > > > > > >__attribute__((visibility ("hidden"))) >const char* >thd_innodb_tmpdir( > THD* thd); > > > > >ulong >thd_lock_wait_timeout( > > THD* thd); > > > >void >thd_set_lock_wait_time( > > THD* thd, > ulint value); > > > > > >const char* >thd_innodb_tmpdir( > THD* thd); > > > > > > >ulint >innobase_get_table_cache_size(void); ># 342 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >ulint >innobase_get_lower_case_table_names(void); > > > > >int >innobase_fts_text_case_cmp( > > const void* cs, > const void* p1, > const void* p2); > > > > >bool >thd_trx_is_read_only( > > THD* thd); > > > > > >ulint >thd_trx_is_auto_commit( > > THD* thd); > > > > > >void >innobase_format_name( > > char* buf, > ulint buflen, > const char* name); > > >enum ib_log_level_t { > IB_LOG_LEVEL_INFO, > IB_LOG_LEVEL_WARN, > IB_LOG_LEVEL_ERROR, > IB_LOG_LEVEL_FATAL >}; ># 402 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >void >ib_errf( > > THD* thd, > ib_log_level_t level, > ib_uint32_t code, > const char* format, > ...) > __attribute__((format(printf, 4, 5))); ># 422 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >void >ib_senderrf( > > THD* thd, > ib_log_level_t level, > ib_uint32_t code, > ...); > >extern const char* TROUBLESHOOTING_MSG; >extern const char* TROUBLESHOOT_DATADICT_MSG; >extern const char* BUG_REPORT_MSG; >extern const char* FORCE_RECOVERY_MSG; >extern const char* OPERATING_SYSTEM_ERROR_MSG; >extern const char* FOREIGN_KEY_CONSTRAINTS_MSG; >extern const char* SET_TRANSACTION_MSG; >extern const char* INNODB_PARAMETERS_MSG; > > > > >const char* >server_get_hostname(); > > > > > >const char* >innobase_get_err_msg( > > int error_code); ># 472 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" >ulonglong >innobase_next_autoinc( > > ulonglong current, > ulonglong need, > ulonglong step, > ulonglong offset, > ulonglong max_value) > __attribute__((pure, warn_unused_result)); > > > >uint >innobase_convert_to_system_charset( > > char* to, > const char* from, > ulint len, > uint* errors); > > > > >my_bool >innobase_check_identifier_length( > > const char* id); > > > > >uint >innobase_convert_to_system_charset( > > char* to, > const char* from, > ulint len, > uint* errors); > > > >uint >innobase_convert_to_filename_charset( > > char* to, > const char* from, > ulint len); > > > >__attribute__((visibility ("hidden"))) >void >ib_push_warning( > trx_t* trx, > ulint error, > const char *format, > ...); > > > >__attribute__((visibility ("hidden"))) >void >ib_push_warning( > void* ithd, > ulint error, > const char *format, > ...); > > > > > > >void >normalize_table_name_c_low( > > char* norm_name, > > const char* name, > ulint set_lower_case); > > > > > ># 1 "/buildbot/mariadb-10.2.31/include/my_compare.h" 1 ># 20 "/buildbot/mariadb-10.2.31/include/my_compare.h" ># 1 "/buildbot/mariadb-10.2.31/include/myisampack.h" 1 ># 21 "/buildbot/mariadb-10.2.31/include/my_compare.h" 2 > >extern "C" { > > ># 1 "/buildbot/mariadb-10.2.31/include/m_ctype.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/my_compare.h" 2 ># 49 "/buildbot/mariadb-10.2.31/include/my_compare.h" >typedef struct st_HA_KEYSEG >{ > CHARSET_INFO *charset; > uint32 start; > uint32 null_pos; > uint16 bit_pos; > uint16 flag; > uint16 length; > uint16 language; > uint8 type; > uint8 null_bit; > uint8 bit_start; > uint8 bit_length; >} HA_KEYSEG; ># 94 "/buildbot/mariadb-10.2.31/include/my_compare.h" >static inline uchar get_rec_bits(const uchar *ptr, uchar ofs, uint len) >{ > uint16 val= ptr[0]; > if (ofs + len > 8) > val|= (uint16)(ptr[1]) << 8; > return (val >> ofs) & ((1 << len) - 1); >} > >static inline void set_rec_bits(uint16 bits, uchar *ptr, uchar ofs, uint len) >{ > ptr[0]= (ptr[0] & ~(((1 << len) - 1) << ofs)) | (bits << ofs); > if (ofs + len > 8) > ptr[1]= (ptr[1] & ~((1 << (len - 8 + ofs)) - 1)) | (bits >> (8 - ofs)); >} > > > > >extern int ha_compare_text(CHARSET_INFO *, const uchar *, uint, > const uchar *, uint , my_bool); >extern int ha_key_cmp(HA_KEYSEG *keyseg, const uchar *a, > const uchar *b, uint key_length, uint nextflag, > uint *diff_pos); >extern HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, const uchar *a); ># 126 "/buildbot/mariadb-10.2.31/include/my_compare.h" >} ># 146 "/buildbot/mariadb-10.2.31/include/my_compare.h" >typedef enum icp_result { > ICP_ERROR=-1, > ICP_NO_MATCH=0, > ICP_MATCH=1, > ICP_OUT_OF_RANGE=2, > ICP_ABORTED_BY_USER=3 >} ICP_RESULT; > >typedef ICP_RESULT (*index_cond_func_t)(void *param); ># 558 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" 2 > >ICP_RESULT >innobase_index_cond( > > void* file) > __attribute__((warn_unused_result)); > > > > > > > ># 1 "/buildbot/mariadb-10.2.31/include/dur_prop.h" 1 ># 19 "/buildbot/mariadb-10.2.31/include/dur_prop.h" >enum durability_properties >{ > > > > HA_REGULAR_DURABILITY= 0, > > > > > HA_IGNORE_DURABILITY= 1 >}; ># 572 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha_prototypes.h" 2 > >enum durability_properties >thd_requested_durability( > > const THD* thd) > __attribute__((warn_unused_result)); > > > > >void >innodb_set_buf_pool_size(ulonglong buf_pool_size); > > > > >THD* >innobase_create_background_thd(const char* name); > > > >void >innobase_destroy_background_thd(THD*); > > > >void >innobase_reset_background_thd(THD*); ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" 2 > > > > >static inline >ulint >dtype_get_charset_coll( > > ulint prtype) >{ > return((prtype >> 16) & 32767); >} > > > > > > >static inline >ulint >dtype_is_utf8( > > ulint prtype) >{ > > > switch (dtype_get_charset_coll(prtype)) { > case 11: > case 65: > case 33: > case 83: > case 254: > return((1)); > } > > return((0)); >} > > > > >static inline >ulint >dtype_get_mysql_type( > > const dtype_t* type) >{ > return(type->prtype & 0xFFUL); >} > > > >static inline >void >dtype_get_mblen( > > ulint mtype, > ulint prtype, > ulint* mbminlen, > > ulint* mbmaxlen) > >{ > if (dtype_is_string_type(mtype)) { > innobase_get_cset_width(dtype_get_charset_coll(prtype), > mbminlen, mbmaxlen); > do { } while(0); > do { } while(0); > do { } while(0); > } else { > *mbminlen = *mbmaxlen = 0; > } >} > > > >static inline >void >dtype_set_mblen( > > dtype_t* type) >{ > ulint mbminlen; > ulint mbmaxlen; > > dtype_get_mblen(type->mtype, type->prtype, &mbminlen, &mbmaxlen); > type->mbminlen = mbminlen; > type->mbmaxlen = mbmaxlen; > > do { } while(0); >} > > > >static inline >void >dtype_set( > > dtype_t* type, > ulint mtype, > ulint prtype, > ulint len) >{ > do { } while(0); > do { } while(0); > > type->mtype = unsigned(mtype); > type->prtype = unsigned(prtype); > type->len = unsigned(len); > > dtype_set_mblen(type); >} > > > >static inline >void >dtype_copy( > > dtype_t* type1, > const dtype_t* type2) >{ > *type1 = *type2; > > do { } while(0); >} > > > > >static inline >ulint >dtype_get_mtype( > > const dtype_t* type) >{ > do { } while(0); > > return(type->mtype); >} > > > > >static inline >ulint >dtype_get_prtype( > > const dtype_t* type) >{ > do { } while(0); > > return(type->prtype); >} > > > > >static inline >ulint >dtype_get_len( > > const dtype_t* type) >{ > do { } while(0); > > return(type->len); >} > > > > > >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 >void >dtype_new_store_for_order_and_null_size( > > byte* buf, > > > const dtype_t* type, > ulint prefix_len) > >{ > > > > ulint len; > > do { } while(0); > do { } while(0); > do { } while(0); > > buf[0] = (byte)(type->mtype & 0xFFUL); > > if (type->prtype & 1024U) { > buf[0] |= 128; > } > > > > > > > buf[1] = (byte)(type->prtype & 0xFFUL); > > len = prefix_len ? prefix_len : type->len; > > mach_write_to_2(buf + 2, len & 0xFFFFUL); > > do { } while(0); > mach_write_to_2(buf + 4, dtype_get_charset_coll(type->prtype)); > > if (type->prtype & 256U) { > buf[4] |= 128; > } >} > > > > > >static inline >void >dtype_read_for_order_and_null_size( > > dtype_t* type, > const byte* buf) >{ > > > > > type->mtype = buf[0] & 63; > type->prtype = buf[1]; > > if (buf[0] & 128) { > type->prtype |= 1024U; > } > > 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, > const byte* buf) >{ > ulint charset_coll; > > > > > > type->mtype = buf[0] & 63; > type->prtype = buf[1]; > > if (buf[0] & 128) { > type->prtype |= 1024U; > } > > if (buf[4] & 128) { > type->prtype |= 256U; > } > > type->len = mach_read_from_2(buf + 2); > > charset_coll = mach_read_from_2(buf + 4) & 32767; > > if (dtype_is_string_type(type->mtype)) { > do { if (__builtin_expect(!(ulint) (charset_coll <= 32767), (0))) { ut_dbg_assertion_failed("charset_coll <= MAX_CHAR_COLL_NUM", "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 334); } } 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 >char* >dtype_sql_name( > > unsigned mtype, > unsigned prtype, > unsigned len, > char* name, > unsigned name_sz) >{ ># 374 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" > snprintf(name, name_sz, "UNKNOWN"); > > switch (mtype) { > case 6: > switch (len) { > case 1: > snprintf(name, name_sz, "TINYINT"); > break; > case 2: > snprintf(name, name_sz, "SMALLINT"); > break; > case 3: > snprintf(name, name_sz, "MEDIUMINT"); > break; > case 4: > snprintf(name, name_sz, "INT"); > break; > case 8: > snprintf(name, name_sz, "BIGINT"); > break; > } > do { if (prtype & 512U) { snprintf(name + strlen(name), name_sz - strlen(name), " UNSIGNED"); } } while (0); > break; > case 9: > snprintf(name, name_sz, "FLOAT"); > do { if (prtype & 512U) { snprintf(name + strlen(name), name_sz - strlen(name), " UNSIGNED"); } } while (0); > break; > case 10: > snprintf(name, name_sz, "DOUBLE"); > do { if (prtype & 512U) { snprintf(name + strlen(name), name_sz - strlen(name), " UNSIGNED"); } } while (0); > break; > case 3: > snprintf(name, name_sz, "BINARY(%u)", len); > break; > case 2: > case 13: > snprintf(name, name_sz, "CHAR(%u)", len); > break; > case 1: > case 12: > snprintf(name, name_sz, "VARCHAR(%u)", len); > break; > case 4: > snprintf(name, name_sz, "VARBINARY(%u)", len); > break; > case 14: > snprintf(name, name_sz, "GEOMETRY"); > break; > case 5: > switch (len) { > case 9: > snprintf(name, name_sz, "TINYBLOB"); > break; > case 10: > snprintf(name, name_sz, "BLOB"); > break; > case 11: > snprintf(name, name_sz, "MEDIUMBLOB"); > break; > case 12: > snprintf(name, name_sz, "LONGBLOB"); > break; > } > } > > if (prtype & 256U) { > snprintf(name + strlen(name), > name_sz - strlen(name), > " NOT NULL"); > } > > return(name); >} > > > > >static inline >ulint >dtype_get_fixed_size_low( > > ulint mtype, > ulint prtype, > ulint len, > ulint mbminlen, > > ulint mbmaxlen, > > ulint comp) >{ > switch (mtype) { > case 8: ># 483 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" > case 2: > case 3: > case 6: > case 9: > case 10: > return(len); > case 13: > if (prtype & 1024U) { > return(len); > } else if (!comp) { > return(len); > } else { ># 505 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" > if (mbminlen == mbmaxlen) { > return(len); > } > } > > > case 1: > case 4: > case 11: > case 12: > case 14: > case 5: > return(0); > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 519); > } > > return(0); >} > > > > >static inline >ulint >dtype_get_min_size_low( > > ulint mtype, > ulint prtype, > ulint len, > ulint mbminlen, > ulint mbmaxlen) >{ > switch (mtype) { > case 8: ># 557 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic" > case 2: > case 3: > case 6: > case 9: > case 10: > return(len); > case 13: > if (prtype & 1024U) { > return(len); > } else { > if (mbminlen == mbmaxlen) { > return(len); > } > > > do { if (__builtin_expect(!(ulint) (mbminlen > 0), (0))) { ut_dbg_assertion_failed("mbminlen > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 572); } } while (0); > do { if (__builtin_expect(!(ulint) (mbmaxlen > mbminlen), (0))) { ut_dbg_assertion_failed("mbmaxlen > mbminlen", "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 573); } } while (0); > do { if (__builtin_expect(!(ulint) (len % mbmaxlen == 0), (0))) { ut_dbg_assertion_failed("len % mbmaxlen == 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 574); } } while (0); > return(len * mbminlen / mbmaxlen); > } > case 1: > case 4: > case 11: > case 12: > case 14: > case 5: > return(0); > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 585); > } > > return(0); >} > > > > > >static inline >ulint >dtype_get_max_size_low( > > ulint mtype, > ulint len) >{ > switch (mtype) { > case 8: > case 2: > case 3: > case 6: > case 9: > case 10: > case 13: > case 1: > case 4: > case 11: > case 12: > return(len); > case 14: > case 5: > break; > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.ic", 619); > } > > return(((ulint)(-2))); >} > > > > > >static inline >ulint >dtype_get_sql_null_size( > > const dtype_t* type, > ulint comp) >{ > return(dtype_get_fixed_size_low(type->mtype, type->prtype, type->len, > type->mbminlen, type->mbmaxlen, comp)); >} ># 535 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0type.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.h" 2 > > > > > > > >static inline >void* >ut_memcpy(void* dest, const void* src, 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); > > > > > >static inline >char* >ut_strcpy(char* dest, const char* src); > > > > >static inline >ulint >ut_strlen(const char* str); > > > > > > >static inline >int >ut_strcmp(const char* str1, const char* str2); > > > >char* >ut_str3cat( > > > > const char* s1, > const char* s2, > const char* s3); > > > > > > > >static inline >ulint >ut_raw_to_hex( > > const void* raw, > ulint raw_size, > char* hex, > ulint hex_size); > > > > > > > >static inline >ulint >ut_str_sql_format( > > const char* str, > ulint str_len, > char* buf, > ulint buf_size); > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.ic" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.ic" >static inline >void* >ut_memcpy(void* dest, const void* src, ulint n) >{ > return(memcpy(dest, src, n)); >} > > > > > > > >static inline >void* >ut_memmove(void* dest, const void* src, ulint n) >{ > return(memmove(dest, src, 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* src) >{ > return(strcpy(dest, src)); >} > > > > >static inline >ulint >ut_strlen(const char* str) >{ > return(strlen(str)); >} > > > > > > >static inline >int >ut_strcmp(const char* str1, const char* str2) >{ > return(strcmp(str1, str2)); >} > > > > > > > >static inline >ulint >ut_raw_to_hex( > > const void* raw, > ulint raw_size, > char* hex, > ulint hex_size) >{ ># 152 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.ic" > static const uint16 hex_map[256] = { > (((uint16) ('0')) << 8 | (uint16) ('0')), (((uint16) ('1')) << 8 | (uint16) ('0')), (((uint16) ('2')) << 8 | (uint16) ('0')), (((uint16) ('3')) << 8 | (uint16) ('0')), (((uint16) ('4')) << 8 | (uint16) ('0')), (((uint16) ('5')) << 8 | (uint16) ('0')), (((uint16) ('6')) << 8 | (uint16) ('0')), (((uint16) ('7')) << 8 | (uint16) ('0')), (((uint16) ('8')) << 8 | (uint16) ('0')), (((uint16) ('9')) << 8 | (uint16) ('0')), (((uint16) ('A')) << 8 | (uint16) ('0')), (((uint16) ('B')) << 8 | (uint16) ('0')), (((uint16) ('C')) << 8 | (uint16) ('0')), (((uint16) ('D')) << 8 | (uint16) ('0')), (((uint16) ('E')) << 8 | (uint16) ('0')), (((uint16) ('F')) << 8 | (uint16) ('0')), > (((uint16) ('0')) << 8 | (uint16) ('1')), (((uint16) ('1')) << 8 | (uint16) ('1')), (((uint16) ('2')) << 8 | (uint16) ('1')), (((uint16) ('3')) << 8 | (uint16) ('1')), (((uint16) ('4')) << 8 | (uint16) ('1')), (((uint16) ('5')) << 8 | (uint16) ('1')), (((uint16) ('6')) << 8 | (uint16) ('1')), (((uint16) ('7')) << 8 | (uint16) ('1')), (((uint16) ('8')) << 8 | (uint16) ('1')), (((uint16) ('9')) << 8 | (uint16) ('1')), (((uint16) ('A')) << 8 | (uint16) ('1')), (((uint16) ('B')) << 8 | (uint16) ('1')), (((uint16) ('C')) << 8 | (uint16) ('1')), (((uint16) ('D')) << 8 | (uint16) ('1')), (((uint16) ('E')) << 8 | (uint16) ('1')), (((uint16) ('F')) << 8 | (uint16) ('1')), > (((uint16) ('0')) << 8 | (uint16) ('2')), (((uint16) ('1')) << 8 | (uint16) ('2')), (((uint16) ('2')) << 8 | (uint16) ('2')), (((uint16) ('3')) << 8 | (uint16) ('2')), (((uint16) ('4')) << 8 | (uint16) ('2')), (((uint16) ('5')) << 8 | (uint16) ('2')), (((uint16) ('6')) << 8 | (uint16) ('2')), (((uint16) ('7')) << 8 | (uint16) ('2')), (((uint16) ('8')) << 8 | (uint16) ('2')), (((uint16) ('9')) << 8 | (uint16) ('2')), (((uint16) ('A')) << 8 | (uint16) ('2')), (((uint16) ('B')) << 8 | (uint16) ('2')), (((uint16) ('C')) << 8 | (uint16) ('2')), (((uint16) ('D')) << 8 | (uint16) ('2')), (((uint16) ('E')) << 8 | (uint16) ('2')), (((uint16) ('F')) << 8 | (uint16) ('2')), > (((uint16) ('0')) << 8 | (uint16) ('3')), (((uint16) ('1')) << 8 | (uint16) ('3')), (((uint16) ('2')) << 8 | (uint16) ('3')), (((uint16) ('3')) << 8 | (uint16) ('3')), (((uint16) ('4')) << 8 | (uint16) ('3')), (((uint16) ('5')) << 8 | (uint16) ('3')), (((uint16) ('6')) << 8 | (uint16) ('3')), (((uint16) ('7')) << 8 | (uint16) ('3')), (((uint16) ('8')) << 8 | (uint16) ('3')), (((uint16) ('9')) << 8 | (uint16) ('3')), (((uint16) ('A')) << 8 | (uint16) ('3')), (((uint16) ('B')) << 8 | (uint16) ('3')), (((uint16) ('C')) << 8 | (uint16) ('3')), (((uint16) ('D')) << 8 | (uint16) ('3')), (((uint16) ('E')) << 8 | (uint16) ('3')), (((uint16) ('F')) << 8 | (uint16) ('3')), > (((uint16) ('0')) << 8 | (uint16) ('4')), (((uint16) ('1')) << 8 | (uint16) ('4')), (((uint16) ('2')) << 8 | (uint16) ('4')), (((uint16) ('3')) << 8 | (uint16) ('4')), (((uint16) ('4')) << 8 | (uint16) ('4')), (((uint16) ('5')) << 8 | (uint16) ('4')), (((uint16) ('6')) << 8 | (uint16) ('4')), (((uint16) ('7')) << 8 | (uint16) ('4')), (((uint16) ('8')) << 8 | (uint16) ('4')), (((uint16) ('9')) << 8 | (uint16) ('4')), (((uint16) ('A')) << 8 | (uint16) ('4')), (((uint16) ('B')) << 8 | (uint16) ('4')), (((uint16) ('C')) << 8 | (uint16) ('4')), (((uint16) ('D')) << 8 | (uint16) ('4')), (((uint16) ('E')) << 8 | (uint16) ('4')), (((uint16) ('F')) << 8 | (uint16) ('4')), > (((uint16) ('0')) << 8 | (uint16) ('5')), (((uint16) ('1')) << 8 | (uint16) ('5')), (((uint16) ('2')) << 8 | (uint16) ('5')), (((uint16) ('3')) << 8 | (uint16) ('5')), (((uint16) ('4')) << 8 | (uint16) ('5')), (((uint16) ('5')) << 8 | (uint16) ('5')), (((uint16) ('6')) << 8 | (uint16) ('5')), (((uint16) ('7')) << 8 | (uint16) ('5')), (((uint16) ('8')) << 8 | (uint16) ('5')), (((uint16) ('9')) << 8 | (uint16) ('5')), (((uint16) ('A')) << 8 | (uint16) ('5')), (((uint16) ('B')) << 8 | (uint16) ('5')), (((uint16) ('C')) << 8 | (uint16) ('5')), (((uint16) ('D')) << 8 | (uint16) ('5')), (((uint16) ('E')) << 8 | (uint16) ('5')), (((uint16) ('F')) << 8 | (uint16) ('5')), > (((uint16) ('0')) << 8 | (uint16) ('6')), (((uint16) ('1')) << 8 | (uint16) ('6')), (((uint16) ('2')) << 8 | (uint16) ('6')), (((uint16) ('3')) << 8 | (uint16) ('6')), (((uint16) ('4')) << 8 | (uint16) ('6')), (((uint16) ('5')) << 8 | (uint16) ('6')), (((uint16) ('6')) << 8 | (uint16) ('6')), (((uint16) ('7')) << 8 | (uint16) ('6')), (((uint16) ('8')) << 8 | (uint16) ('6')), (((uint16) ('9')) << 8 | (uint16) ('6')), (((uint16) ('A')) << 8 | (uint16) ('6')), (((uint16) ('B')) << 8 | (uint16) ('6')), (((uint16) ('C')) << 8 | (uint16) ('6')), (((uint16) ('D')) << 8 | (uint16) ('6')), (((uint16) ('E')) << 8 | (uint16) ('6')), (((uint16) ('F')) << 8 | (uint16) ('6')), > (((uint16) ('0')) << 8 | (uint16) ('7')), (((uint16) ('1')) << 8 | (uint16) ('7')), (((uint16) ('2')) << 8 | (uint16) ('7')), (((uint16) ('3')) << 8 | (uint16) ('7')), (((uint16) ('4')) << 8 | (uint16) ('7')), (((uint16) ('5')) << 8 | (uint16) ('7')), (((uint16) ('6')) << 8 | (uint16) ('7')), (((uint16) ('7')) << 8 | (uint16) ('7')), (((uint16) ('8')) << 8 | (uint16) ('7')), (((uint16) ('9')) << 8 | (uint16) ('7')), (((uint16) ('A')) << 8 | (uint16) ('7')), (((uint16) ('B')) << 8 | (uint16) ('7')), (((uint16) ('C')) << 8 | (uint16) ('7')), (((uint16) ('D')) << 8 | (uint16) ('7')), (((uint16) ('E')) << 8 | (uint16) ('7')), (((uint16) ('F')) << 8 | (uint16) ('7')), > (((uint16) ('0')) << 8 | (uint16) ('8')), (((uint16) ('1')) << 8 | (uint16) ('8')), (((uint16) ('2')) << 8 | (uint16) ('8')), (((uint16) ('3')) << 8 | (uint16) ('8')), (((uint16) ('4')) << 8 | (uint16) ('8')), (((uint16) ('5')) << 8 | (uint16) ('8')), (((uint16) ('6')) << 8 | (uint16) ('8')), (((uint16) ('7')) << 8 | (uint16) ('8')), (((uint16) ('8')) << 8 | (uint16) ('8')), (((uint16) ('9')) << 8 | (uint16) ('8')), (((uint16) ('A')) << 8 | (uint16) ('8')), (((uint16) ('B')) << 8 | (uint16) ('8')), (((uint16) ('C')) << 8 | (uint16) ('8')), (((uint16) ('D')) << 8 | (uint16) ('8')), (((uint16) ('E')) << 8 | (uint16) ('8')), (((uint16) ('F')) << 8 | (uint16) ('8')), > (((uint16) ('0')) << 8 | (uint16) ('9')), (((uint16) ('1')) << 8 | (uint16) ('9')), (((uint16) ('2')) << 8 | (uint16) ('9')), (((uint16) ('3')) << 8 | (uint16) ('9')), (((uint16) ('4')) << 8 | (uint16) ('9')), (((uint16) ('5')) << 8 | (uint16) ('9')), (((uint16) ('6')) << 8 | (uint16) ('9')), (((uint16) ('7')) << 8 | (uint16) ('9')), (((uint16) ('8')) << 8 | (uint16) ('9')), (((uint16) ('9')) << 8 | (uint16) ('9')), (((uint16) ('A')) << 8 | (uint16) ('9')), (((uint16) ('B')) << 8 | (uint16) ('9')), (((uint16) ('C')) << 8 | (uint16) ('9')), (((uint16) ('D')) << 8 | (uint16) ('9')), (((uint16) ('E')) << 8 | (uint16) ('9')), (((uint16) ('F')) << 8 | (uint16) ('9')), > (((uint16) ('0')) << 8 | (uint16) ('A')), (((uint16) ('1')) << 8 | (uint16) ('A')), (((uint16) ('2')) << 8 | (uint16) ('A')), (((uint16) ('3')) << 8 | (uint16) ('A')), (((uint16) ('4')) << 8 | (uint16) ('A')), (((uint16) ('5')) << 8 | (uint16) ('A')), (((uint16) ('6')) << 8 | (uint16) ('A')), (((uint16) ('7')) << 8 | (uint16) ('A')), (((uint16) ('8')) << 8 | (uint16) ('A')), (((uint16) ('9')) << 8 | (uint16) ('A')), (((uint16) ('A')) << 8 | (uint16) ('A')), (((uint16) ('B')) << 8 | (uint16) ('A')), (((uint16) ('C')) << 8 | (uint16) ('A')), (((uint16) ('D')) << 8 | (uint16) ('A')), (((uint16) ('E')) << 8 | (uint16) ('A')), (((uint16) ('F')) << 8 | (uint16) ('A')), > (((uint16) ('0')) << 8 | (uint16) ('B')), (((uint16) ('1')) << 8 | (uint16) ('B')), (((uint16) ('2')) << 8 | (uint16) ('B')), (((uint16) ('3')) << 8 | (uint16) ('B')), (((uint16) ('4')) << 8 | (uint16) ('B')), (((uint16) ('5')) << 8 | (uint16) ('B')), (((uint16) ('6')) << 8 | (uint16) ('B')), (((uint16) ('7')) << 8 | (uint16) ('B')), (((uint16) ('8')) << 8 | (uint16) ('B')), (((uint16) ('9')) << 8 | (uint16) ('B')), (((uint16) ('A')) << 8 | (uint16) ('B')), (((uint16) ('B')) << 8 | (uint16) ('B')), (((uint16) ('C')) << 8 | (uint16) ('B')), (((uint16) ('D')) << 8 | (uint16) ('B')), (((uint16) ('E')) << 8 | (uint16) ('B')), (((uint16) ('F')) << 8 | (uint16) ('B')), > (((uint16) ('0')) << 8 | (uint16) ('C')), (((uint16) ('1')) << 8 | (uint16) ('C')), (((uint16) ('2')) << 8 | (uint16) ('C')), (((uint16) ('3')) << 8 | (uint16) ('C')), (((uint16) ('4')) << 8 | (uint16) ('C')), (((uint16) ('5')) << 8 | (uint16) ('C')), (((uint16) ('6')) << 8 | (uint16) ('C')), (((uint16) ('7')) << 8 | (uint16) ('C')), (((uint16) ('8')) << 8 | (uint16) ('C')), (((uint16) ('9')) << 8 | (uint16) ('C')), (((uint16) ('A')) << 8 | (uint16) ('C')), (((uint16) ('B')) << 8 | (uint16) ('C')), (((uint16) ('C')) << 8 | (uint16) ('C')), (((uint16) ('D')) << 8 | (uint16) ('C')), (((uint16) ('E')) << 8 | (uint16) ('C')), (((uint16) ('F')) << 8 | (uint16) ('C')), > (((uint16) ('0')) << 8 | (uint16) ('D')), (((uint16) ('1')) << 8 | (uint16) ('D')), (((uint16) ('2')) << 8 | (uint16) ('D')), (((uint16) ('3')) << 8 | (uint16) ('D')), (((uint16) ('4')) << 8 | (uint16) ('D')), (((uint16) ('5')) << 8 | (uint16) ('D')), (((uint16) ('6')) << 8 | (uint16) ('D')), (((uint16) ('7')) << 8 | (uint16) ('D')), (((uint16) ('8')) << 8 | (uint16) ('D')), (((uint16) ('9')) << 8 | (uint16) ('D')), (((uint16) ('A')) << 8 | (uint16) ('D')), (((uint16) ('B')) << 8 | (uint16) ('D')), (((uint16) ('C')) << 8 | (uint16) ('D')), (((uint16) ('D')) << 8 | (uint16) ('D')), (((uint16) ('E')) << 8 | (uint16) ('D')), (((uint16) ('F')) << 8 | (uint16) ('D')), > (((uint16) ('0')) << 8 | (uint16) ('E')), (((uint16) ('1')) << 8 | (uint16) ('E')), (((uint16) ('2')) << 8 | (uint16) ('E')), (((uint16) ('3')) << 8 | (uint16) ('E')), (((uint16) ('4')) << 8 | (uint16) ('E')), (((uint16) ('5')) << 8 | (uint16) ('E')), (((uint16) ('6')) << 8 | (uint16) ('E')), (((uint16) ('7')) << 8 | (uint16) ('E')), (((uint16) ('8')) << 8 | (uint16) ('E')), (((uint16) ('9')) << 8 | (uint16) ('E')), (((uint16) ('A')) << 8 | (uint16) ('E')), (((uint16) ('B')) << 8 | (uint16) ('E')), (((uint16) ('C')) << 8 | (uint16) ('E')), (((uint16) ('D')) << 8 | (uint16) ('E')), (((uint16) ('E')) << 8 | (uint16) ('E')), (((uint16) ('F')) << 8 | (uint16) ('E')), > (((uint16) ('0')) << 8 | (uint16) ('F')), (((uint16) ('1')) << 8 | (uint16) ('F')), (((uint16) ('2')) << 8 | (uint16) ('F')), (((uint16) ('3')) << 8 | (uint16) ('F')), (((uint16) ('4')) << 8 | (uint16) ('F')), (((uint16) ('5')) << 8 | (uint16) ('F')), (((uint16) ('6')) << 8 | (uint16) ('F')), (((uint16) ('7')) << 8 | (uint16) ('F')), (((uint16) ('8')) << 8 | (uint16) ('F')), (((uint16) ('9')) << 8 | (uint16) ('F')), (((uint16) ('A')) << 8 | (uint16) ('F')), (((uint16) ('B')) << 8 | (uint16) ('F')), (((uint16) ('C')) << 8 | (uint16) ('F')), (((uint16) ('D')) << 8 | (uint16) ('F')), (((uint16) ('E')) << 8 | (uint16) ('F')), (((uint16) ('F')) << 8 | (uint16) ('F')) > }; > const unsigned char* rawc; > ulint read_bytes; > ulint write_bytes; > ulint i; > > rawc = (const unsigned char*) raw; > > if (hex_size == 0) { > > return(0); > } > > if (hex_size <= 2 * raw_size) { > > read_bytes = hex_size / 2; > write_bytes = hex_size; > } else { > > read_bytes = raw_size; > write_bytes = 2 * raw_size + 1; > } ># 199 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.ic" > if (ut_align_offset(hex, 2) == 0) { > > for (i = 0; i < read_bytes; i++) { *(uint16*) hex = hex_map[*rawc]; hex += 2; rawc++; } > > ; > } else { > > for (i = 0; i < read_bytes; i++) { *hex = ((char) ((hex_map[*rawc]) & 0xFF)); *(hex + 1) = ((char) ((hex_map[*rawc]) >> 8)); hex += 2; rawc++; } > > > ; > } > > if (hex_size <= 2 * raw_size && hex_size % 2 == 0) { > > hex--; > } > > *hex = '\0'; > > return(write_bytes); >} > > > > > > > >static inline >ulint >ut_str_sql_format( > > const char* str, > ulint str_len, > char* buf, > ulint buf_size) > >{ > ulint str_i; > ulint buf_i; > > buf_i = 0; > > switch (buf_size) { > case 3: > > if (str_len == 0) { > > buf[buf_i] = '\''; > buf_i++; > buf[buf_i] = '\''; > buf_i++; > } > > case 2: > case 1: > > buf[buf_i] = '\0'; > buf_i++; > > case 0: > > return(buf_i); > } > > > > buf[0] = '\''; > buf_i = 1; > > for (str_i = 0; str_i < str_len; str_i++) { > > char ch; > > if (buf_size - buf_i == 2) { > > break; > } > > ch = str[str_i]; > > switch (ch) { > case '\0': > > if (buf_size - buf_i < 4) { > > goto func_exit; > } > buf[buf_i] = '\\'; > buf_i++; > buf[buf_i] = '0'; > buf_i++; > break; > case '\'': > case '\\': > > if (buf_size - buf_i < 4) { > > goto func_exit; > } > buf[buf_i] = ch; > buf_i++; > > default: > > buf[buf_i] = ch; > buf_i++; > } > } > >func_exit: > > buf[buf_i] = '\''; > buf_i++; > buf[buf_i] = '\0'; > buf_i++; > > return(buf_i); >} ># 130 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mem.h" 2 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" 2 > > > ># 1 "/usr/include/c++/4.8.2/memory" 1 3 ># 46 "/usr/include/c++/4.8.2/memory" 3 ># 47 "/usr/include/c++/4.8.2/memory" 3 ># 67 "/usr/include/c++/4.8.2/memory" 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_raw_storage_iter.h" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/stl_raw_storage_iter.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > > > > > template <class _OutputIterator, class _Tp> > class raw_storage_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > protected: > _OutputIterator _M_iter; > > public: > explicit > raw_storage_iterator(_OutputIterator __x) > : _M_iter(__x) {} > > raw_storage_iterator& > operator*() { return *this; } > > raw_storage_iterator& > operator=(const _Tp& __element) > { > std::_Construct(std::__addressof(*_M_iter), __element); > return *this; > } > > raw_storage_iterator<_OutputIterator, _Tp>& > operator++() > { > ++_M_iter; > return *this; > } > > raw_storage_iterator<_OutputIterator, _Tp> > operator++(int) > { > raw_storage_iterator<_OutputIterator, _Tp> __tmp = *this; > ++_M_iter; > return __tmp; > } > }; > > >} ># 68 "/usr/include/c++/4.8.2/memory" 2 3 ># 87 "/usr/include/c++/4.8.2/memory" 3 ># 1 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 1 3 ># 36 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 47 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > template<typename _Tp1> > struct auto_ptr_ref > { > _Tp1* _M_ptr; > > explicit > auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } > } ; ># 86 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > template<typename _Tp> > class auto_ptr > { > private: > _Tp* _M_ptr; > > public: > > typedef _Tp element_type; > > > > > > > > explicit > auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } ># 112 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } ># 124 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > template<typename _Tp1> > auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } ># 135 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > auto_ptr& > operator=(auto_ptr& __a) throw() > { > reset(__a.release()); > return *this; > } ># 152 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > template<typename _Tp1> > auto_ptr& > operator=(auto_ptr<_Tp1>& __a) throw() > { > reset(__a.release()); > return *this; > } ># 170 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > ~auto_ptr() { delete _M_ptr; } ># 180 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > element_type& > operator*() const throw() > { > ; > return *_M_ptr; > } > > > > > > > > element_type* > operator->() const throw() > { > ; > return _M_ptr; > } ># 210 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > element_type* > get() const throw() { return _M_ptr; } ># 224 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > element_type* > release() throw() > { > element_type* __tmp = _M_ptr; > _M_ptr = 0; > return __tmp; > } ># 239 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > void > reset(element_type* __p = 0) throw() > { > if (__p != _M_ptr) > { > delete _M_ptr; > _M_ptr = __p; > } > } ># 260 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > auto_ptr(auto_ptr_ref<element_type> __ref) throw() > : _M_ptr(__ref._M_ptr) { } > > auto_ptr& > operator=(auto_ptr_ref<element_type> __ref) throw() > { > if (__ref._M_ptr != this->get()) > { > delete _M_ptr; > _M_ptr = __ref._M_ptr; > } > return *this; > } > > template<typename _Tp1> > operator auto_ptr_ref<_Tp1>() throw() > { return auto_ptr_ref<_Tp1>(this->release()); } > > template<typename _Tp1> > operator auto_ptr<_Tp1>() throw() > { return auto_ptr<_Tp1>(this->release()); } > } ; > > > > template<> > class auto_ptr<void> > { > public: > typedef void element_type; > } ; ># 326 "/usr/include/c++/4.8.2/backward/auto_ptr.h" 3 > >} ># 88 "/usr/include/c++/4.8.2/memory" 2 3 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" 2 > > > > > >typedef struct mem_block_info_t mem_block_t; > > >typedef mem_block_t mem_heap_t; ># 117 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" >static inline >mem_heap_t* >mem_heap_create_func( > ulint size, > > > > > ulint type); > > > > >static inline >void >mem_heap_free( > mem_heap_t* heap); > > > > > > >static inline >void* >mem_heap_zalloc( > mem_heap_t* heap, > ulint n); > > > > > > > >static inline >void* >mem_heap_alloc( > mem_heap_t* heap, > ulint n); > > > > >static inline >byte* >mem_heap_get_heap_top( > mem_heap_t* heap); > > > > > > >static inline >void >mem_heap_free_heap_top( > mem_heap_t* heap, > byte* 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); > > > > >static inline >char* >mem_strdup( > > const char* str); > > > >static inline >char* >mem_strdupl( > > const char* str, > ulint len); > > > > > > >inline >void* >mem_heap_dup(mem_heap_t* heap, const void* data, size_t len) >{ > do { } while(0); > return __builtin_expect(data != __null, (1)) > ? memcpy(mem_heap_alloc(heap, len), data, len) > : __null; >} > > > > > >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); > > > > >char* >mem_heap_strcat( > > mem_heap_t* heap, > const char* s1, > const char* s2); > > > > > > > >char* >mem_heap_printf( > > mem_heap_t* heap, > const char* format, > ...) __attribute__((format (printf, 2, 3))); > > > >static inline >void >mem_block_validate( > const mem_heap_t* heap); ># 310 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" >struct mem_block_info_t { > ulint magic_n; > > > > > ut_list_base<mem_block_t, ut_list_node<mem_block_t> mem_block_t::*> base; > > > ut_list_node<mem_block_t> list; > > > > ulint len; > ulint total_size; > > > ulint type; > > ulint free; > > ulint start; > > > void* free_block; > > > > > > void* buf_block; > > > >}; ># 353 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.ic" 1 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.ic" >mem_block_t* >mem_heap_create_block_func( > > mem_heap_t* heap, > > ulint n, > > > > > ulint type); > > > > >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) >{ > do { } while(0); > > 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) >{ > do { } while(0) > ; > > 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) >{ > do { } while(0); > do { } while(0); > > 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) >{ > do { } while(0); > > block->start = start; >} > >static inline >ulint >mem_block_get_start(mem_block_t* block) >{ > return(block->start); >} > > > >static inline >void >mem_block_validate( > const mem_block_t* block) >{ > do { if (__builtin_expect(!(ulint) (block->magic_n == 764741555), (0))) { ut_dbg_assertion_failed("block->magic_n == MEM_BLOCK_MAGIC_N", "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.ic", 154); } } while (0); >} > > > > > > >static inline >void* >mem_heap_zalloc( > mem_heap_t* heap, > ulint n) >{ > do { } while(0); > do { } while(0); > return(memset(mem_heap_alloc(heap, n), 0, n)); >} > > > > > > > >static inline >void* >mem_heap_alloc( > mem_heap_t* heap, > ulint n) >{ > mem_block_t* block; > byte* buf; > ulint free; > > ; > > block = (heap->base).end; > > n += 0; > > do { } while(0); > > > > > if (mem_block_get_len(block) > < mem_block_get_free(block) + (((n) + 8U - 1) & ~(8U - 1))) { > > block = mem_heap_add_block(heap, n); > > if (block == __null) { > > return(__null); > } > } > > free = mem_block_get_free(block); > > buf = (byte*) block + free; > > mem_block_set_free(block, free + (((n) + 8U - 1) & ~(8U - 1))); > > buf = buf + 0; > ((void) (buf), (void) (n - 0)); > return(buf); >} > > > > >static inline >byte* >mem_heap_get_heap_top( > mem_heap_t* heap) >{ > mem_block_t* block; > byte* buf; > > ; > > block = (heap->base).end; > > buf = (byte*) block + mem_block_get_free(block); > > return(buf); >} > > > > > > >static inline >void >mem_heap_free_heap_top( > mem_heap_t* heap, > byte* old_top) >{ > mem_block_t* block; > mem_block_t* prev_block; > > ; > > block = (heap->base).end; > > while (block != __null) { > if (((byte*) block + mem_block_get_free(block) >= old_top) > && ((byte*) block <= old_top)) { > > > break; > } > > > > > prev_block = (((block)->list).prev); > > mem_heap_block_free(heap, block); > > block = prev_block; > } > > do { } while(0); > > > mem_block_set_free(block, old_top - (byte*) block); > > do { } while(0); > ((void) 0); > > > > > 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, (byte*) 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; > byte* buf; > > ; > > block = (heap->base).end; > > buf = (byte*) block + mem_block_get_free(block) - (((n) + 8U - 1) & ~(8U - 1)); > > return((void*) buf); >} > > > > >static inline >void >mem_heap_free_top( > > mem_heap_t* heap, > ulint n) >{ > mem_block_t* block; > > ; > > n += 0; > > block = (heap->base).end; > > > mem_block_set_free(block, mem_block_get_free(block) > - (((n) + 8U - 1) & ~(8U - 1))); > > > > > if ((heap != block) && (mem_block_get_free(block) > == mem_block_get_start(block))) { > mem_heap_block_free(heap, block); > } else { > ((void) 0); > } >} ># 376 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.ic" >static inline >mem_heap_t* >mem_heap_create_func( > ulint size, > > > > > ulint type) >{ > mem_block_t* block; > > if (!size) { > size = 64; > } > > block = mem_heap_create_block_func(__null, size, type); > > if (block == __null) { > > return(__null); > } > > > > do { } while(0); > > { (block->base).count = 0; (block->base).start = 0; (block->base).end = 0; (block->base).node = &mem_block_t::list; ; }; > > > ut_list_prepend(block->base, block); > > return(block); >} > > > > >static inline >void >mem_heap_free( > mem_heap_t* heap) >{ > mem_block_t* block; > mem_block_t* prev_block; > > ; > > block = (heap->base).end; > > if (heap->free_block) { > mem_heap_free_block_free(heap); > } > > while (block != __null) { > > > > prev_block = (((block)->list).prev); > > mem_heap_block_free(heap, block); > > block = prev_block; > } >} > > > >static inline >ulint >mem_heap_get_size( > > mem_heap_t* heap) >{ > ulint size = 0; > > ; > > size = heap->total_size; > > if (heap->free_block) { > size += ((ulint) srv_page_size); > } > > return(size); >} > > > > >static inline >char* >mem_strdup( > > const char* str) >{ > ulint len = strlen(str) + 1; > return(static_cast<char*>(memcpy(::malloc(len), str, len))); >} > > > > >static inline >char* >mem_strdupl( > > const char* str, > ulint len) >{ > char* s = static_cast<char*>(::malloc(len + 1)); > s[len] = 0; > return(static_cast<char*>(memcpy(s, str, len))); >} > > > > > >static inline >char* >mem_heap_strdupl( > > mem_heap_t* heap, > const char* str, > ulint len) >{ > char* s = (char*) mem_heap_alloc(heap, len + 1); > s[len] = 0; > return((char*) memcpy(s, str, len)); >} ># 354 "/buildbot/mariadb-10.2.31/storage/innobase/include/mem0mem.h" 2 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0types.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0types.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0types.h" 2 > >struct dict_sys_t; >struct dict_col_t; >struct dict_field_t; >struct dict_index_t; >struct dict_table_t; >struct dict_foreign_t; >struct dict_v_col_t; > >struct ind_node_t; >struct tab_node_t; >struct dict_add_v_col_t; ># 52 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0types.h" >typedef ib_id_t table_id_t; >typedef ib_id_t index_id_t; > > > > > > >enum dict_err_ignore_t { > DICT_ERR_IGNORE_NONE = 0, > DICT_ERR_IGNORE_FK_NOKEY = 1, > > DICT_ERR_IGNORE_INDEX_ROOT = 2, > > DICT_ERR_IGNORE_CORRUPT = 4, > DICT_ERR_IGNORE_RECOVER_LOCK = 8, > > > > > > > DICT_ERR_IGNORE_ALL = 15, > > DICT_ERR_IGNORE_DROP = 31 >}; > > >enum ib_quiesce_t { > QUIESCE_NONE, > QUIESCE_START, > QUIESCE_COMPLETE >}; > > >typedef ib_mutex_t DictSysMutex; ># 118 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0types.h" >enum spatial_status_t { > > SPATIAL_UNKNOWN = 0, > > > SPATIAL_NONE = 1, > > > SPATIAL_MIXED = 2, > > > SPATIAL_ONLY = 3 >}; ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0types.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0types.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0types.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0types.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0types.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0types.h" >typedef byte rec_t; > > >typedef unsigned short int offset_t; ># 70 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0types.h" >enum rec_format_enum { > REC_FORMAT_REDUNDANT = 0, > REC_FORMAT_COMPACT = 1, > REC_FORMAT_COMPRESSED = 2, > REC_FORMAT_DYNAMIC = 3 >}; >typedef enum rec_format_enum rec_format_t; ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0types.h" 2 > > > > > > >typedef byte ib_page_t; > > >struct page_cur_t; > > >typedef byte page_zip_t; ># 64 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0types.h" >enum page_cur_mode_t { > PAGE_CUR_UNSUPP = 0, > PAGE_CUR_G = 1, > PAGE_CUR_GE = 2, > PAGE_CUR_L = 3, > PAGE_CUR_LE = 4, > > > > > > > > PAGE_CUR_CONTAIN = 7, > PAGE_CUR_INTERSECT = 8, > PAGE_CUR_WITHIN = 9, > PAGE_CUR_DISJOINT = 10, > PAGE_CUR_MBR_EQUAL = 11, > PAGE_CUR_RTREE_INSERT = 12, > PAGE_CUR_RTREE_LOCATE = 13, > PAGE_CUR_RTREE_GET_FATHER = 14 >}; > > > > >struct redo_page_compress_t { > ulint type; > index_id_t index_id; > ulint n_fields; > ulint field_len; > const byte* fields; > ulint trx_id_pos; >}; > > >struct page_zip_des_t >{ > page_zip_t* data; > > > > > > > unsigned m_end:16; > unsigned m_nonempty:1; > > unsigned n_blobs:12; > > > unsigned ssize:3; > > > >}; > > >struct page_zip_stat_t { > > ulint compressed; > > ulint compressed_ok; > > ulint decompressed; > > ib_uint64_t compressed_usec; > > ib_uint64_t decompressed_usec; > page_zip_stat_t() : > > > > compressed(0), > compressed_ok(0), > decompressed(0), > compressed_usec(0), > decompressed_usec(0) > { } >}; > > >typedef std::map< > index_id_t, > page_zip_stat_t, > std::less<index_id_t>, > ut_allocator<std::pair<const index_id_t, page_zip_stat_t> > > > page_zip_stat_per_index_t; > > >extern page_zip_stat_t page_zip_stat[(14 - 10 + 1)]; > >extern page_zip_stat_per_index_t page_zip_stat_per_index; > > > > >void >page_zip_rec_set_deleted( > > page_zip_des_t* page_zip, > const byte* rec, > ulint flag) > __attribute__((nonnull)); > > > > >void >page_zip_rec_set_owned( > > page_zip_des_t* page_zip, > const byte* rec, > ulint flag) > __attribute__((nonnull)); > > > >void >page_zip_dir_delete( > > page_zip_des_t* page_zip, > byte* rec, > dict_index_t* index, > const offset_t* offsets, > const byte* free) > __attribute__((nonnull(1,2,3,4))); > > > >void >page_zip_dir_add_slot( > > page_zip_des_t* page_zip, > ulint is_clustered) > > __attribute__((nonnull)); ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0types.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0size.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0size.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0types.h" 1 ># 84 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0types.h" >typedef byte fseg_header_t; ># 145 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0types.h" >enum fsp_reserve_t { > FSP_NORMAL, > FSP_UNDO, > FSP_CLEANING, > FSP_BLOB >}; ># 194 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0types.h" >inline >bool >fsp_is_system_temporary(ulint space_id) >{ > return(space_id == 0xFFFFFFFEU); >} ># 376 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0types.h" >__attribute__((warn_unused_result, const)) >static inline >bool >fsp_flags_is_valid(ulint flags, bool is_ibd) >{ > do { } while(0) > ; > if (flags == 0) { > return(true); > } > if (flags & ~(~(~0U << (1 + 4 + 1 + 4 + 6 + 1)))) { > return(false); > } > if ((flags & (((~(~0U << 1)) << 0) | ((~(~0U << 1)) << ((0 + 1) + 4)))) > == ((~(~0U << 1)) << ((0 + 1) + 4))) { > > > > > return(false); > } > > > > > > > if (((flags & ((~(~0U << 6)) << ((((0 + 1) + 4) + 1) + 4))) >> ((((0 + 1) + 4) + 1) + 4)) & ~1U) { > return(false); > } > > const ulint ssize = ((flags & ((~(~0U << 4)) << (((0 + 1) + 4) + 1))) >> (((0 + 1) + 4) + 1)); > if (ssize == 1 || ssize == 2 || ssize == 5 || ssize & 8) { > > > return(false); > } > const ulint zssize = ((flags & ((~(~0U << 4)) << (0 + 1))) >> (0 + 1)); > if (zssize == 0) { > > } else if (zssize > (ssize ? ssize : 5)) { > > return(false); > } else if (~flags & (((~(~0U << 1)) << 0) > | ((~(~0U << 1)) << ((0 + 1) + 4)))) { > > > return(false); > } > > > > > > > return(ssize == 0 || !is_ibd || srv_page_size != (1U << 14)); >} ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0size.h" 2 > > > > > > >extern const byte field_ref_zero[20]; > > > > > >class page_size_t { >public: > > > > > page_size_t(ulint physical, ulint logical, bool is_compressed) > { > if (physical == 0) { > physical = (1U << 14); > } > if (logical == 0) { > logical = (1U << 14); > } > > m_physical = static_cast<unsigned>(physical); > m_logical = static_cast<unsigned>(logical); > m_is_compressed = static_cast<unsigned>(is_compressed); > > do { } while(0); > do { } while(0); > > do { } while(0); > do { } while(0); > > do { } while(0); > do { } while(0); > do { } while(0); > } > > > > explicit page_size_t(ulint fsp_flags) > { > ulint ssize = ((fsp_flags & ((~(~0U << 4)) << (((0 + 1) + 4) + 1))) >> (((0 + 1) + 4) + 1)); > > > > ssize = (0 == ssize) ? (14 - 9) : ssize; > > > const unsigned size = (((1U << 10) >> 1) << ssize); > > do { } while(0); > do { } while(0); > > m_logical = size; > > ssize = ((fsp_flags & ((~(~0U << 4)) << (0 + 1))) >> (0 + 1)); > > > > > if (ssize == 0) { > m_is_compressed = false; > m_physical = m_logical; > } else { > m_is_compressed = true; > > > > const unsigned phy > = (((1U << 10) >> 1) << ssize); > > do { } while(0); > do { } while(0); > > m_physical = phy; > } > } > > > > inline ulint physical() const > { > do { } while(0); > > return(m_physical); > } > > > > inline ulint logical() const > { > do { } while(0); > return(m_logical); > } > > > > inline bool is_compressed() const > { > return(m_is_compressed); > } > > > > inline void copy_from(const page_size_t& src) > { > *this = src; > } > > > > > inline bool equals_to(const page_size_t& a) const > { > return(a.physical() == m_physical > && a.logical() == m_logical > && a.is_compressed() == m_is_compressed); > } > >private: ># 168 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0size.h" > unsigned m_physical:17; > > > unsigned m_logical:17; > > > > unsigned m_is_compressed:1; >}; > > > > > > >inline >std::ostream& >operator<<( > std::ostream& out, > const page_size_t& obj) >{ > out << "[page size: physical=" << obj.physical() > << ", logical=" << obj.logical() > << ", compressed=" << obj.is_compressed() << "]"; > return(out); >} > >extern page_size_t univ_page_size; ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0types.h" 2 > > > >struct btr_pcur_t; > >struct btr_cur_t; > >struct btr_search_t; > > > > >extern char btr_search_enabled; > > >extern ulong btr_ahi_parts; ># 60 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0types.h" >struct btr_create_t { > > explicit btr_create_t(const byte* const ptr) > : > format_flags(), > n_fields(), > field_len(), > fields(ptr), > trx_id_pos(((ulint)(-1))) > { > > } > > > ulint format_flags; > > > ulint n_fields; > > > ulint field_len; > > > const byte* const fields; > > > ulint trx_id_pos; >}; ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 2 > > > > > >struct big_rec_t; >struct upd_t; > > > > >; > > > >static inline >void >dfield_set_type( > > dfield_t* field, > const dtype_t* type); > > > >static inline >void >dfield_set_len( > > dfield_t* field, > ulint len) > __attribute__((nonnull)); > > > >static inline >spatial_status_t >dfield_get_spatial_status( > const dfield_t* field); > > > > >static inline >void >dfield_set_spatial_status( > dfield_t* field, > spatial_status_t spatial_status); > > > >static inline >void >dfield_set_data( > > dfield_t* field, > const void* data, > ulint len) > __attribute__((nonnull(1))); > > >static inline >void >dfield_write_mbr( > > dfield_t* field, > const double* mbr) > __attribute__((nonnull(1))); > > >static inline >void >dfield_set_null( > > dfield_t* field) > __attribute__((nonnull)); > > >static inline >void >data_write_sql_null( > > byte* data, > ulint len) > __attribute__((nonnull)); > > >static inline >void >dfield_copy_data( > > dfield_t* field1, > const dfield_t* field2); > > > >static inline >void >dfield_copy( > > dfield_t* field1, > const dfield_t* field2) > __attribute__((nonnull)); > > >static inline >void >dfield_dup( > > dfield_t* field, > mem_heap_t* heap) > __attribute__((nonnull)); > > > > > > >static inline >ulint >dfield_datas_are_binary_equal( > > const dfield_t* field1, > const dfield_t* field2, > ulint len) > > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dfield_data_is_binary_equal( > > const dfield_t* field, > ulint len, > const byte* data) > __attribute__((nonnull(1), warn_unused_result)); > > > > >static inline >ulint >dtuple_get_info_bits( > > const dtuple_t* tuple) > __attribute__((nonnull, warn_unused_result)); > > >static inline >void >dtuple_set_info_bits( > > dtuple_t* tuple, > ulint info_bits) > __attribute__((nonnull)); > > > >static inline >ulint >dtuple_get_n_fields_cmp( > > const dtuple_t* tuple) > __attribute__((nonnull, warn_unused_result)); > > >static inline >void >dtuple_set_n_fields_cmp( > > dtuple_t* tuple, > ulint n_fields_cmp) > > __attribute__((nonnull)); ># 225 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" >static inline >dtuple_t* >dtuple_create_from_mem( > void* buf, > ulint buf_size, > ulint n_fields, > ulint n_v_fields) > __attribute__((nonnull, warn_unused_result)); > > > > > >static inline >dtuple_t* >dtuple_create( > > mem_heap_t* heap, > > > ulint n_fields) > __attribute__((nonnull, malloc)); > > > >static inline void dtuple_init_v_fld(dtuple_t* vrow); > > > > >static inline void dtuple_dup_v_fld(dtuple_t* vrow, mem_heap_t* heap); > > > > > > >static inline >dtuple_t* >dtuple_create_with_vcol( > mem_heap_t* heap, > ulint n_fields, > ulint n_v_fields); > > > > >void >dtuple_set_n_fields( > > dtuple_t* tuple, > ulint n_fields) > __attribute__((nonnull)); > > > >static inline >void >dtuple_copy_v_fields( > dtuple_t* d_tuple, > const dtuple_t* s_tuple); > > > > >static inline >dtuple_t* >dtuple_copy( > > const dtuple_t* tuple, > mem_heap_t* heap) > > __attribute__((nonnull, malloc)); > > > > >static inline >ulint >dtuple_get_data_size( > > const dtuple_t* tuple, > ulint comp) > __attribute__((nonnull)); > > > >static inline >ulint >dtuple_get_n_ext( > > const dtuple_t* tuple) > __attribute__((nonnull)); > > > > > >int >dtuple_coll_cmp( > const dtuple_t* tuple1, > const dtuple_t* tuple2) > __attribute__((warn_unused_result)); > > > > > > >static inline >ulint >dtuple_fold( > const dtuple_t* tuple, > ulint n_fields, > ulint n_bytes, > index_id_t tree_id) > __attribute__((warn_unused_result)); > > >static inline >void >dtuple_set_types_binary( > > dtuple_t* tuple, > ulint n) > __attribute__((nonnull)); > > > >static inline >ulint >dtuple_contains_null( > > const dtuple_t* tuple) > __attribute__((nonnull, warn_unused_result)); > > > >ulint >dfield_check_typed( > > const dfield_t* field) > __attribute__((nonnull, warn_unused_result)); > > > >ulint >dtuple_check_typed( > > const dtuple_t* tuple) > __attribute__((nonnull, warn_unused_result)); ># 389 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" >void >dfield_print( > > const dfield_t* dfield) > __attribute__((nonnull)); > > > >void >dfield_print_also_hex( > > const dfield_t* dfield) > __attribute__((nonnull)); > > >void >dtuple_print( > > FILE* f, > const dtuple_t* tuple) > __attribute__((nonnull)); > > > > > >void >dfield_print( > std::ostream& o, > const dfield_t* field, > ulint n); > > > >void >dtuple_print( > std::ostream& o, > const dtuple_t* tuple); > > > > >inline >std::ostream& >operator<<(std::ostream& o, const dtuple_t& tuple) >{ > dtuple_print(o, &tuple); > return(o); >} ># 447 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" >big_rec_t* >dtuple_convert_big_rec( > > dict_index_t* index, > upd_t* upd, > dtuple_t* entry, > ulint* n_ext) > > __attribute__((malloc, warn_unused_result)); > > > > >void >dtuple_convert_back_big_rec( > > dict_index_t* index, > dtuple_t* entry, > big_rec_t* vector) > > __attribute__((nonnull)); > > >static inline >void >dtuple_big_rec_free( > > big_rec_t* vector) > > __attribute__((nonnull)); > > > > >struct dfield_t{ > void* data; > unsigned ext:1; > unsigned spatial_status:2; > > > unsigned len; > dtype_t type; > > > > > dfield_t* clone(mem_heap_t* heap) const; >}; > > >struct dtuple_t { > ulint info_bits; > > > > ulint n_fields; > ulint n_fields_cmp; > > > > > > > dfield_t* fields; > ulint n_v_fields; > dfield_t* v_fields; > ut_list_node<dtuple_t> tuple_list; ># 522 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" >}; > >inline ulint dtuple_get_n_fields(const dtuple_t* tuple) >{ return tuple->n_fields; } >inline dtype_t* dfield_get_type(dfield_t* field) { return &field->type; } >inline const dtype_t* dfield_get_type(const dfield_t* field) >{ return &field->type; } >inline void* dfield_get_data(dfield_t* field) >{ > do { } while(0); > return field->data; >} >inline const void* dfield_get_data(const dfield_t* field) >{ > do { } while(0); > return field->data; >} >inline ulint dfield_get_len(const dfield_t* field) { return field->len; } >inline bool dfield_is_null(const dfield_t* field) >{ return field->len == 0xFFFFFFFF; } > >inline bool dfield_is_ext(const dfield_t* field) >{ > do { } while(0); > return static_cast<bool>(field->ext); >} > >inline void dfield_set_ext(dfield_t* field) { field->ext = 1; } > > > > >inline ulint >dtuple_get_n_v_fields(const dtuple_t* tuple) { return tuple->n_v_fields; } > >inline const dfield_t* dtuple_get_nth_field(const dtuple_t* tuple, ulint n) >{ > do { } while(0); > return &tuple->fields[n]; >} >inline dfield_t* dtuple_get_nth_field(dtuple_t* tuple, ulint n) >{ > do { } while(0); > return &tuple->fields[n]; >} > > > > > >inline const dfield_t* dtuple_get_nth_v_field(const dtuple_t* tuple, ulint n) >{ > do { } while(0); > return &tuple->v_fields[n]; >} > > > > >inline dfield_t* dtuple_get_nth_v_field(dtuple_t* tuple, ulint n) >{ > do { } while(0); > return &tuple->v_fields[n]; >} > > >struct big_rec_field_t { > > > > > > big_rec_field_t(ulint field_no_, ulint len_, const void* data_) > : field_no(field_no_), > len(len_), > data(data_) > {} > > ulint field_no; > ulint len; > const void* data; >}; > > > >struct big_rec_t { > mem_heap_t* heap; > > const ulint capacity; > ulint n_fields; > big_rec_field_t*fields; > > > > explicit big_rec_t(const ulint max) > : heap(0), > capacity(max), > n_fields(0), > fields(0) > {} > > > void append(const big_rec_field_t& field) > { > do { } while(0); > fields[n_fields] = field; > n_fields++; > } > > > > > > > > static big_rec_t* alloc( > mem_heap_t* heap, > ulint n_fld); >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.ic" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.ic" >static inline >void >dfield_set_type( > > dfield_t* field, > const dtype_t* type) >{ > do { } while(0); > do { } while(0); > > field->type = *type; >} > > > >static inline >void >dfield_set_len( > > dfield_t* field, > ulint len) >{ > > > > > field->ext = 0; > field->len = static_cast<unsigned int>(len); >} > > > >static inline >spatial_status_t >dfield_get_spatial_status( > const dfield_t* field) >{ > do { } while(0); > do { } while(0); > > return(static_cast<spatial_status_t>(field->spatial_status)); >} > > > > >static inline >void >dfield_set_spatial_status( > dfield_t* field, > spatial_status_t spatial_status) >{ > do { } while(0); > do { } while(0); > > field->spatial_status = spatial_status; >} > > > >static inline >void >dfield_set_data( > > dfield_t* field, > const void* data, > ulint len) >{ > > > > field->data = (void*) data; > field->ext = 0; > field->len = static_cast<unsigned int>(len); >} > > > >static inline >void >dfield_write_mbr( > > dfield_t* field, > const double* mbr) >{ > > > > field->ext = 0; > > for (unsigned i = 0; i < 2 * 2; i++) { > mach_double_write(static_cast<byte*>(field->data) > + i * sizeof(double), mbr[i]); > } > > field->len = 2 * 2 * sizeof(double); >} > > > >static inline >void >dfield_set_null( > > dfield_t* field) >{ > dfield_set_data(field, __null, 0xFFFFFFFF); >} > > > >static inline >void >dfield_copy_data( > > dfield_t* field1, > const dfield_t* field2) >{ > do { } while(0); > do { } while(0); > > field1->data = field2->data; > field1->len = field2->len; > field1->ext = field2->ext; > field1->spatial_status = field2->spatial_status; >} > > > >static inline >void >dfield_copy( > > dfield_t* field1, > const dfield_t* field2) >{ > *field1 = *field2; >} > > > >static inline >void >dfield_dup( > > dfield_t* field, > mem_heap_t* heap) >{ > if (!dfield_is_null(field)) { > do {} while(0); > field->data = mem_heap_dup(heap, field->data, field->len); > } >} > > > > > > >static inline >ulint >dfield_datas_are_binary_equal( > > const dfield_t* field1, > const dfield_t* field2, > ulint len) > >{ > ulint len2 = len; > > if (field1->len == 0xFFFFFFFF || len == 0 || field1->len < len) { > len = field1->len; > } > > if (field2->len == 0xFFFFFFFF || len2 == 0 || field2->len < len2) { > len2 = field2->len; > } > > return(len == len2 > && (len == 0xFFFFFFFF > || !memcmp(field1->data, field2->data, len))); >} > > > > >static inline >ulint >dfield_data_is_binary_equal( > > const dfield_t* field, > ulint len, > const byte* data) >{ > return(len == dfield_get_len(field) > && (!len || len == 0xFFFFFFFF > || !memcmp(dfield_get_data(field), data, len))); >} > > > > >static inline >ulint >dtuple_get_info_bits( > > const 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( > > const dtuple_t* tuple) >{ > return(tuple->n_fields_cmp); >} > > > >static inline >void >dtuple_set_n_fields_cmp( > > dtuple_t* tuple, > ulint n_fields_cmp) > >{ > do { } while(0); > tuple->n_fields_cmp = n_fields_cmp; >} ># 289 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.ic" >static inline >dtuple_t* >dtuple_create_from_mem( > void* buf, > ulint buf_size, > ulint n_fields, > ulint n_v_fields) >{ > dtuple_t* tuple; > ulint n_t_fields = n_fields + n_v_fields; > > do { if (__builtin_expect(!(ulint) (buf_size >= (sizeof(dtuple_t) + (n_t_fields) * sizeof(dfield_t))), (0))) { ut_dbg_assertion_failed("buf_size >= DTUPLE_EST_ALLOC(n_t_fields)", "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.ic", 300); } } while (0); > > tuple = (dtuple_t*) buf; > tuple->info_bits = 0; > tuple->n_fields = n_fields; > tuple->n_v_fields = n_v_fields; > tuple->n_fields_cmp = n_fields; > tuple->fields = (dfield_t*) &tuple[1]; > if (n_v_fields > 0) { > tuple->v_fields = &tuple->fields[n_fields]; > } else { > tuple->v_fields = __null; > } ># 337 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.ic" > do {} while(0); > ((void) (tuple->fields), (void) (n_t_fields * sizeof *tuple->fields)); > return(tuple); >} > > > > >static inline >void >dtuple_dup_v_fld(dtuple_t* vrow, mem_heap_t* heap) >{ > for (ulint i = 0; i < vrow->n_v_fields; i++) { > dfield_t* dfield = dtuple_get_nth_v_field(vrow, i); > dfield_dup(dfield, heap); > } >} > > > >static inline >void >dtuple_init_v_fld(dtuple_t* vrow) >{ > for (ulint i = 0; i < vrow->n_v_fields; i++) { > dfield_t* dfield = dtuple_get_nth_v_field(vrow, i); > dfield_get_type(dfield)->mtype = 0; > dfield_set_len(dfield, 0xFFFFFFFF); > } >} > > > > > >static inline >dtuple_t* >dtuple_create( > > mem_heap_t* heap, > > > ulint n_fields) >{ > return(dtuple_create_with_vcol(heap, n_fields, 0)); >} > > > > > > >static inline >dtuple_t* >dtuple_create_with_vcol( > mem_heap_t* heap, > ulint n_fields, > ulint n_v_fields) >{ > void* buf; > ulint buf_size; > dtuple_t* tuple; > > do { } while(0); > > buf_size = (sizeof(dtuple_t) + (n_fields + n_v_fields) * sizeof(dfield_t)); > buf = mem_heap_alloc(heap, buf_size); > > tuple = dtuple_create_from_mem(buf, buf_size, n_fields, n_v_fields); > > return(tuple); >} > > > > >static inline >void >dtuple_copy_v_fields( > dtuple_t* d_tuple, > const dtuple_t* s_tuple) >{ > > ulint n_v_fields = dtuple_get_n_v_fields(d_tuple); > do { } while(0); > > for (ulint i = 0; i < n_v_fields; i++) { > dfield_copy(dtuple_get_nth_v_field(d_tuple, i), > dtuple_get_nth_v_field(s_tuple, i)); > } >} > > > > > >static inline >dtuple_t* >dtuple_copy( > > const dtuple_t* tuple, > mem_heap_t* heap) > >{ > ulint n_fields = dtuple_get_n_fields(tuple); > ulint n_v_fields = dtuple_get_n_v_fields(tuple); > dtuple_t* new_tuple = dtuple_create_with_vcol( > heap, n_fields, n_v_fields); > ulint i; > > for (i = 0; i < n_fields; i++) { > dfield_copy(dtuple_get_nth_field(new_tuple, i), > dtuple_get_nth_field(tuple, i)); > } > > for (i = 0; i < n_v_fields; i++) { > dfield_copy(dtuple_get_nth_v_field(new_tuple, i), > dtuple_get_nth_v_field(tuple, i)); > } > > return(new_tuple); >} > > > > > > >static inline >ulint >dtuple_get_data_size( > > const dtuple_t* tuple, > ulint comp) >{ > const dfield_t* field; > ulint n_fields; > ulint len; > ulint i; > ulint sum = 0; > > do { } while(0); > do { } while(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), > comp); > } > > sum += len; > } > > return(sum); >} > > > > >static inline >ulint >dtuple_get_n_ext( > > const dtuple_t* tuple) >{ > ulint n_ext = 0; > ulint n_fields = tuple->n_fields; > ulint i; > > do { } while(0); > do { } while(0); > > for (i = 0; i < n_fields; i++) { > n_ext += dtuple_get_nth_field(tuple, i)->ext; > } > > return(n_ext); >} > > > >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); > } >} > > > > > > > >static inline >ulint >dtuple_fold( > const dtuple_t* tuple, > ulint n_fields, > ulint n_bytes, > index_id_t tree_id) >{ > const dfield_t* field; > ulint i; > const byte* data; > ulint len; > ulint fold; > > do { } while(0); > do { } while(0); > do { } while(0); > > fold = ut_fold_ull(tree_id); > > for (i = 0; i < n_fields; i++) { > field = dtuple_get_nth_field(tuple, i); > > data = (const byte*) 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 = (const byte*) 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( > > byte* data, > ulint len) >{ > memset(data, 0, len); >} > > > > >static inline >ulint >dtuple_contains_null( > > const dtuple_t* tuple) >{ > ulint n; > ulint i; > > n = dtuple_get_n_fields(tuple); > > for (i = 0; i < n; i++) { > if (dfield_is_null(dtuple_get_nth_field(tuple, i))) { > > return((1)); > } > } > > return((0)); >} > > > >static inline >void >dtuple_big_rec_free( > > big_rec_t* vector) > >{ > mem_heap_free(vector->heap); >} ># 643 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 2 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0types.h" 2 > > >typedef void que_node_t; > > >typedef struct que_fork_t que_t; > >struct que_thr_t; ># 76 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0types.h" >struct que_common_t{ > ulint type; > que_node_t* parent; > que_node_t* brother; > dfield_t val; > ulint val_buf_size; ># 90 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0types.h" > que_common_t(ulint type, que_node_t* parent) : > type(type), parent(parent), brother(__null), > val(), val_buf_size(0) > {} >}; ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0types.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0types.h" >struct plan_t; > >struct upd_t; >struct upd_field_t; >struct upd_node_t; >struct del_node_t; >struct ins_node_t; >struct sel_node_t; >struct open_node_t; >struct fetch_node_t; > >struct row_printf_node_t; >struct sel_buf_t; > >struct undo_node_t; > >struct purge_node_t; > >struct row_ext_t; > > >struct row_log_t; > > >struct TABLE; > > >struct purge_vcol_info_t >{ >private: > > bool requested; > > bool used; > > > bool first_use; > > > TABLE* mariadb_table; > >public: > > purge_vcol_info_t() : > requested(false), used(false), first_use(false), > mariadb_table(__null) > {} > > void reset() > { > requested = false; > used = false; > first_use = false; > mariadb_table = __null; > } > > > > > bool validate() const { return !used || mariadb_table; } > > > TABLE* table() const { return mariadb_table; } > > > > void set_table(TABLE* table) > { > do { } while(0); > mariadb_table = table; > } > > > void set_requested() > { > do { } while(0); > do { } while(0); > do { } while(0); > requested = true; > } > > > bool is_requested() const { return requested; } > > > void set_used() > { > do { } while(0); > > if (first_use) { > first_use = false; > do { } while(0); > return; > } > > if (!used) { > first_use = used = true; > } > } > > > bool is_used() const > { > do { } while(0); > do { } while(0); > do { } while(0); > return used; > } > > > > bool is_first_fetch() const > { > do { } while(0); > do { } while(0); > do { } while(0); > return first_use; > } >}; ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" 2 > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0types.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0types.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0types.h" 2 > ># 1 "/usr/include/c++/4.8.2/set" 1 3 ># 58 "/usr/include/c++/4.8.2/set" 3 ># 59 "/usr/include/c++/4.8.2/set" 3 > > ># 1 "/usr/include/c++/4.8.2/bits/stl_set.h" 1 3 ># 64 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 88 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > template<typename _Key, typename _Compare = std::less<_Key>, > typename _Alloc = std::allocator<_Key> > > class set > { > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > > > public: > > > > typedef _Key key_type; > typedef _Key value_type; > typedef _Compare key_compare; > typedef _Compare value_compare; > typedef _Alloc allocator_type; > > > private: > typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type; > > typedef _Rb_tree<key_type, value_type, _Identity<value_type>, > key_compare, _Key_alloc_type> _Rep_type; > _Rep_type _M_t; > > public: > > > typedef typename _Key_alloc_type::pointer pointer; > typedef typename _Key_alloc_type::const_pointer const_pointer; > typedef typename _Key_alloc_type::reference reference; > typedef typename _Key_alloc_type::const_reference const_reference; > > > > typedef typename _Rep_type::const_iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::const_reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > > > > > > > set() > : _M_t() { } > > > > > > > explicit > set(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Key_alloc_type(__a)) { } ># 162 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > template<typename _InputIterator> > set(_InputIterator __first, _InputIterator __last) > : _M_t() > { _M_t._M_insert_unique(__first, __last); } ># 179 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > template<typename _InputIterator> > set(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Key_alloc_type(__a)) > { _M_t._M_insert_unique(__first, __last); } ># 193 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > set(const set& __x) > : _M_t(__x._M_t) { } ># 232 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > set& > operator=(const set& __x) > { > _M_t = __x._M_t; > return *this; > } ># 280 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > key_compare > key_comp() const > { return _M_t.key_comp(); } > > value_compare > value_comp() const > { return _M_t.key_comp(); } > > allocator_type > get_allocator() const > { return allocator_type(_M_t.get_allocator()); } > > > > > > > iterator > begin() const > { return _M_t.begin(); } > > > > > > > iterator > end() const > { return _M_t.end(); } > > > > > > > reverse_iterator > rbegin() const > { return _M_t.rbegin(); } > > > > > > > reverse_iterator > rend() const > { return _M_t.rend(); } ># 367 "/usr/include/c++/4.8.2/bits/stl_set.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(); } ># 392 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > void > swap(set& __x) > { _M_t.swap(__x._M_t); } ># 459 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > std::pair<iterator, bool> > insert(const value_type& __x) > { > std::pair<typename _Rep_type::iterator, bool> __p = > _M_t._M_insert_unique(__x); > return std::pair<iterator, bool>(__p.first, __p.second); > } ># 496 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > iterator > insert(const_iterator __position, const value_type& __x) > { return _M_t._M_insert_unique_(__position, __x); } ># 515 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > template<typename _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t._M_insert_unique(__first, __last); } ># 564 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > void > erase(iterator __position) > { _M_t.erase(__position); } ># 580 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 618 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > void > erase(iterator __first, iterator __last) > { _M_t.erase(__first, __last); } ># 629 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > void > clear() > { _M_t.clear(); } ># 643 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > size_type > count(const key_type& __x) const > { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } ># 661 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } > > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } ># 682 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } > > const_iterator > lower_bound(const key_type& __x) const > { return _M_t.lower_bound(__x); } ># 698 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > 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); } ># 723 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > std::pair<iterator, iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } > > std::pair<const_iterator, const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > > template<typename _K1, typename _C1, typename _A1> > friend bool > operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); > > template<typename _K1, typename _C1, typename _A1> > friend bool > operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); > }; ># 752 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator==(const set<_Key, _Compare, _Alloc>& __x, > const set<_Key, _Compare, _Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 769 "/usr/include/c++/4.8.2/bits/stl_set.h" 3 > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator<(const set<_Key, _Compare, _Alloc>& __x, > const set<_Key, _Compare, _Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator!=(const set<_Key, _Compare, _Alloc>& __x, > const set<_Key, _Compare, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator>(const set<_Key, _Compare, _Alloc>& __x, > const set<_Key, _Compare, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator<=(const set<_Key, _Compare, _Alloc>& __x, > const set<_Key, _Compare, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator>=(const set<_Key, _Compare, _Alloc>& __x, > const set<_Key, _Compare, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline void > swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) > { __x.swap(__y); } > > >} ># 62 "/usr/include/c++/4.8.2/set" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 1 3 ># 64 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 90 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > template <typename _Key, typename _Compare = std::less<_Key>, > typename _Alloc = std::allocator<_Key> > > class multiset > { > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > > > public: > > typedef _Key key_type; > typedef _Key value_type; > typedef _Compare key_compare; > typedef _Compare value_compare; > typedef _Alloc allocator_type; > > private: > > typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type; > > typedef _Rb_tree<key_type, value_type, _Identity<value_type>, > key_compare, _Key_alloc_type> _Rep_type; > > _Rep_type _M_t; > > public: > typedef typename _Key_alloc_type::pointer pointer; > typedef typename _Key_alloc_type::const_pointer const_pointer; > typedef typename _Key_alloc_type::reference reference; > typedef typename _Key_alloc_type::const_reference const_reference; > > > > typedef typename _Rep_type::const_iterator iterator; > typedef typename _Rep_type::const_iterator const_iterator; > typedef typename _Rep_type::const_reverse_iterator reverse_iterator; > typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; > typedef typename _Rep_type::size_type size_type; > typedef typename _Rep_type::difference_type difference_type; > > > > > > multiset() > : _M_t() { } > > > > > > > explicit > multiset(const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Key_alloc_type(__a)) { } ># 159 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > template<typename _InputIterator> > multiset(_InputIterator __first, _InputIterator __last) > : _M_t() > { _M_t._M_insert_equal(__first, __last); } ># 175 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > template<typename _InputIterator> > multiset(_InputIterator __first, _InputIterator __last, > const _Compare& __comp, > const allocator_type& __a = allocator_type()) > : _M_t(__comp, _Key_alloc_type(__a)) > { _M_t._M_insert_equal(__first, __last); } ># 189 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > multiset(const multiset& __x) > : _M_t(__x._M_t) { } ># 228 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > multiset& > operator=(const multiset& __x) > { > _M_t = __x._M_t; > return *this; > } ># 277 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > key_compare > key_comp() const > { return _M_t.key_comp(); } > > value_compare > value_comp() const > { return _M_t.key_comp(); } > > allocator_type > get_allocator() const > { return allocator_type(_M_t.get_allocator()); } > > > > > > > iterator > begin() const > { return _M_t.begin(); } > > > > > > > iterator > end() const > { return _M_t.end(); } > > > > > > > reverse_iterator > rbegin() const > { return _M_t.rbegin(); } > > > > > > > reverse_iterator > rend() const > { return _M_t.rend(); } ># 364 "/usr/include/c++/4.8.2/bits/stl_multiset.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(); } ># 389 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > void > swap(multiset& __x) > { _M_t.swap(__x._M_t); } ># 453 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > iterator > insert(const value_type& __x) > { return _M_t._M_insert_equal(__x); } ># 483 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > iterator > insert(const_iterator __position, const value_type& __x) > { return _M_t._M_insert_equal_(__position, __x); } ># 501 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > template<typename _InputIterator> > void > insert(_InputIterator __first, _InputIterator __last) > { _M_t._M_insert_equal(__first, __last); } ># 550 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > void > erase(iterator __position) > { _M_t.erase(__position); } ># 566 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > size_type > erase(const key_type& __x) > { return _M_t.erase(__x); } ># 604 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > void > erase(iterator __first, iterator __last) > { _M_t.erase(__first, __last); } ># 615 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > void > clear() > { _M_t.clear(); } ># 626 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > size_type > count(const key_type& __x) const > { return _M_t.count(__x); } ># 644 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > iterator > find(const key_type& __x) > { return _M_t.find(__x); } > > const_iterator > find(const key_type& __x) const > { return _M_t.find(__x); } ># 665 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > iterator > lower_bound(const key_type& __x) > { return _M_t.lower_bound(__x); } > > const_iterator > lower_bound(const key_type& __x) const > { return _M_t.lower_bound(__x); } ># 681 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > 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); } ># 706 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > std::pair<iterator, iterator> > equal_range(const key_type& __x) > { return _M_t.equal_range(__x); } > > std::pair<const_iterator, const_iterator> > equal_range(const key_type& __x) const > { return _M_t.equal_range(__x); } > > > template<typename _K1, typename _C1, typename _A1> > friend bool > operator==(const multiset<_K1, _C1, _A1>&, > const multiset<_K1, _C1, _A1>&); > > template<typename _K1, typename _C1, typename _A1> > friend bool > operator< (const multiset<_K1, _C1, _A1>&, > const multiset<_K1, _C1, _A1>&); > }; ># 737 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator==(const multiset<_Key, _Compare, _Alloc>& __x, > const multiset<_Key, _Compare, _Alloc>& __y) > { return __x._M_t == __y._M_t; } ># 754 "/usr/include/c++/4.8.2/bits/stl_multiset.h" 3 > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator<(const multiset<_Key, _Compare, _Alloc>& __x, > const multiset<_Key, _Compare, _Alloc>& __y) > { return __x._M_t < __y._M_t; } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator!=(const multiset<_Key, _Compare, _Alloc>& __x, > const multiset<_Key, _Compare, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator>(const multiset<_Key,_Compare,_Alloc>& __x, > const multiset<_Key,_Compare,_Alloc>& __y) > { return __y < __x; } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator<=(const multiset<_Key, _Compare, _Alloc>& __x, > const multiset<_Key, _Compare, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline bool > operator>=(const multiset<_Key, _Compare, _Alloc>& __x, > const multiset<_Key, _Compare, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Key, typename _Compare, typename _Alloc> > inline void > swap(multiset<_Key, _Compare, _Alloc>& __x, > multiset<_Key, _Compare, _Alloc>& __y) > { __x.swap(__y); } > > >} ># 63 "/usr/include/c++/4.8.2/set" 2 3 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0types.h" 2 ># 43 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0types.h" >static const ulint TRX_ID_MAX_LEN = 17; > > >static const ulint TRX_SYS_SPACE = 0; > > > > > >static const ulint TRX_MAGIC_N = 91118598; > > >enum trx_que_t { > TRX_QUE_RUNNING, > TRX_QUE_LOCK_WAIT, > > TRX_QUE_ROLLING_BACK, > TRX_QUE_COMMITTING >}; > > >enum trx_state_t { > TRX_STATE_NOT_STARTED, > > TRX_STATE_ACTIVE, > > > TRX_STATE_PREPARED, > > TRX_STATE_PREPARED_RECOVERED, > TRX_STATE_COMMITTED_IN_MEMORY >}; > > >enum trx_dict_op_t { > > TRX_DICT_OP_NONE = 0, > > > > > TRX_DICT_OP_TABLE = 1, > > > > TRX_DICT_OP_INDEX = 2 >}; > > > > >struct trx_t; > >struct trx_lock_t; > >struct trx_sys_t; > >struct trx_sig_t; > >struct trx_rseg_t; > >struct trx_undo_t; > >struct roll_node_t; > >struct commit_node_t; > >struct trx_named_savept_t; > > > >typedef ib_id_t row_id_t; > >typedef ib_id_t trx_id_t; > >typedef ib_id_t roll_ptr_t; > >typedef ib_id_t undo_no_t; > > > > > >struct trx_savept_t{ > undo_no_t least_undo_no; >}; > > > > >typedef byte trx_sysf_t; > >typedef byte trx_rsegf_t; > >typedef byte trx_usegf_t; > >typedef byte trx_ulogf_t; > >typedef byte trx_upagef_t; > > >typedef byte trx_undo_rec_t; > > > >typedef ib_mutex_t RsegMutex; >typedef ib_mutex_t TrxMutex; >typedef ib_mutex_t UndoMutex; >typedef ib_mutex_t PQMutex; >typedef ib_mutex_t TrxSysMutex; > >typedef std::vector<trx_id_t, ut_allocator<trx_id_t> > trx_ids_t; > > > >struct TrxTrack { > explicit TrxTrack(trx_id_t id, trx_t* trx = __null) > : > m_id(id), > m_trx(trx) > { > > } > > trx_id_t m_id; > trx_t* m_trx; >}; > >struct TrxTrackHash { > size_t operator()(const TrxTrack& key) const > { > return(size_t(key.m_id)); > } >}; > > > >struct TrxTrackHashCmp { > > bool operator() (const TrxTrack& lhs, const TrxTrack& rhs) const > { > return(lhs.m_id == rhs.m_id); > } >}; > > > >struct TrxTrackCmp { > > bool operator() (const TrxTrack& lhs, const TrxTrack& rhs) const > { > return(lhs.m_id < rhs.m_id); > } >}; > > >typedef std::set<TrxTrack, TrxTrackCmp, ut_allocator<TrxTrack> > > TrxIdSet; ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" 2 > >class ut_stage_alter_t; > >extern ulint onlineddl_rowlog_rows; >extern ulint onlineddl_rowlog_pct_used; >extern ulint onlineddl_pct_progress; > > > > > >bool >row_log_allocate( > > dict_index_t* index, > dict_table_t* table, > > bool same_pk, > > const dtuple_t* add_cols, > > > const ulint* col_map, > > const char* path) > __attribute__((nonnull(1), warn_unused_result)); > > > >void >row_log_free( > > row_log_t*& log) > __attribute__((nonnull)); > > > >static inline >void >row_log_abort_sec( > > dict_index_t* index) > __attribute__((nonnull)); > > > > > > >static inline >bool >row_log_online_op_try( > > dict_index_t* index, > const dtuple_t* tuple, > trx_id_t trx_id) > > __attribute__((nonnull, warn_unused_result)); > > >void >row_log_online_op( > > dict_index_t* index, > const dtuple_t* tuple, > trx_id_t trx_id) > > __attribute__((cold)) __attribute__((nonnull)); > > > > >dberr_t >row_log_table_get_error( > > const dict_index_t* index) > > __attribute__((nonnull, warn_unused_result)); > > > > > > >bool >row_log_col_is_indexed( > const dict_index_t* index, > ulint v_no); > > > > >void >row_log_table_delete( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > const byte* sys) > > __attribute__((cold)) __attribute__((nonnull(1,2,3))); > > > > >void >row_log_table_update( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > const dtuple_t* old_pk); > > > > > > > >const dtuple_t* >row_log_table_get_pk( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > > byte* sys, > > mem_heap_t** heap) > __attribute__((cold)) __attribute__((nonnull(1,2,5), warn_unused_result)); > > > > >void >row_log_table_insert( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets); > > >void >row_log_table_blob_free( > > dict_index_t* index, > ulint page_no) > __attribute__((cold)) __attribute__((nonnull)); > > >void >row_log_table_blob_alloc( > > dict_index_t* index, > ulint page_no) > __attribute__((cold)) __attribute__((nonnull)); ># 209 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" >dberr_t >row_log_table_apply( > que_thr_t* thr, > dict_table_t* old_table, > struct TABLE* table, > ut_stage_alter_t* stage) > __attribute__((warn_unused_result)); > > > > > >trx_id_t >row_log_get_max_trx( > > dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); ># 236 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" >dberr_t >row_log_apply( > const trx_t* trx, > dict_index_t* index, > struct TABLE* table, > ut_stage_alter_t* stage) > __attribute__((warn_unused_result)); ># 255 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.ic" 1 ># 26 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" >struct ib_lock_t; >struct lock_sys_t; >struct lock_table_t; > > >enum lock_mode { > LOCK_IS = 0, > LOCK_IX, > LOCK_S, > LOCK_X, > LOCK_AUTO_INC, > > LOCK_NONE, > LOCK_NUM = LOCK_NONE, > LOCK_NONE_UNSET = 255 >}; > > > > >inline >const char* lock_mode_string(enum lock_mode mode) >{ > switch (mode) { > case LOCK_IS: > return("LOCK_IS"); > case LOCK_IX: > return("LOCK_IX"); > case LOCK_S: > return("LOCK_S"); > case LOCK_X: > return("LOCK_X"); > case LOCK_AUTO_INC: > return("LOCK_AUTO_INC"); > case LOCK_NONE: > return("LOCK_NONE"); > case LOCK_NONE_UNSET: > return("LOCK_NONE_UNSET"); > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h", 74); > } >} > > >struct lock_table_t { > dict_table_t* table; > > ut_list_node<ib_lock_t> > locks; > > > > > std::ostream& print(std::ostream& out) const; >}; > > >struct lock_rec_t { > ib_uint32_t space; > ib_uint32_t page_no; > ib_uint32_t n_bits; > > > > > > > > std::ostream& print(std::ostream& out) const; >}; > > > > >inline >std::ostream& lock_rec_t::print(std::ostream& out) const >{ > out << "[lock_rec_t: space=" << space << ", page_no=" << page_no > << ", n_bits=" << n_bits << "]"; > return(out); >} > >inline >std::ostream& >operator<<(std::ostream& out, const lock_rec_t& lock) >{ > return(lock.print(out)); >} ># 180 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" >struct ib_lock_t >{ > trx_t* trx; > > ut_list_node<ib_lock_t> > trx_locks; > > > dict_index_t* index; > > ib_lock_t* hash; > > > > > > > > time_t requested_time; > > > ulint wait_time; > > union { > lock_table_t tab_lock; > lock_rec_t rec_lock; > } un_member; > > ib_uint32_t type_mode; > > > > > > > bool is_record_lock() const > { > return(type() == 32U); > } > > bool is_waiting() const > { > return(type_mode & 256U); > } > > bool is_gap() const > { > return(type_mode & 512U); > } > > bool is_record_not_gap() const > { > return(type_mode & 1024U); > } > > bool is_insert_intention() const > { > return(type_mode & 2048U); > } > > ulint type() const { > return(type_mode & 0xF0UL); > } > > enum lock_mode mode() const > { > return(static_cast<enum lock_mode>(type_mode & 0xFUL)); > } > > > > > std::ostream& print(std::ostream& out) const; > > > > std::string type_mode_string() const; > > const char* type_string() const > { > switch (type_mode & 0xF0UL) { > case 32U: > return("LOCK_REC"); > case 16U: > return("LOCK_TABLE"); > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h", 266); > } > } >}; > >typedef ut_list_base<ib_lock_t, ut_list_node<ib_lock_t> ib_lock_t::*> trx_lock_list_t; ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 > > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.h" >struct hash_table_t; >struct hash_cell_t; > >typedef void* hash_node_t; > > > > > > >enum hash_table_sync_t { > HASH_TABLE_SYNC_NONE = 0, > > > HASH_TABLE_SYNC_MUTEX, > > HASH_TABLE_SYNC_RW_LOCK > >}; > > > > > >hash_table_t* >hash0_create( > > ulint n); > > > > > >void >hash_create_sync_obj( > > hash_table_t* table, > hash_table_sync_t type, > > latch_id_t id, > ulint n_sync_obj); > > > > >void >hash_table_free( > > hash_table_t* table); > > > >static inline >ulint >hash_calc_hash( > > ulint fold, > hash_table_t* table); ># 248 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.h" >static inline >hash_cell_t* >hash_get_nth_cell( > > hash_table_t* table, > ulint n); > > > >static inline >void >hash_table_clear( > > hash_table_t* table); > > > > >static inline >ulint >hash_get_n_cells( > > hash_table_t* table); ># 361 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.h" >static inline >ulint >hash_get_sync_obj_index( > > 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 >rw_lock_t* >hash_get_nth_lock( > > hash_table_t* table, > ulint i); > > > >static inline >ib_mutex_t* >hash_get_mutex( > > hash_table_t* table, > ulint fold); > > > >static inline >rw_lock_t* >hash_get_lock( > > hash_table_t* table, > ulint fold); > > > > > > > >static inline >rw_lock_t* >hash_lock_s_confirm( > rw_lock_t* hash_lock, > hash_table_t* table, > ulint fold); > > > > > > > >static inline >rw_lock_t* >hash_lock_x_confirm( > rw_lock_t* hash_lock, > hash_table_t* table, > ulint fold); > > > >void >hash_lock_x_all( > > hash_table_t* table); > > >void >hash_unlock_x_all( > > hash_table_t* table); > > >void >hash_unlock_x_all_but( > > hash_table_t* table, > rw_lock_t* keep_lock); > >struct hash_cell_t{ > void* node; >}; > > >struct hash_table_t { > enum hash_table_sync_t type; > > > > > > > > ulint n_cells; > hash_cell_t* array; > > ulint n_sync_obj; > > > > > union { > ib_mutex_t* mutexes; > > > rw_lock_t* rw_locks; > > > } sync_obj; > > mem_heap_t** heaps; > > > > > mem_heap_t* heap; > > > > >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.ic" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.ic" >static inline >hash_cell_t* >hash_get_nth_cell( > > hash_table_t* table, > ulint n) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > return(table->array + n); >} > > > >static inline >void >hash_table_clear( > > hash_table_t* table) >{ > do { } while(0); > do { } while(0); > memset(table->array, 0x0, > table->n_cells * sizeof(*table->array)); >} > > > > >static inline >ulint >hash_get_n_cells( > > hash_table_t* table) >{ > do { } while(0); > do { } while(0); > return(table->n_cells); >} > > > > >static inline >ulint >hash_calc_hash( > > ulint fold, > hash_table_t* table) >{ > do { } while(0); > do { } while(0); > return(ut_hash_ulint(fold, table->n_cells)); >} > > > > >static inline >ulint >hash_get_sync_obj_index( > > hash_table_t* table, > ulint fold) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > return(ut_2pow_remainder(hash_calc_hash(fold, table), > table->n_sync_obj)); >} > > > > >static inline >mem_heap_t* >hash_get_nth_heap( > > hash_table_t* table, > ulint i) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > return(table->heaps[i]); >} > > > > >static inline >mem_heap_t* >hash_get_heap( > > hash_table_t* table, > ulint fold) >{ > ulint i; > > do { } while(0); > do { } while(0); > > if (table->heap) { > return(table->heap); > } > > i = hash_get_sync_obj_index(table, fold); > > return(hash_get_nth_heap(table, i)); >} > > > > >static inline >ib_mutex_t* >hash_get_nth_mutex( > > hash_table_t* table, > ulint i) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > return(table->sync_obj.mutexes + i); >} > > > > >static inline >ib_mutex_t* >hash_get_mutex( > > hash_table_t* table, > ulint fold) >{ > ulint i; > > do { } while(0); > do { } while(0); > > i = hash_get_sync_obj_index(table, fold); > > return(hash_get_nth_mutex(table, i)); >} > > > > >static inline >rw_lock_t* >hash_get_nth_lock( > > hash_table_t* table, > ulint i) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > return(table->sync_obj.rw_locks + i); >} > > > > >static inline >rw_lock_t* >hash_get_lock( > > hash_table_t* table, > ulint fold) >{ > ulint i; > > do { } while(0); > do { } while(0); > do { } while(0); > > i = hash_get_sync_obj_index(table, fold); > > return(hash_get_nth_lock(table, i)); >} > > > > > > > >static inline >rw_lock_t* >hash_lock_s_confirm( > rw_lock_t* hash_lock, > hash_table_t* table, > ulint fold) >{ > do { } while(0); > > rw_lock_t* hash_lock_tmp = hash_get_lock(table, fold); > > while (hash_lock_tmp != hash_lock) { > rw_lock_s_unlock_func(hash_lock); > hash_lock = hash_lock_tmp; > rw_lock_s_lock_func((hash_lock), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.ic", 245); > hash_lock_tmp = hash_get_lock(table, fold); > } > > return(hash_lock); >} > > > > > > > >static inline >rw_lock_t* >hash_lock_x_confirm( > rw_lock_t* hash_lock, > hash_table_t* table, > ulint fold) >{ > do { } while(0); > > rw_lock_t* hash_lock_tmp = hash_get_lock(table, fold); > > while (hash_lock_tmp != hash_lock) { > rw_lock_x_unlock_func(hash_lock); > hash_lock = hash_lock_tmp; > rw_lock_x_lock_func((hash_lock), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.ic", 272); > hash_lock_tmp = hash_get_lock(table, fold); > } > > return(hash_lock); >} ># 512 "/buildbot/mariadb-10.2.31/storage/innobase/include/hash0hash.h" 2 ># 43 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.h" >struct ib_alloc_t; >struct ib_vector_t; > >typedef void* (*ib_mem_alloc_t)( > > ib_alloc_t* allocator, > ulint size); > >typedef void (*ib_mem_free_t)( > ib_alloc_t* allocator, > void* ptr); > >typedef void* (*ib_mem_resize_t)( > > ib_alloc_t* allocator, > void* ptr, > ulint old_size, > ulint new_size); > >typedef int (*ib_compare_t)(const void*, const void*); ># 66 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.h" >ib_vector_t* >ib_vector_create( > > > ib_alloc_t* alloc, > > ulint sizeof_value, > ulint size); > > > > >static inline >void >ib_vector_free( > > ib_vector_t* vec); > > > > >static inline >void* >ib_vector_push( > > > ib_vector_t* vec, > const void* elem); > > > >static inline >void* >ib_vector_pop( > > > ib_vector_t* vec); > > > > >static inline >void* >ib_vector_remove( > > ib_vector_t* vec, > const void* elem); > > > >static inline >ulint >ib_vector_size( > > > const ib_vector_t* vec); > > > >void >ib_vector_resize( > > > ib_vector_t* vec); > > > > >static inline >ulint >ib_vector_is_empty( > > const ib_vector_t* vec); > > > > >static inline >void* >ib_vector_get( > > ib_vector_t* vec, > ulint n); > > > > >static inline >const void* >ib_vector_get_const( > > const ib_vector_t* vec, > ulint n); > > > >static inline >void* >ib_vector_get_last( > > ib_vector_t* vec); > > >static inline >void >ib_vector_set( > > ib_vector_t* vec, > ulint n, > void* elem); > > > >static inline >void >ib_vector_reset( > > ib_vector_t* vec); > > > >static inline >void* >ib_vector_last( > > > ib_vector_t* vec); > > > >static inline >const void* >ib_vector_last_const( > > > const ib_vector_t* vec); > > > >static inline >void >ib_vector_sort( > > ib_vector_t* vec, > ib_compare_t compare); > > > >static inline >void >ib_heap_free( > > ib_alloc_t* allocator, > void* ptr); > > > >static inline >void* >ib_heap_malloc( > > > ib_alloc_t* allocator, > ulint size); > > > > > >static inline >void* >ib_heap_resize( > > > > ib_alloc_t* allocator, > void* old_ptr, > ulint old_size, > ulint new_size); > > > >static inline >ib_alloc_t* >ib_heap_allocator_create( > > > mem_heap_t* heap); > > > >static inline >void >ib_heap_allocator_free( > > ib_alloc_t* ib_ut_alloc); > > >struct ib_alloc_t { > ib_mem_alloc_t mem_malloc; > ib_mem_free_t mem_release; > ib_mem_resize_t mem_resize; > void* arg; > >}; > > >struct ib_vector_t { > ib_alloc_t* allocator; > > void* data; > ulint used; > ulint total; > > ulint sizeof_value; >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic" >static inline >void* >ib_heap_malloc( > > ib_alloc_t* allocator, > ulint size) >{ > mem_heap_t* heap = (mem_heap_t*) allocator->arg; > > return(mem_heap_alloc(heap, size)); >} > > > >static inline >void >ib_heap_free( > > ib_alloc_t* allocator __attribute__((unused)), > void* ptr __attribute__((unused))) >{ > >} > > > > > > >static inline >void* >ib_heap_resize( > > ib_alloc_t* allocator, > void* old_ptr, > ulint old_size, > ulint new_size) >{ > void* new_ptr; > mem_heap_t* heap = (mem_heap_t*) allocator->arg; > > do { if (__builtin_expect(!(ulint) (new_size >= old_size), (0))) { ut_dbg_assertion_failed("new_size >= old_size", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 71); } } while (0); > new_ptr = mem_heap_alloc(heap, new_size); > memcpy(new_ptr, old_ptr, old_size); > > return(new_ptr); >} > > > >static inline >ib_alloc_t* >ib_heap_allocator_create( > > mem_heap_t* heap) >{ > ib_alloc_t* heap_alloc; > > heap_alloc = (ib_alloc_t*) mem_heap_alloc(heap, sizeof(*heap_alloc)); > > heap_alloc->arg = heap; > heap_alloc->mem_release = ib_heap_free; > heap_alloc->mem_malloc = ib_heap_malloc; > heap_alloc->mem_resize = ib_heap_resize; > > return(heap_alloc); >} > > > >static inline >void >ib_heap_allocator_free( > > ib_alloc_t* ib_ut_alloc) >{ > mem_heap_free((mem_heap_t*) ib_ut_alloc->arg); >} > > > >static inline >ulint >ib_vector_size( > > > const ib_vector_t* vec) >{ > return(vec->used); >} > > > >static inline >void* >ib_vector_get( > > ib_vector_t* vec, > ulint n) >{ > do { if (__builtin_expect(!(ulint) (n < vec->used), (0))) { ut_dbg_assertion_failed("n < vec->used", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 130); } } while (0); > > return((byte*) vec->data + (vec->sizeof_value * n)); >} > > > > >static inline >const void* >ib_vector_get_const( > > const ib_vector_t* vec, > ulint n) >{ > do { if (__builtin_expect(!(ulint) (n < vec->used), (0))) { ut_dbg_assertion_failed("n < vec->used", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 145); } } while (0); > > return((byte*) vec->data + (vec->sizeof_value * n)); >} > > > >static inline >void* >ib_vector_get_last( > > ib_vector_t* vec) >{ > do { if (__builtin_expect(!(ulint) (vec->used > 0), (0))) { ut_dbg_assertion_failed("vec->used > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 158); } } while (0); > > return((byte*) ib_vector_get(vec, vec->used - 1)); >} > > > >static inline >void >ib_vector_set( > > ib_vector_t* vec, > ulint n, > void* elem) >{ > void* slot; > > do { if (__builtin_expect(!(ulint) (n < vec->used), (0))) { ut_dbg_assertion_failed("n < vec->used", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 175); } } while (0); > > slot = ((byte*) vec->data + (vec->sizeof_value * n)); > memcpy(slot, elem, vec->sizeof_value); >} > > > >static inline >void >ib_vector_reset( > > > ib_vector_t* vec) >{ > vec->used = 0; >} > > > >static inline >void* >ib_vector_last( > > > ib_vector_t* vec) >{ > do { if (__builtin_expect(!(ulint) (ib_vector_size(vec) > 0), (0))) { ut_dbg_assertion_failed("ib_vector_size(vec) > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 202); } } while (0); > > return(ib_vector_get(vec, ib_vector_size(vec) - 1)); >} > > > >static inline >const void* >ib_vector_last_const( > > > const ib_vector_t* vec) >{ > do { if (__builtin_expect(!(ulint) (ib_vector_size(vec) > 0), (0))) { ut_dbg_assertion_failed("ib_vector_size(vec) > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 216); } } while (0); > > return(ib_vector_get_const(vec, ib_vector_size(vec) - 1)); >} > > > > >static inline >void* >ib_vector_pop( > > > ib_vector_t* vec) >{ > void* elem; > > do { if (__builtin_expect(!(ulint) (vec->used > 0), (0))) { ut_dbg_assertion_failed("vec->used > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.ic", 233); } } while (0); > > elem = ib_vector_last(vec); > --vec->used; > > return(elem); >} > > > > >static inline >void* >ib_vector_push( > > > ib_vector_t* vec, > const void* elem) >{ > void* last; > > if (vec->used >= vec->total) { > ib_vector_resize(vec); > } > > last = (byte*) vec->data + (vec->sizeof_value * vec->used); > > > > > > if (elem) { > memcpy(last, elem, vec->sizeof_value); > } > > ++vec->used; > > return(last); >} > > > > >static inline >void* >ib_vector_remove( > > ib_vector_t* vec, > const void* elem) >{ > void* current = __null; > void* next; > ulint i; > ulint old_used_count = vec->used; > > for (i = 0; i < vec->used; i++) { > current = ib_vector_get(vec, i); > > if (*(void**) current == elem) { > if (i == vec->used - 1) { > return(ib_vector_pop(vec)); > } > > next = ib_vector_get(vec, i + 1); > memmove(current, next, vec->sizeof_value > * (vec->used - i - 1)); > --vec->used; > break; > } > } > > return((old_used_count != vec->used) ? current : __null); >} > > > >static inline >void >ib_vector_sort( > > > ib_vector_t* vec, > ib_compare_t compare) >{ > qsort(vec->data, vec->used, vec->sizeof_value, compare); >} > > > > >static inline >void >ib_vector_free( > > ib_vector_t* vec) >{ > > > > > do { } while(0); > > mem_heap_free((mem_heap_t*) vec->allocator->arg); >} > > > > >static inline >ulint >ib_vector_is_empty( > > const ib_vector_t* vec) >{ > return(ib_vector_size(vec) == 0); >} ># 284 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0vec.h" 2 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rbt.h" 1 ># 46 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rbt.h" >struct ib_rbt_node_t; >typedef void (*ib_rbt_print_node)(const ib_rbt_node_t* node); >typedef int (*ib_rbt_compare)(const void* p1, const void* p2); >typedef int (*ib_rbt_arg_compare)(const void*, const void* p1, const void* p2); > > >enum ib_rbt_color_t { > IB_RBT_RED, > IB_RBT_BLACK >}; > > >struct ib_rbt_node_t { > ib_rbt_color_t color; > > ib_rbt_node_t* left; > ib_rbt_node_t* right; > ib_rbt_node_t* parent; > > char value[1]; >}; > > >struct ib_rbt_t { > ib_rbt_node_t* nil; > > > > ib_rbt_node_t* root; > > > > ulint n_nodes; > > ib_rbt_compare compare; > ib_rbt_arg_compare > compare_with_arg; > > ulint sizeof_value; > void* cmp_arg; >}; > > > >struct ib_rbt_bound_t { > const ib_rbt_node_t* > last; > > int result; > > >}; ># 113 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0rbt.h" >void >rbt_free( > > ib_rbt_t* tree); > > > >ib_rbt_t* >rbt_create( > > size_t sizeof_value, > ib_rbt_compare compare); > > > > >ib_rbt_t* >rbt_create_arg_cmp( > > size_t sizeof_value, > ib_rbt_arg_compare > compare, > void* cmp_arg); > > >ulint >rbt_delete( > > > ib_rbt_t* tree, > const void* key); > > > > >ib_rbt_node_t* >rbt_remove_node( > > ib_rbt_t* tree, > const ib_rbt_node_t* > node); > > > > > > >const ib_rbt_node_t* >rbt_insert( > > ib_rbt_t* tree, > const void* key, > const void* value); > > > > >const ib_rbt_node_t* >rbt_add_node( > > ib_rbt_t* tree, > ib_rbt_bound_t* parent, > const void* value); > > > > >const ib_rbt_node_t* >rbt_first( > > const ib_rbt_t* tree); > > > >const ib_rbt_node_t* >rbt_last( > > const ib_rbt_t* tree); > > > >const ib_rbt_node_t* >rbt_next( > > const ib_rbt_t* tree, > const ib_rbt_node_t* > current); > > > >const ib_rbt_node_t* >rbt_prev( > > const ib_rbt_t* tree, > const ib_rbt_node_t* > current); > > > > > >int >rbt_search( > > const ib_rbt_t* tree, > ib_rbt_bound_t* parent, > const void* key); > > > > > >int >rbt_search_cmp( > > const ib_rbt_t* tree, > ib_rbt_bound_t* parent, > const void* key, > ib_rbt_compare compare, > ib_rbt_arg_compare > arg_compare); > > > > >ulint >rbt_merge_uniq( > > ib_rbt_t* dst, > const ib_rbt_t* src); ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0wqueue.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0wqueue.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0list.h" 1 ># 51 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0list.h" >struct ib_list_t; >struct ib_list_node_t; > > > > > >ib_list_t* >ib_list_create(void); > > > > >void >ib_list_free( > > ib_list_t* list); > > > > >ib_list_node_t* >ib_list_add_last( > > ib_list_t* list, > void* data, > mem_heap_t* heap); > > > >void >ib_list_remove( > > ib_list_t* list, > ib_list_node_t* node); > > > > >static inline >ib_list_node_t* >ib_list_get_first( > > ib_list_t* list); > > > > >static inline >ib_list_node_t* >ib_list_get_last( > > ib_list_t* list); > > > >static inline >ulint >ib_list_is_empty( > > > const ib_list_t* list); > > > > >static inline >ulint >ib_list_len( > > const ib_list_t* list); > > >struct ib_list_t { > ib_list_node_t* first; > ib_list_node_t* last; >}; > > >struct ib_list_node_t { > ib_list_node_t* prev; > ib_list_node_t* next; > void* data; >}; > > > > >struct ib_list_helper_t { > mem_heap_t* heap; > void* data; >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0list.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0list.ic" >static inline >ib_list_node_t* >ib_list_get_first( > > ib_list_t* list) >{ > return(list->first); >} > > > > >static inline >ib_list_node_t* >ib_list_get_last( > > ib_list_t* list) >{ > return(list->last); >} > > > >static inline >ulint >ib_list_is_empty( > > > const ib_list_t* list) >{ > return(!(list->first || list->last)); >} > > > > >static inline >ulint >ib_list_len( > > const ib_list_t* list) >{ > ulint len = 0; > ib_list_node_t* node = list->first; > > while(node) { > len++; > node = node->next; > } > > return (len); >} ># 145 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0list.h" 2 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0wqueue.h" 2 > > > >struct ib_list_t; > > >struct ib_wqueue_t >{ > > ib_mutex_t mutex; > > ib_list_t* items; > > > os_event_t event; >}; > > > > >ib_wqueue_t* >ib_wqueue_create(); > > > > >void >ib_wqueue_free( > > ib_wqueue_t* wq); > > > > > > >void >ib_wqueue_add(ib_wqueue_t* wq, void* item, mem_heap_t* heap, > bool wq_locked = false); > > > > >bool ib_wqueue_is_empty(ib_wqueue_t* wq); > > > > >void* >ib_wqueue_wait( > > ib_wqueue_t* wq); > > > >void* >ib_wqueue_timedwait( > > > ib_wqueue_t* wq, > ulint wait_in_usecs); > > > > >void* >ib_wqueue_nowait( > > ib_wqueue_t* wq); > > > >ulint >ib_wqueue_len( > > ib_wqueue_t* wq); ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/include/ft_global.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/ft_global.h" >extern "C" { ># 36 "/buildbot/mariadb-10.2.31/include/ft_global.h" >typedef struct st_ft_info FT_INFO; >struct _ft_vft >{ > int (*read_next)(FT_INFO *, char *); > float (*find_relevance)(FT_INFO *, uchar *, uint); > void (*close_search)(FT_INFO *); > float (*get_relevance)(FT_INFO *); > void (*reinit_search)(FT_INFO *); >}; > >typedef struct st_ft_info_ext FT_INFO_EXT; >struct _ft_vft_ext >{ > uint (*get_version)(); > ulonglong (*get_flags)(); > ulonglong (*get_docid)(FT_INFO_EXT *); > ulonglong (*count_matches)(FT_INFO_EXT *); >}; ># 62 "/buildbot/mariadb-10.2.31/include/ft_global.h" >struct st_ft_info >{ > struct _ft_vft *please; >}; > >struct st_ft_info_ext >{ > struct _ft_vft *please; > struct _ft_vft_ext *could_you; >}; > > >extern const char *ft_stopword_file; >extern const char *ft_precompiled_stopwords[]; > >extern ulong ft_min_word_len; >extern ulong ft_max_word_len; >extern ulong ft_query_expansion_limit; >extern const char *ft_boolean_syntax; >extern struct st_mysql_ftparser ft_default_parser; > >int ft_init_stopwords(void); >void ft_free_stopwords(void); > > > > > > >FT_INFO *ft_init_search(uint,void *, uint, uchar *, size_t, > CHARSET_INFO *, uchar *); >my_bool ft_boolean_check_syntax_string(const uchar *); ># 104 "/buildbot/mariadb-10.2.31/include/ft_global.h" >extern const HA_KEYSEG ft_keysegs[2]; > >typedef union {int32 i; float f;} FT_WEIGTH; > > >} ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/plugin_ftparser.h" 1 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" 2 ># 66 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >typedef ib_id_t doc_id_t; ># 128 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >extern ulong fts_sort_pll_degree; > > > >extern ulong fts_num_word_optimize; > > > >extern char fts_enable_diag_print; > > >typedef float fts_rank_t; > > > > > > > >enum fts_row_state { > FTS_INSERT = 0, > FTS_MODIFY, > FTS_DELETE, > FTS_NOTHING, > FTS_INVALID >}; > > >enum fts_table_type_t { > FTS_INDEX_TABLE, > > > > FTS_COMMON_TABLE > >}; > >struct fts_doc_t; >struct fts_cache_t; >struct fts_token_t; >struct fts_doc_ids_t; >struct fts_index_cache_t; ># 193 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >struct fts_trx_t { > trx_t* trx; > > ib_vector_t* savepoints; > > > ib_vector_t* last_stmt; > > mem_heap_t* heap; >}; > > >struct fts_savepoint_t { > char* name; > > > > ib_rbt_t* tables; >}; > > >struct fts_trx_table_t { > dict_table_t* table; > > fts_trx_t* fts_trx; > > ib_rbt_t* rows; > > > fts_doc_ids_t* added_doc_ids; > > > > que_t* docs_added_graph; >}; > > >struct fts_trx_row_t { > doc_id_t doc_id; > > fts_row_state state; > > ib_vector_t* fts_indexes; >}; > > > > >struct fts_doc_ids_t { > ib_vector_t* doc_ids; > > > ib_alloc_t* self_heap; > > >}; > > > > > > >typedef unsigned short ib_uc_t; > > >struct fts_string_t { > byte* f_str; > > ulint f_len; > ulint f_n_char; >}; > > >struct fts_ranking_t { > doc_id_t doc_id; > > fts_rank_t rank; > > byte* words; > > > ulint words_len; >}; > > >struct fts_result_t { > ib_rbt_node_t* current; > > ib_rbt_t* rankings_by_id; > > ib_rbt_t* rankings_by_rank; > >}; > > > > >struct fts_table_t { > fts_table_type_t > type; > > table_id_t table_id; > > index_id_t index_id; > > const char* suffix; > > > const dict_table_t* > table; > CHARSET_INFO* charset; > >}; > > >class fts_t { >public: > > > > fts_t( > const dict_table_t* table, > mem_heap_t* heap); > > > ~fts_t(); > > > ib_mutex_t bg_threads_mutex; > > > > unsigned added_synced:1; > > > unsigned dict_locked:1; > > > ulint bg_threads; > > > > > ib_wqueue_t* add_wq; > > > > fts_cache_t* cache; > > > ulint doc_col; > > > ib_vector_t* indexes; > > > > bool in_queue; > > > mem_heap_t* fts_heap; >}; > >struct fts_stopword_t; > > > > > > > >extern const char* fts_default_stopword[]; > > >extern ulong fts_max_cache_size; > > >extern ulong fts_max_total_cache_size; > > >extern size_t fts_result_cache_limit; > > >extern ulong fts_max_token_size; > > >extern ulong fts_min_token_size; > > > >extern bool fts_need_sync; ># 394 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >fts_cache_t* >fts_cache_create( > > dict_table_t* table); > > > > >fts_index_cache_t* >fts_cache_index_cache_create( > > dict_table_t* table, > dict_index_t* index); > > > > > >dberr_t >fts_get_next_doc_id( > > const dict_table_t* table, > doc_id_t* doc_id); > > > > >void >fts_update_next_doc_id( > > trx_t* trx, > const dict_table_t* table, > doc_id_t doc_id) > __attribute__((nonnull(2))); > > > > >fts_doc_ids_t* >fts_doc_ids_create(void); > > > >inline void fts_doc_ids_free(fts_doc_ids_t* doc_ids) >{ > mem_heap_free(static_cast<mem_heap_t*>(doc_ids->self_heap->arg)); >} > > > >void >fts_trx_add_op( > > trx_t* trx, > dict_table_t* table, > doc_id_t doc_id, > fts_row_state state, > ib_vector_t* fts_indexes); > > > > >void >fts_trx_free( > > fts_trx_t* fts_trx); > > > > > > >dberr_t >fts_create_common_tables( > > trx_t* trx, > const dict_table_t* > table, > > const char* name, > bool skip_doc_id_index) > __attribute__((warn_unused_result)); > > > > >dberr_t >fts_create_index_tables( > > trx_t* trx, > const dict_index_t* index) > > __attribute__((warn_unused_result)); > > > > > >dberr_t >fts_create_index_tables_low( > > trx_t* trx, > const dict_index_t* > index, > > const char* table_name, > table_id_t table_id) > __attribute__((warn_unused_result)); > > >void >fts_add_doc_id_column( > > dict_table_t* table, > mem_heap_t* heap); > > > > > > >dberr_t >fts_drop_tables( > > trx_t* trx, > dict_table_t* table); > > > > > >dberr_t >fts_commit( > > trx_t* trx) > __attribute__((warn_unused_result)); ># 539 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >dberr_t >fts_query( > trx_t* trx, > dict_index_t* index, > uint flags, > const byte* query_str, > ulint query_len, > fts_result_t** result) > __attribute__((warn_unused_result)); > > > > >float >fts_retrieve_ranking( > > fts_result_t* result, > doc_id_t doc_id); > > > > >void >fts_query_sort_result_on_rank( > > fts_result_t* result); > > > > >void >fts_query_free_result( > > fts_result_t* result); > > > > >doc_id_t >fts_get_doc_id_from_row( > > dict_table_t* table, > dtuple_t* row); ># 590 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >doc_id_t >fts_get_doc_id_from_rec( > dict_table_t* table, > const rec_t* rec, > const dict_index_t* index, > mem_heap_t* heap); ># 609 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >doc_id_t >fts_update_doc_id( > dict_table_t* table, > upd_field_t* ufield, > doc_id_t* next_doc_id); > > > >void >fts_startup(void); > > > > > >fts_t* >fts_create( > > dict_table_t* table); > > > > >void >fts_free( > > dict_table_t* table); > > > > > >dberr_t >fts_optimize_table( > > dict_table_t* table); > > > >void >fts_optimize_init(void); > > > > > >dberr_t >fts_drop_index_tables( > > trx_t* trx, > dict_index_t* index) > __attribute__((warn_unused_result)); > > > >void >fts_optimize_add_table( > dict_table_t* table); > > > > >void >fts_optimize_remove_table( > > dict_table_t* table); > > >void >fts_optimize_shutdown(); > > > >void >fts_optimize_request_sync_table( > dict_table_t* table); > > > >void >fts_savepoint_take( > > trx_t* trx, > fts_trx_t* fts_trx, > const char* name); > > > >void >fts_savepoint_laststmt_refresh( > > trx_t* trx); > > > >void >fts_savepoint_release( > > trx_t* trx, > const char* name); > > > >void >fts_cache_clear( > fts_cache_t* cache); > > > >void >fts_cache_init( > > fts_cache_t* cache); > > > >void >fts_savepoint_rollback( > > trx_t* trx, > const char* name); > > > >void >fts_savepoint_rollback_last_stmt( > > trx_t* trx); > > > > >void >fts_drop_orphaned_tables(void); > > > > > > > >dberr_t fts_sync_table(dict_table_t* table, bool wait = true); > > > > >void >fts_que_graph_free_check_lock( > > fts_table_t* fts_table, > const fts_index_cache_t*index_cache, > que_t* graph); > > > >CHARSET_INFO* >fts_index_get_charset( > > dict_index_t* index); > > > > >doc_id_t >fts_init_doc_id( > > const dict_table_t* table); > > > > > >char* >fts_get_parent_table_name( > const char* aux_table_name, > ulint aux_table_len); > > > >extern >int >innobase_fts_text_cmp( > > const void* cs, > const void* p1, > const void* p2); > > > >extern >size_t >innobase_fts_casedn_str( > > CHARSET_INFO* cs, > char* src, > > size_t src_len, > char* dst, > > size_t dst_len); > > > > >extern >int >innobase_fts_text_cmp_prefix( > > const void* cs, > const void* p1, > const void* p2); > > > >extern >ulint >innobase_mysql_fts_get_token( > > CHARSET_INFO* charset, > const byte* start, > const byte* end, > > fts_string_t* token); > > > > >ulint >fts_get_token_size( > > const CHARSET_INFO* cs, > const char* token, > ulint len); > > > > >int >fts_tokenize_document_internal( > > MYSQL_FTPARSER_PARAM* param, > const char* doc, > int len); > > > > >ulint >fts_get_rows_count( > > fts_table_t* fts_table); > > > > >doc_id_t >fts_get_max_doc_id( > > dict_table_t* table); > > > > > >CHARSET_INFO* >fts_valid_stopword_table( > > const char* stopword_table_name); > > > > >ulint >fts_load_stopword( > > const dict_table_t* > table, > trx_t* trx, > const char* global_stopword_table, > > const char* session_stopword_table, > > ulint stopword_is_on, > > ulint reload); > > > > > >dberr_t >fts_table_fetch_doc_ids( > > trx_t* trx, > fts_table_t* fts_table, > fts_doc_ids_t* doc_ids); > > > > > > > >ulint >fts_init_index( > > dict_table_t* table, > ulint has_cache_lock); > > > >void >fts_add_index( > > dict_index_t* index, > dict_table_t* table); > > > > >dberr_t >fts_drop_index( > > dict_table_t* table, > dict_index_t* index, > trx_t* trx); > > > > >dberr_t >fts_rename_aux_tables( > > dict_table_t* table, > const char* new_name, > trx_t* trx); > > > > > >ulint >fts_check_cached_index( > > dict_table_t* table); > > > > > > >void >fts_check_corrupt( > dict_table_t* base_table, > trx_t* trx); ># 975 "/buildbot/mariadb-10.2.31/storage/innobase/include/fts0fts.h" >void >fts_add_doc_from_tuple( > fts_trx_table_t*ftt, > doc_id_t doc_id, > const dtuple_t* tuple); > > > > >fts_trx_t* >fts_trx_create( > trx_t* trx); ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0types.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0types.h" >class buf_page_t; > >struct buf_block_t; > >struct buf_chunk_t; > >struct buf_pool_t; > >struct buf_pool_stat_t; > >struct buf_buddy_stat_t; > >struct buf_dblwr_t; > >class FlushObserver; > > >typedef byte buf_frame_t; > > >enum buf_flush_t { > BUF_FLUSH_LRU = 0, > BUF_FLUSH_LIST, > > BUF_FLUSH_SINGLE_PAGE, > > BUF_FLUSH_N_TYPES >}; > > >enum buf_io_fix { > BUF_IO_NONE = 0, > BUF_IO_READ, > BUF_IO_WRITE, > BUF_IO_PIN > > >}; > > > >enum srv_checksum_algorithm_t { > SRV_CHECKSUM_ALGORITHM_CRC32, > > SRV_CHECKSUM_ALGORITHM_STRICT_CRC32, > > SRV_CHECKSUM_ALGORITHM_INNODB, > > SRV_CHECKSUM_ALGORITHM_STRICT_INNODB, > > SRV_CHECKSUM_ALGORITHM_NONE, > > SRV_CHECKSUM_ALGORITHM_STRICT_NONE > >}; > >inline >bool >is_checksum_strict(srv_checksum_algorithm_t algo) >{ > return(algo == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32 > || algo == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB > || algo == SRV_CHECKSUM_ALGORITHM_STRICT_NONE); >} > >inline >bool >is_checksum_strict(ulint algo) >{ > return(algo == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32 > || algo == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB > || algo == SRV_CHECKSUM_ALGORITHM_STRICT_NONE); >} ># 129 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0types.h" >class page_id_t { >public: > > > > > page_id_t(ulint space, ulint page_no) > : m_space(uint32_t(space)), m_page_no(uint32(page_no)) > { > do { } while(0); > do { } while(0); > } > > bool operator==(const page_id_t& rhs) const > { > return m_space == rhs.m_space && m_page_no == rhs.m_page_no; > } > bool operator!=(const page_id_t& rhs) const { return !(*this == rhs); } > > bool operator<(const page_id_t& rhs) const > { > if (m_space == rhs.m_space) { > return m_page_no < rhs.m_page_no; > } > > return m_space < rhs.m_space; > } > > > > uint32_t space() const { return m_space; } > > > > uint32_t page_no() const { return m_page_no; } > > > > ulint fold() const { return (m_space << 20) + m_space + m_page_no; } > > > > void set_page_no(ulint page_no) > { > m_page_no = uint32_t(page_no); > > do { } while(0); > } > > > void set_corrupt_id() > { > m_space = m_page_no = 0xFFFFFFFF; > } > >private: > > > uint32_t m_space; > > > uint32_t m_page_no; > > > > > > > > friend > std::ostream& > operator<<( > std::ostream& out, > const page_id_t page_id); >}; > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 1 ># 208 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0types.h" 2 > > >typedef ib_bpmutex_t BPageMutex; >typedef ib_mutex_t BufPoolMutex; >typedef ib_mutex_t FlushListMutex; >typedef BPageMutex BufPoolZipMutex; >typedef rw_lock_t BPageLock; ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" 1 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0buf.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0buf.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0types.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0buf.h" 2 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0buf.h" >template <size_t SIZE = 512> >class dyn_buf_t { >public: > > class block_t; > > typedef ut_list_node<block_t> block_node_t; > typedef ut_list_base<block_t, ut_list_node<block_t> block_t::*> block_list_t; > > class block_t { > public: > > block_t() > { > do { } while(0); > init(); > } > > ~block_t() { } > > > > > ulint used() const > __attribute__((warn_unused_result)) > { > return(static_cast<ulint>(m_used & ~0x1000000UL)); > } > > > > > byte* start() > __attribute__((warn_unused_result)) > { > return(m_data); > } > > > > byte* begin() > __attribute__((warn_unused_result)) > { > return(m_data); > } > > > > byte* end() > __attribute__((warn_unused_result)) > { > return(begin() + m_used); > } > > > > const byte* begin() const > __attribute__((warn_unused_result)) > { > return(m_data); > } > > > > const byte* end() const > __attribute__((warn_unused_result)) > { > return(begin() + m_used); > } > > private: > > > template <typename Type> > Type push(ib_uint32_t size) > { > Type ptr = reinterpret_cast<Type>(end()); > > m_used += size; > do { } while(0); > > return(ptr); > } > > > > void close(const byte* ptr) > { > > do { } while(0); > do { } while(0); > > > m_used = static_cast<ib_uint32_t>(ptr - begin()); > > do { } while(0); > ; > } > > > > void init() > { > m_used = 0; > ; > ; > } > private: ># 158 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0buf.h" > enum { > MAX_DATA_SIZE = SIZE > - sizeof(block_node_t) > + sizeof(ib_uint32_t) > }; > > > byte m_data[MAX_DATA_SIZE]; > > > block_node_t m_node; > > > > ib_uint32_t m_used; > > friend class dyn_buf_t; > }; > > enum { MAX_DATA_SIZE = block_t::MAX_DATA_SIZE}; > > > dyn_buf_t() > : > m_heap(), > m_size() > { > { (m_list).count = 0; (m_list).start = 0; (m_list).end = 0; (m_list).node = &block_t::m_node; ; }; > push_back(&m_first_block); > } > > > ~dyn_buf_t() > { > erase(); > } > > > void erase() > { > if (m_heap != __null) { > mem_heap_free(m_heap); > m_heap = __null; > > > { (m_list).count = 0; (m_list).start = 0; (m_list).end = 0; (m_list).node = &block_t::m_node; ; }; > push_back(&m_first_block); > } else { > m_first_block.init(); > do { } while(0); > } > > m_size = 0; > } > > > > > > > byte* open(ulint size) > __attribute__((warn_unused_result)) > { > do { } while(0); > do { } while(0); > > block_t* block; > > block = has_space(size) ? back() : add_block(); > > do { } while(0); > ; > > return(block->end()); > } > > > > > void close(const byte* ptr) > { > do { } while(0); > block_t* block = back(); > > m_size -= block->used(); > > block->close(ptr); > > m_size += block->used(); > } > > > > > > > template <typename Type> > Type push(ib_uint32_t size) > { > do { } while(0); > do { } while(0); > > block_t* block; > > block = has_space(size) ? back() : add_block(); > > m_size += size; > > > > return(block->template push<Type>(size)); > } > > > > > > void push(const byte* ptr, ib_uint32_t len) > { > while (len > 0) { > ib_uint32_t n_copied; > > if (len >= MAX_DATA_SIZE) { > n_copied = MAX_DATA_SIZE; > } else { > n_copied = len; > } > > ::memmove(push<byte*>(n_copied), ptr, n_copied); > > ptr += n_copied; > len -= n_copied; > } > } > > > > > > template <typename Type> > const Type at(ulint pos) const > { > block_t* block = const_cast<block_t*>( > const_cast<dyn_buf_t*>(this)->find(pos)); > > return(reinterpret_cast<Type>(block->begin() + pos)); > } > > > > > > template <typename Type> > Type at(ulint pos) > { > block_t* block = const_cast<block_t*>(find(pos)); > > return(reinterpret_cast<Type>(block->begin() + pos)); > } > > > > > ulint size() const > __attribute__((warn_unused_result)) > { ># 336 "/buildbot/mariadb-10.2.31/storage/innobase/include/dyn0buf.h" > return(m_size); > } > > > > > template <typename Functor> > bool for_each_block(Functor& functor) const > { > for (const block_t* block = (m_list).start; > block != __null; > block = (((block)->m_node).next)) { > > if (!functor(block)) { > return(false); > } > } > > return(true); > } > > > > > template <typename Functor> > bool for_each_block_in_reverse(Functor& functor) const > { > for (block_t* block = (m_list).end; > block != __null; > block = (((block)->m_node).prev)) { > > if (!functor(block)) { > return(false); > } > } > > return(true); > } > > > > > template <typename Functor> > bool for_each_block_in_reverse(const Functor& functor) const > { > for (block_t* block = (m_list).end; > block != __null; > block = (((block)->m_node).prev)) { > > if (!functor(block)) { > return(false); > } > } > > return(true); > } > > > > block_t* front() > __attribute__((warn_unused_result)) > { > do { } while(0); > return((m_list).start); > } > > > > bool is_small() const > __attribute__((warn_unused_result)) > { > return(m_heap == __null); > } > >private: > > dyn_buf_t(const dyn_buf_t&); > dyn_buf_t& operator=(const dyn_buf_t&); > > > > void push_back(block_t* block) > { > block->init(); > > ut_list_append(m_list, block); > } > > > block_t* back() > { > return((m_list).end); > } > > > > bool has_space(ulint size) const > { > return(back()->m_used + size <= MAX_DATA_SIZE); > } > > > > bool has_space(ulint size) > { > return(back()->m_used + size <= MAX_DATA_SIZE); > } > > > > > > block_t* find(ulint& pos) > { > block_t* block; > > do { } while(0); > > for (block = (m_list).start; > block != __null; > block = (((block)->m_node).next)) { > > if (pos < block->used()) { > break; > } > > pos -= block->used(); > } > > do { } while(0); > do { } while(0); > > return(block); > } > > > > block_t* add_block() > { > block_t* block; > > if (m_heap == __null) { > m_heap = mem_heap_create_func((sizeof(*block)), 0); > } > > block = reinterpret_cast<block_t*>( > mem_heap_alloc(m_heap, sizeof(*block))); > > push_back(block); > > return(block); > } > >private: > > mem_heap_t* m_heap; > > > block_list_t m_list; > > > ulint m_size; > > > > > block_t m_first_block; >}; > >typedef dyn_buf_t<512> mtr_buf_t; > > >struct mtr_buf_copy_t { > > mtr_buf_t m_buf; > > > > bool operator()(const mtr_buf_t::block_t* block) > { > byte* buf = m_buf.open(block->used()); > memcpy(buf, block->begin(), block->used()); > m_buf.close(buf + block->used()); > return(true); > } >}; ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0types.h" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0types.h" >typedef ib_uint64_t lsn_t; > > > > > > >struct RedoLog; > > >struct redo_recover_t; ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" 1 ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0api.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0api.h" >class buf_page_t; > > >struct fil_node_t; > > > > > >bool >buf_page_should_punch_hole( > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > > > > >ulint >buf_page_get_trim_length( > const buf_page_t* bpage, > ulint write_length) > __attribute__((warn_unused_result)); > > > > > >bool >fil_node_should_punch_hole( > const fil_node_t* node) > __attribute__((warn_unused_result)); > > > > > >void >fil_space_set_punch_hole( > fil_node_t* node, > bool val); ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" 2 > > ># 1 "/usr/include/dirent.h" 1 3 4 ># 28 "/usr/include/dirent.h" 3 4 >extern "C" { ># 62 "/usr/include/dirent.h" 3 4 ># 1 "/usr/include/bits/dirent.h" 1 3 4 ># 22 "/usr/include/bits/dirent.h" 3 4 >struct dirent > { > > > > > __ino64_t d_ino; > __off64_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))); ># 166 "/usr/include/dirent.h" 3 4 >extern struct dirent *readdir (DIR *__dirp) __asm__ ("" "readdir64") > __attribute__ ((__nonnull__ (1))); > > > > > > >extern struct dirent64 *readdir64 (DIR *__dirp) __attribute__ ((__nonnull__ (1))); ># 190 "/usr/include/dirent.h" 3 4 >extern int readdir_r (DIR *__restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result) __asm__ ("" "readdir64_r") > > > > __attribute__ ((__nonnull__ (1, 2, 3))); > > > > > > >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) throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern void seekdir (DIR *__dirp, long int __pos) throw () __attribute__ ((__nonnull__ (1))); > > >extern long int telldir (DIR *__dirp) throw () __attribute__ ((__nonnull__ (1))); > > > > > >extern int dirfd (DIR *__dirp) throw () __attribute__ ((__nonnull__ (1))); ># 245 "/usr/include/dirent.h" 3 4 ># 1 "/usr/lib/gcc/aarch64-redhat-linux/4.8.5/include/stddef.h" 1 3 4 ># 246 "/usr/include/dirent.h" 2 3 4 ># 263 "/usr/include/dirent.h" 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 **)) __asm__ ("" "scandir64") > > > > > > __attribute__ ((__nonnull__ (1, 2))); ># 278 "/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))); ># 301 "/usr/include/dirent.h" 3 4 >extern int scandirat (int __dfd, const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)) __asm__ ("" "scandirat64") > > > > > > __attribute__ ((__nonnull__ (2, 3))); > > > > > > > >extern int scandirat64 (int __dfd, const char *__restrict __dir, > struct dirent64 ***__restrict __namelist, > int (*__selector) (const struct dirent64 *), > int (*__cmp) (const struct dirent64 **, > const struct dirent64 **)) > __attribute__ ((__nonnull__ (2, 3))); ># 330 "/usr/include/dirent.h" 3 4 >extern int alphasort (const struct dirent **__e1, const struct dirent **__e2) throw () __asm__ ("" "alphasort64") > > > __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern int alphasort64 (const struct dirent64 **__e1, > const struct dirent64 **__e2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); ># 359 "/usr/include/dirent.h" 3 4 >extern __ssize_t getdirentries (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t *__restrict __basep) throw () __asm__ ("" "getdirentries64") > > > > __attribute__ ((__nonnull__ (2, 4))); > > > > > > >extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, > size_t __nbytes, > __off64_t *__restrict __basep) > throw () __attribute__ ((__nonnull__ (2, 4))); ># 385 "/usr/include/dirent.h" 3 4 >extern int versionsort (const struct dirent **__e1, const struct dirent **__e2) throw () __asm__ ("" "versionsort64") > > > > __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > > > > >extern int versionsort64 (const struct dirent64 **__e1, > const struct dirent64 **__e2) > throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); > > > >} ># 44 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" 2 > > > > > >struct fil_node_t; >struct fil_space_t; > >extern bool os_has_said_disk_full; >extern my_bool srv_use_trim; > > >typedef ib_uint64_t os_offset_t; ># 79 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >typedef DIR* os_file_dir_t; > > >typedef int os_file_t; ># 91 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >static const os_file_t OS_FILE_CLOSED = os_file_t(~0); > > >struct pfs_os_file_t >{ > > pfs_os_file_t(os_file_t file = OS_FILE_CLOSED) : m_file(file) > > > > {} > > > os_file_t m_file; > > > > > > > operator os_file_t() const { return m_file; } > > > void operator=(os_file_t file) { m_file = file; } >}; ># 127 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >enum os_file_create_t { > OS_FILE_OPEN = 51, > > OS_FILE_CREATE, > > OS_FILE_OVERWRITE, > > OS_FILE_OPEN_RAW, > > OS_FILE_CREATE_PATH, > OS_FILE_OPEN_RETRY, > > > > > OS_FILE_ON_ERROR_NO_EXIT = 128, > OS_FILE_ON_ERROR_SILENT = 256 > > > >}; > >static const ulint OS_FILE_READ_ONLY = 333; >static const ulint OS_FILE_READ_WRITE = 444; > > >static const ulint OS_FILE_READ_ALLOW_DELETE = 555; > > >static const ulint OS_FILE_AIO = 61; >static const ulint OS_FILE_NORMAL = 62; > > > >static const ulint OS_DATA_FILE = 100; >static const ulint OS_LOG_FILE = 101; >static const ulint OS_DATA_TEMP_FILE = 102; > > > >static const ulint OS_FILE_NAME_TOO_LONG = 36; >static const ulint OS_FILE_NOT_FOUND = 71; >static const ulint OS_FILE_DISK_FULL = 72; >static const ulint OS_FILE_ALREADY_EXISTS = 73; >static const ulint OS_FILE_PATH_ERROR = 74; > > >static const ulint OS_FILE_AIO_RESOURCES_RESERVED = 75; > >static const ulint OS_FILE_SHARING_VIOLATION = 76; >static const ulint OS_FILE_ERROR_NOT_SPECIFIED = 77; >static const ulint OS_FILE_INSUFFICIENT_RESOURCE = 78; >static const ulint OS_FILE_AIO_INTERRUPTED = 79; >static const ulint OS_FILE_OPERATION_ABORTED = 80; >static const ulint OS_FILE_ACCESS_VIOLATION = 81; >static const ulint OS_FILE_OPERATION_NOT_SUPPORTED = 125; >static const ulint OS_FILE_ERROR_MAX = 200; ># 198 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >class IORequest { >public: > > enum { > READ = 1, > WRITE = 2, > > > DBLWR_RECOVER = 4, > > > > > DATA_FILE = 8, > > > LOG = 16, > > > DISABLE_PARTIAL_IO_WARNINGS = 32, ># 226 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" > DO_NOT_WAKE = 64, > > > IGNORE_MISSING = 128, > > > PUNCH_HOLE = 256, > }; > > > IORequest() > : > m_bpage(__null), > m_fil_node(__null), > m_type(READ) > { > > } > > > > > explicit IORequest(ulint type) > : > m_bpage(__null), > m_fil_node(__null), > m_type(static_cast<uint16_t>(type)) > { > if (!is_punch_hole_supported() || !srv_use_trim) { > clear_punch_hole(); > } > } > > > > > > IORequest(ulint type, buf_page_t* bpage) > : > m_bpage(bpage), > m_fil_node(__null), > m_type(static_cast<uint16_t>(type)) > { > if (bpage && buf_page_should_punch_hole(bpage)) { > set_punch_hole(); > } > > if (!is_punch_hole_supported() || !srv_use_trim) { > clear_punch_hole(); > } > } > > > ~IORequest() { } > > > static bool ignore_missing(ulint type) > __attribute__((warn_unused_result)) > { > return((type & IGNORE_MISSING) == IGNORE_MISSING); > } > > > bool is_read() const > __attribute__((warn_unused_result)) > { > return((m_type & READ) == READ); > } > > > bool is_write() const > __attribute__((warn_unused_result)) > { > return((m_type & WRITE) == WRITE); > } > > > bool is_log() const > __attribute__((warn_unused_result)) > { > return((m_type & LOG) == LOG); > } > > > bool is_wake() const > __attribute__((warn_unused_result)) > { > return((m_type & DO_NOT_WAKE) == 0); > } > > > void clear_punch_hole() > { > m_type &= ~PUNCH_HOLE; > } > > > bool is_partial_io_warning_disabled() const > __attribute__((warn_unused_result)) > { > return((m_type & DISABLE_PARTIAL_IO_WARNINGS) > == DISABLE_PARTIAL_IO_WARNINGS); > } > > > void disable_partial_io_warnings() > { > m_type |= DISABLE_PARTIAL_IO_WARNINGS; > } > > > bool ignore_missing() const > __attribute__((warn_unused_result)) > { > return(ignore_missing(m_type)); > } > > > bool punch_hole() const > __attribute__((warn_unused_result)) > { > return((m_type & PUNCH_HOLE) == PUNCH_HOLE); > } > > > bool validate() const > __attribute__((warn_unused_result)) > { > return(is_read() ^ is_write()); > } > > > void set_punch_hole() > { > if (is_punch_hole_supported() && srv_use_trim) { > m_type |= PUNCH_HOLE; > } > } > > > void clear_do_not_wake() > { > m_type &= ~DO_NOT_WAKE; > } > > > > void set_fil_node(fil_node_t* node) > { > if (!srv_use_trim || > (node && !fil_node_should_punch_hole(node))) { > clear_punch_hole(); > } > > m_fil_node = node; > } > > > > bool operator==(const IORequest& rhs) const > { > return(m_type == rhs.m_type); > } > > > void dblwr_recover() > { > m_type |= DBLWR_RECOVER; > } > > > bool is_dblwr_recover() const > __attribute__((warn_unused_result)) > { > return((m_type & DBLWR_RECOVER) == DBLWR_RECOVER); > } > > > static bool is_punch_hole_supported() > { > > > > > do { } while(0) > > ; > > > return(true); > > > > } > > ulint get_trim_length(ulint write_length) const > { > return (m_bpage ? > buf_page_get_trim_length(m_bpage, write_length) > : 0); > } > > bool should_punch_hole() const { > return (m_fil_node ? > fil_node_should_punch_hole(m_fil_node) > : false); > } > > void space_no_punch_hole() const { > if (m_fil_node) { > fil_space_set_punch_hole(m_fil_node, false); > } > } > > > > > > > dberr_t punch_hole(os_file_t fh, os_offset_t off, ulint len); > >private: > > buf_page_t* m_bpage; > > > fil_node_t* m_fil_node; > > > uint16_t m_type; >}; > > > > >struct os_file_size_t { > > os_offset_t m_total_size; > > > > os_offset_t m_alloc_size; >}; > > >static const ulint OS_AIO_N_PENDING_IOS_PER_THREAD = 32; > > > >static const ulint OS_AIO_NORMAL = 21; > > >static const ulint OS_AIO_IBUF = 22; > > >static const ulint OS_AIO_LOG = 23; > > > > > > > >static const ulint OS_AIO_SYNC = 24; > > >extern ulint os_n_file_reads; >extern ulint os_n_file_writes; >extern ulint os_n_fsyncs; > > > >enum os_file_type_t { > OS_FILE_TYPE_UNKNOWN = 0, > OS_FILE_TYPE_FILE, > OS_FILE_TYPE_DIR, > OS_FILE_TYPE_LINK, > OS_FILE_TYPE_BLOCK >}; ># 523 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >struct os_file_stat_t { > char name[4000]; > os_file_type_t type; > os_offset_t size; > os_offset_t alloc_size; > > size_t block_size; > > time_t ctime; > time_t mtime; > time_t atime; > bool rw_perm; > > >}; > > > > > > > >FILE* >os_file_create_tmpfile( > const char* path); ># 561 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >os_file_dir_t >os_file_opendir( > const char* dirname, > bool 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); ># 596 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >bool >os_file_create_directory( > const char* pathname, > bool fail_if_exists); ># 612 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >pfs_os_file_t >os_file_create_simple_func( > const char* name, > ulint create_mode, > ulint access_type, > bool read_only, > bool* success); ># 632 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >pfs_os_file_t >os_file_create_simple_no_error_handling_func( > const char* name, > ulint create_mode, > ulint access_type, > bool read_only, > bool* success) > __attribute__((warn_unused_result)); ># 649 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >void >os_file_set_nocache( > > int fd, > const char* file_name, > const char* operation_name); ># 674 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >pfs_os_file_t >os_file_create_func( > const char* name, > ulint create_mode, > ulint purpose, > ulint type, > bool read_only, > bool* success) > __attribute__((warn_unused_result)); > > > > >bool >os_file_delete_func(const char* name); > > > > > >bool >os_file_delete_if_exists_func(const char* name, bool* exist); ># 704 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >bool >os_file_rename_func(const char* oldpath, const char* newpath); > > > > > > > >bool >os_file_close_func(os_file_t file); ># 1223 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >os_file_size_t >os_file_get_size( > const char* filename) > __attribute__((warn_unused_result)); > > > > >os_offset_t >os_file_get_size( > os_file_t file) > __attribute__((warn_unused_result)); ># 1251 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >bool >os_file_set_size( > const char* name, > os_file_t file, > os_offset_t size, > bool is_sparse = false) > __attribute__((warn_unused_result)); > > > > >bool >os_file_set_eof( > FILE* file); > > > > > > > >bool >os_file_truncate( > const char* pathname, > os_file_t file, > os_offset_t size, > bool allow_shrink = false); > > > > > > >bool >os_file_flush_func( > os_file_t file); ># 1295 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >ulint >os_file_get_last_error( > bool report); ># 1308 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >dberr_t >os_file_read_func( > const IORequest& type, > os_file_t file, > void* buf, > os_offset_t offset, > ulint n) > __attribute__((warn_unused_result)); > > > > > > > >void >os_file_read_string( > FILE* file, > char* str, > ulint size); ># 1340 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >dberr_t >os_file_read_no_error_handling_func( > const IORequest& type, > os_file_t file, > void* buf, > os_offset_t offset, > ulint n, > ulint* o) > __attribute__((warn_unused_result)); ># 1359 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >dberr_t >os_file_write_func( > const IORequest& type, > const char* name, > os_file_t file, > const void* buf, > os_offset_t offset, > ulint n) > __attribute__((warn_unused_result)); > > > > > > >bool >os_file_status( > const char* path, > bool* exists, > os_file_type_t* type); ># 1392 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >char* >os_file_make_new_pathname( > const char* old_path, > const char* new_name); ># 1409 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >void >os_file_make_data_dir_path( > char* data_dir_path); > > > >dberr_t >os_file_create_subdirs_if_needed( > const char* path); ># 1435 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >bool >os_aio_init( > ulint n_read_segs, > ulint n_write_segs, > ulint n_slots_sync); > > > >void >os_aio_free(); ># 1465 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >dberr_t >os_aio_func( > IORequest& type, > ulint mode, > const char* name, > pfs_os_file_t file, > void* buf, > os_offset_t offset, > ulint n, > bool read_only, > fil_node_t* m1, > void* m2); > > > >void >os_aio_wake_all_threads_at_shutdown(); > > > >void >os_aio_wait_until_no_pending_writes(); > > >void >os_aio_simulated_wake_handler_threads(); ># 1524 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >dberr_t >os_aio_handler( > ulint segment, > fil_node_t** m1, > void** m2, > IORequest* type); > > > >void >os_aio_print(FILE* file); > > >void >os_aio_refresh_stats(); > > > >bool >os_aio_all_slots_free(); ># 1561 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >dberr_t >os_file_get_status( > const char* path, > os_file_stat_t* stat_info, > bool check_rw_perm, > bool read_only); > > > > > > >int >innobase_mysql_tmpfile( > const char* path); > > > >void >os_file_set_umask(ulint umask); ># 1624 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" >bool >os_is_sparse_file_supported( > os_file_t fh) > __attribute__((warn_unused_result)); > > > > > > >dberr_t >os_file_punch_hole( > os_file_t fh, > os_offset_t off, > os_offset_t len) > __attribute__((warn_unused_result)); > > > > >void os_normalize_path(char* str); > > > > > >static inline >bool >is_absolute_path( > const char* path) >{ > if (path[0] == '/') { > return(true); > } > > > > > > > > return(false); >} > > > > >__attribute__((visibility ("hidden"))) >ulint >os_file_get_block_size( > > os_file_t file, > const char* name); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.ic" 1 ># 1679 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0file.h" 2 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" 2 > > > > > > >struct log_group_t; ># 59 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" >typedef ulint (*log_checksum_func_t)(const byte* log_block); > > > >extern log_checksum_func_t log_checksum_algorithm_ptr; > > > > > > >static inline >lsn_t >log_reserve_and_write_fast( > const void* str, > ulint len, > lsn_t* start_lsn); > > > > > >static inline >void >log_free_check(void); > > > > >void >log_buffer_extend( > ulint len); > > > > > > >void >log_margin_checkpoint_age( > ulint len); > > > > >lsn_t >log_reserve_and_open( > ulint len); > > > >void >log_write_low( > > const byte* str, > ulint str_len); > > > >lsn_t >log_close(void); > > > > >static inline >lsn_t >log_get_lsn(void); > > > > >static inline >lsn_t >log_get_lsn_nowait(void); > > > > >static inline >ib_uint64_t >log_get_flush_lsn(void); > > > > > >static inline >lsn_t >log_get_capacity(void); > > > > > >static inline >lsn_t >log_get_max_modified_age_async(void); > > >void >log_sys_init(); > > > >void >log_init(ulint n_files); > > > > > > >bool >log_set_capacity(ulonglong file_size) > __attribute__((warn_unused_result)); > > > >void >log_io_complete( > > log_group_t* group); > > > > > >void >log_write_up_to( > > lsn_t lsn, > > bool flush_to_disk); > > > > > >void >log_buffer_flush_to_disk( > bool sync = true); > > > > > >void >log_buffer_sync_in_background( > > bool flush); > > > > > > >bool log_checkpoint(bool sync); > > >void log_make_checkpoint(); > > > > > > >void >logs_empty_and_mark_files_at_shutdown(void); > > > > >void >log_group_header_read( > const log_group_t* group, > ulint header); > > > >void >log_write_checkpoint_info(bool sync, lsn_t end_lsn); > > > > >mtr_buf_t* >log_append_on_checkpoint( > mtr_buf_t* buf); > > > > > >void >log_check_margins(void); > > > > > >void >log_group_set_fields( > > log_group_t* group, > lsn_t lsn); > > > > >static inline >ulint >log_block_get_flush_bit( > > const byte* log_block); > > > >static inline >ulint >log_block_get_hdr_no( > > const byte* log_block); > > > >static inline >ulint >log_block_get_data_len( > > const byte* log_block); > > >static inline >void >log_block_set_data_len( > > byte* log_block, > ulint len); > > > >static inline >ulint >log_block_calc_checksum( > > const byte* block); > > > > >static inline >ulint >log_block_calc_checksum_crc32( > const byte* block); > > > > >static inline >ulint >log_block_calc_checksum_none(const byte* block); > > > > >static inline >ulint >log_block_get_checksum( > > const byte* log_block); > > >static inline >void >log_block_set_checksum( > > byte* log_block, > ulint checksum); > > > > >static inline >ulint >log_block_get_first_rec_group( > > const byte* log_block); > > >static inline >void >log_block_set_first_rec_group( > > byte* log_block, > ulint offset); > > > >static inline >ulint >log_block_get_checkpoint_no( > > const byte* log_block); > > >static inline >void >log_block_init( > > byte* log_block, > lsn_t lsn); > > > >static inline >ulint >log_block_convert_lsn_to_no( > > lsn_t lsn); > > >void >log_print( > > FILE* file); > > > >ulint >log_peek_lsn( > > lsn_t* lsn); > > >void >log_refresh_stats(void); > > > >void >log_group_close_all(void); > > >void >log_shutdown(); > > >extern my_bool innodb_log_checksums; ># 535 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" >static const ulonglong log_group_max_size = > ((ulonglong((4294967295U)) + 1) * (1U << 12) - 1); > > >enum log_group_state_t { > > LOG_GROUP_OK, > > LOG_GROUP_CORRUPTED >}; > >typedef ib_mutex_t LogSysMutex; >typedef ib_mutex_t FlushOrderMutex; > > > > > > >struct log_group_t{ > > ulint n_files; > > uint32_t format; > > > uint32_t subformat; > > lsn_t file_size; > > log_group_state_t state; > > lsn_t lsn; > > lsn_t lsn_offset; > > > > lsn_t scanned_lsn; > > byte* checkpoint_buf_ptr; > > byte* checkpoint_buf; > > > bool is_encrypted() const > { > return((format & (1U<<31)) != 0); > } > > > inline lsn_t capacity() const > { > return((file_size - (4 * 512U)) * n_files); > } >}; > > >struct log_t{ > char pad1[128]; > > > > lsn_t lsn; > ulint buf_free; > > > char pad2[128]; > LogSysMutex mutex; > char pad3[128]; > LogSysMutex write_mutex; > > char pad4[128]; > FlushOrderMutex log_flush_order_mutex; > > > > > > > > byte* buf_ptr; > > byte* buf; > > > > > > > bool first_in_use; > > > ulint buf_size; > ulint max_buf_free; > > > bool check_flush_or_checkpoint; ># 642 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" > log_group_t log; > > > > ulint buf_next_to_write; > > > > > > > lsn_t write_lsn; > lsn_t current_flush_lsn; > > lsn_t flushed_to_disk_lsn; > > > ulint n_pending_flushes; > > > os_event_t flush_event; > > > > ulint n_log_ios; > > ulint n_log_ios_old; > > time_t last_printout_time; > > > > > lsn_t log_group_capacity; > > > > > lsn_t max_modified_age_async; > > > > > > lsn_t max_modified_age_sync; > > > > > > lsn_t max_checkpoint_age_async; > > > > > lsn_t max_checkpoint_age; > > > > ib_uint64_t next_checkpoint_no; > > lsn_t last_checkpoint_lsn; > > lsn_t next_checkpoint_lsn; > > mtr_buf_t* append_on_checkpoint; > > > > > > > ulint n_pending_checkpoint_writes; > > > rw_lock_t checkpoint_lock; > > > > byte* checkpoint_buf_ptr; > byte* checkpoint_buf; > > > > > bool is_encrypted() const > { > return(log.is_encrypted()); > } >}; > > >extern log_t* log_sys; ># 783 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" >lsn_t >log_group_calc_lsn_offset( > lsn_t lsn, > const log_group_t* group); > > >extern ulonglong innodb_scrub_log_speed; > > >extern os_event_t log_scrub_event; > >extern bool log_scrub_thread_active; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" 1 ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" 1 ># 46 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" 2 > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0conc.h" 1 ># 47 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0conc.h" >extern ulint srv_max_n_threads; > > > > > >extern ulong srv_thread_concurrency; > >struct row_prebuilt_t; > > > > >void >srv_conc_enter_innodb( > row_prebuilt_t* prebuilt); > > > > >void >srv_conc_force_enter_innodb( > > trx_t* trx); > > > > > >void >srv_conc_force_exit_innodb( > > trx_t* trx); > > > > >ulint >srv_conc_get_waiting_threads(void); > > > > >ulint >srv_conc_get_active_threads(void); ># 50 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0checksum.h" 1 ># 50 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0checksum.h" >uint32_t buf_calc_page_crc32(const byte* page); > > > > > > > >uint32_t >buf_calc_page_new_checksum(const byte* page); ># 69 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0checksum.h" >uint32_t >buf_calc_page_old_checksum(const byte* page); > > > > >const char* >buf_checksum_algorithm_name(srv_checksum_algorithm_t algo); > >extern ulong srv_checksum_algorithm; ># 51 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" 1 ># 52 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_stage.h" 1 ># 54 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" 2 > > > >struct srv_stats_t >{ > typedef ib_counter_t<ulint, 64> ulint_ctr_64_t; > typedef simple_counter<lsn_t> lsn_ctr_1_t; > typedef simple_counter<ulint> ulint_ctr_1_t; > typedef simple_counter<int64_t> int64_ctr_1_t; > > > ulint_ctr_1_t data_written; > > > ulint_ctr_1_t log_write_requests; > > > ulint_ctr_1_t log_writes; > > > ulint_ctr_1_t log_padded; > > > lsn_ctr_1_t os_log_written; > > > > ulint_ctr_1_t os_log_pending_writes; > > > > ulint_ctr_1_t log_waits; > > > ulint_ctr_1_t dblwr_writes; > > > > ulint_ctr_1_t dblwr_pages_written; > > > ulint_ctr_1_t buf_pool_write_requests; > > > > > ulint_ctr_1_t buf_pool_wait_free; > > > > ulint_ctr_1_t buf_pool_flushed; > > > > ulint_ctr_1_t buf_pool_reads; > > > ulint_ctr_64_t page_compression_saved; > > ulint_ctr_64_t index_pages_written; > > ulint_ctr_64_t non_index_pages_written; > > ulint_ctr_64_t pages_page_compressed; > > ulint_ctr_64_t page_compressed_trim_op; > > ulint_ctr_64_t pages_page_decompressed; > > ulint_ctr_64_t pages_page_compression_error; > > ulint_ctr_64_t pages_encrypted; > > ulint_ctr_64_t pages_decrypted; > > ulint_ctr_64_t n_merge_blocks_encrypted; > > ulint_ctr_64_t n_merge_blocks_decrypted; > > ulint_ctr_64_t n_rowlog_blocks_encrypted; > > ulint_ctr_64_t n_rowlog_blocks_decrypted; > > > ulint_ctr_1_t data_read; > > > int64_ctr_1_t n_lock_wait_time; > > > ulint_ctr_1_t n_lock_wait_count; > > > simple_counter<ulint, true> n_lock_wait_current_count; > > > ulint_ctr_64_t n_rows_read; > > > ulint_ctr_64_t n_rows_updated; > > > ulint_ctr_64_t n_rows_deleted; > > > ulint_ctr_64_t n_rows_inserted; > > > ulint_ctr_64_t n_system_rows_read; > > > ulint_ctr_64_t n_system_rows_updated; > > > ulint_ctr_64_t n_system_rows_deleted; > > > ulint_ctr_64_t n_system_rows_inserted; > > > ulint_ctr_64_t n_sec_rec_cluster_reads; > > > ulint_ctr_64_t n_sec_rec_cluster_reads_avoided; > > > ulint_ctr_64_t page0_read; > > > ulint_ctr_64_t n_key_requests; > > > ulint_ctr_64_t n_log_scrubs; > > > ulint_ctr_64_t key_rotation_list_length; > > > ulint_ctr_64_t n_temp_blocks_encrypted; > > > ulint_ctr_64_t n_temp_blocks_decrypted; >}; > >extern const char* srv_main_thread_op_info; > > >extern const char srv_mysql50_table_name_prefix[10]; > > > >extern os_event_t srv_monitor_event; > > > >extern os_event_t srv_error_event; > > > >extern os_event_t srv_buf_dump_event; > > >extern os_event_t srv_buf_resize_event; > > > >extern char* srv_buf_dump_filename; > > > >extern char srv_buffer_pool_dump_at_shutdown; >extern char srv_buffer_pool_load_at_startup; > > >extern char srv_disable_sort_file_cache; > > > > > > >extern ib_mutex_t page_zip_stat_per_index_mutex; > >extern ib_mutex_t srv_monitor_file_mutex; > >extern FILE* srv_monitor_file; > > > >extern ib_mutex_t srv_misc_tmpfile_mutex; > >extern FILE* srv_misc_tmpfile; > > > >extern char* srv_data_home; > > > > >extern my_bool srv_read_only_mode; > > >extern my_bool high_level_read_only; > > >extern my_bool srv_file_per_table; > > >extern my_bool srv_safe_truncate; > >extern ulong srv_thread_sleep_delay; > >extern ulong srv_adaptive_max_sleep_delay; > > >extern ulint srv_file_format; > > > >extern ulint srv_max_file_format_at_startup; > > >extern ulint srv_locks_unsafe_for_binlog; > > >extern ulong srv_sort_buf_size; > >extern unsigned long long srv_online_max_size; > > > > > >extern my_bool srv_use_native_aio; >extern my_bool srv_numa_interleave; > > >extern my_bool srv_use_trim; > > >extern my_bool srv_use_atomic_writes; > > >extern ulong innodb_compression_algorithm; > > > > > > >extern long srv_mtflush_threads; > > >extern my_bool srv_use_mtflush; > > >extern bool srv_was_started; > > >extern char* srv_undo_dir; > > >extern ulong srv_undo_tablespaces; > > >extern ulint srv_undo_tablespaces_open; > > > > >extern ulint srv_undo_tablespaces_active; > > >extern ulint srv_undo_space_id_start; > > > > >inline >bool >srv_is_undo_tablespace(ulint space_id) >{ > return srv_undo_space_id_start > 0 > && space_id >= srv_undo_space_id_start > && space_id < (srv_undo_space_id_start > + srv_undo_tablespaces_open); >} > > >extern ulong srv_undo_logs; > > >extern unsigned long long srv_max_undo_log_size; > >extern uint srv_n_fil_crypt_threads; >extern uint srv_n_fil_crypt_threads_started; > > >extern ulong srv_purge_rseg_truncate_frequency; > > >extern my_bool srv_undo_log_truncate; > > > >extern my_bool srv_prefix_index_cluster_optimization; > > >extern const ulint SRV_UNDO_TABLESPACE_SIZE_IN_PAGES; > >extern char* srv_log_group_home_dir; > > > >extern ulong srv_n_log_files; > > >extern ulonglong srv_log_file_size; >extern ulint srv_log_buffer_size; >extern ulong srv_flush_log_at_trx_commit; >extern uint srv_flush_log_at_timeout; >extern ulong srv_log_write_ahead_size; >extern char srv_adaptive_flushing; >extern my_bool srv_flush_sync; > > > >extern os_event_t srv_allow_writes_event; > > > > > >extern my_bool srv_load_corrupted; > > >extern ulint srv_buf_pool_size; > >extern const ulint srv_buf_pool_min_size; > >extern const ulint srv_buf_pool_def_size; > > >extern ulong srv_buf_pool_chunk_unit; > >extern ulong srv_buf_pool_instances; > >extern const ulong srv_buf_pool_instances_default; > >extern ulong srv_n_page_hash_locks; > >extern ulong srv_LRU_scan_depth; > >extern ulong srv_buf_pool_dump_pct; > >extern ulong srv_flush_neighbors; > >extern ulint srv_buf_pool_old_size; > >extern ulint srv_buf_pool_base_size; > >extern ulint srv_buf_pool_curr_size; > >extern ulong srv_buf_pool_dump_pct; > >extern ulint srv_lock_table_size; > >extern ulint srv_n_file_io_threads; >extern my_bool srv_random_read_ahead; >extern ulong srv_read_ahead_threshold; >extern ulint srv_n_read_io_threads; >extern ulint srv_n_write_io_threads; > > > >extern my_bool srv_defragment; >extern uint srv_defragment_n_pages; >extern uint srv_defragment_stats_accuracy; >extern uint srv_defragment_fill_factor_n_recs; >extern double srv_defragment_fill_factor; >extern uint srv_defragment_frequency; >extern ulonglong srv_defragment_interval; > >extern ulong srv_idle_flush_pct; > >extern uint srv_change_buffer_max_size; > > >extern ulong srv_io_capacity; > > > > > >extern ulong srv_max_io_capacity; ># 458 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >extern ulong srv_innodb_stats_method; > >extern char* srv_file_flush_method_str; > >extern ulint srv_max_n_open_files; > >extern ulong srv_n_page_cleaners; > >extern double srv_max_dirty_pages_pct; >extern double srv_max_dirty_pages_pct_lwm; > >extern double srv_adaptive_flushing_lwm; >extern ulong srv_flushing_avg_loops; > >extern ulong srv_force_recovery; > >extern uint srv_fast_shutdown; ># 484 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >extern st_my_thread_var *srv_running; > >extern ulint srv_innodb_status; > >extern unsigned long long srv_stats_transient_sample_pages; >extern my_bool srv_stats_persistent; >extern unsigned long long srv_stats_persistent_sample_pages; >extern my_bool srv_stats_auto_recalc; >extern my_bool srv_stats_include_delete_marked; >extern unsigned long long srv_stats_modified_counter; >extern my_bool srv_stats_sample_traditional; > >extern ulint srv_use_doublewrite_buf; >extern ulong srv_doublewrite_batch_size; >extern ulong srv_checksum_algorithm; > >extern double srv_max_buf_pool_modified_pct; >extern my_bool srv_force_primary_key; > >extern double srv_max_buf_pool_modified_pct; >extern ulong srv_max_purge_lag; >extern ulong srv_max_purge_lag_delay; > >extern ulong srv_replication_delay; > >extern my_bool innodb_encrypt_temporary_tables; > > > > >enum srv_operation_mode { > > SRV_OPERATION_NORMAL, > > SRV_OPERATION_BACKUP, > > SRV_OPERATION_RESTORE, > > SRV_OPERATION_RESTORE_DELTA, > > SRV_OPERATION_RESTORE_EXPORT >}; > > >extern enum srv_operation_mode srv_operation; > >extern my_bool srv_print_innodb_monitor; >extern my_bool srv_print_innodb_lock_monitor; >extern ulint srv_print_verbose_log; > >extern bool srv_monitor_active; >extern bool srv_error_monitor_active; > > >extern bool srv_buf_dump_thread_active; > > >extern bool srv_buf_resize_thread_active; > > >extern bool srv_dict_stats_thread_active; > > >extern my_bool srv_scrub_log; > >extern ulong srv_n_spin_wait_rounds; >extern ulong srv_n_free_tickets_to_enter; >extern ulong srv_thread_sleep_delay; >extern uint srv_spin_wait_delay; > >extern ulint srv_truncated_status_writes; > >extern ulong srv_available_undo_logs; ># 575 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >extern ulint srv_dml_needed_delay; > > > > > >extern const char* srv_io_thread_op_info[]; >extern const char* srv_io_thread_function[]; > > >extern ulong srv_n_purge_threads; > > >extern ulong srv_purge_batch_size; > > >extern ulong srv_sync_array_size; > > >extern my_bool srv_print_all_deadlocks; > >extern my_bool srv_cmp_per_index_enabled; > > >extern ulong srv_encrypt_tables; > > >extern struct export_var_t export_vars; > > >extern srv_stats_t srv_stats; > > >extern uint srv_simulate_comp_failures; > > > > >extern ulong srv_fatal_semaphore_wait_threshold; > > >extern ulong srv_buf_dump_status_frequency; ># 695 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >enum srv_flush_t { > SRV_FSYNC = 1, > SRV_O_DSYNC, > SRV_LITTLESYNC, > > > SRV_NOSYNC, > SRV_O_DIRECT, > > > > > > SRV_O_DIRECT_NO_FSYNC, > > > > > > > SRV_ALL_O_DIRECT_FSYNC > > >}; >extern enum srv_flush_t srv_file_flush_method; > > > > > > >enum { > SRV_FORCE_IGNORE_CORRUPT = 1, > > SRV_FORCE_NO_BACKGROUND = 2, > > > SRV_FORCE_NO_TRX_UNDO = 3, > > SRV_FORCE_NO_IBUF_MERGE = 4, > > > SRV_FORCE_NO_UNDO_LOG_SCAN = 5, > > > > SRV_FORCE_NO_LOG_REDO = 6 > >}; > > > >enum srv_stats_method_name_enum { > SRV_STATS_NULLS_EQUAL, > > > SRV_STATS_NULLS_UNEQUAL, > > SRV_STATS_NULLS_IGNORED >}; > >typedef enum srv_stats_method_name_enum srv_stats_method_name_t; > > >enum srv_thread_type { > SRV_NONE, > SRV_WORKER, > > > SRV_PURGE, > SRV_MASTER > >}; > > > >void >srv_boot(void); > > > >void >srv_free(void); > > > >void >srv_set_io_thread_op_info( > > ulint i, > const char* str); > > > >void >srv_reset_io_thread_op_info(); > > >void >srv_wake_purge_thread_if_not_active(); > >void >srv_active_wake_master_thread_low(); ># 806 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >void >srv_wake_master_thread(); > > > > > >ulint >srv_printf_innodb_monitor( > > FILE* file, > ulint nowait, > > ulint* trx_start, > > ulint* trx_end); > > > > >void >srv_export_innodb_status(void); > > > > > >ulint >srv_get_activity_count(void); > > > > >ulint >srv_check_activity( > > ulint old_activity_count); > > >void >srv_inc_activity_count(void); > > > > > >void >srv_que_task_enqueue_low( > > que_thr_t* thr); > > > > > > >enum srv_thread_type >srv_get_active_thread_type(void); > > >extern "C" { > > > > >os_thread_ret_t >srv_monitor_thread( > > void* arg); > > > > > >os_thread_ret_t >srv_master_thread( > > void* arg); > > > > > > >os_thread_ret_t >srv_error_monitor_thread( > > void* arg); > > > > > >os_thread_ret_t >srv_purge_coordinator_thread( > > void* arg __attribute__((unused))); > > > > > >os_thread_ret_t >srv_worker_thread( > > void* arg __attribute__((unused))); > >} > > > > >ulint >srv_get_task_queue_length(void); > > > > > > >void >srv_release_threads(enum srv_thread_type type, ulint n); > > >void >srv_purge_wakeup(); > > >void srv_purge_shutdown(); ># 943 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >bool >srv_is_tablespace_truncated(ulint space_id); > > > > > >bool >srv_was_tablespace_truncated(const fil_space_t* space); ># 969 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >struct export_var_t{ > 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; > char innodb_buffer_pool_dump_status[4000 + 128]; > char innodb_buffer_pool_load_status[4000 + 128]; > char innodb_buffer_pool_resize_status[512]; > ulint innodb_buffer_pool_pages_total; > ulint innodb_buffer_pool_pages_data; > ulint innodb_buffer_pool_bytes_data; > ulint innodb_buffer_pool_pages_dirty; > ulint innodb_buffer_pool_bytes_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_rnd; > ulint innodb_buffer_pool_read_ahead; > ulint innodb_buffer_pool_read_ahead_evicted; > ulint innodb_dblwr_pages_written; > ulint innodb_dblwr_writes; > ulint innodb_have_atomic_builtins; > ulint innodb_log_waits; > ulint innodb_log_write_requests; > ulint innodb_log_writes; > lsn_t 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_page0_read; > ulint innodb_pages_written; > ulint innodb_row_lock_waits; > ulint innodb_row_lock_current_waits; > int64_t 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; > ulint innodb_system_rows_read; > ulint innodb_system_rows_inserted; > ulint innodb_system_rows_updated; > ulint innodb_system_rows_deleted; > ulint innodb_num_open_files; > ulint innodb_truncated_status_writes; > ulint innodb_available_undo_logs; > > > ulong innodb_undo_truncations; > ulint innodb_defragment_compression_failures; > > > > ulint innodb_defragment_failures; > > ulint innodb_defragment_count; > > > ulint innodb_onlineddl_rowlog_rows; > ulint innodb_onlineddl_rowlog_pct_used; > > ulint innodb_onlineddl_pct_progress; > > int64_t innodb_page_compression_saved; > > int64_t innodb_index_pages_written; > > int64_t innodb_non_index_pages_written; > > int64_t innodb_pages_page_compressed; > > int64_t innodb_page_compressed_trim_op; > > int64_t innodb_pages_page_decompressed; > > > int64_t innodb_pages_page_compression_error; > > int64_t innodb_pages_encrypted; > > int64_t innodb_pages_decrypted; > > > > ib_int64_t innodb_n_merge_blocks_encrypted; > > ib_int64_t innodb_n_merge_blocks_decrypted; > > ib_int64_t innodb_n_rowlog_blocks_encrypted; > > ib_int64_t innodb_n_rowlog_blocks_decrypted; > > > ib_int64_t innodb_n_temp_blocks_encrypted; > > > ib_int64_t innodb_n_temp_blocks_decrypted; > > ulint innodb_sec_rec_cluster_reads; > ulint innodb_sec_rec_cluster_reads_avoided; > > ulint innodb_encryption_rotation_pages_read_from_cache; > ulint innodb_encryption_rotation_pages_read_from_disk; > ulint innodb_encryption_rotation_pages_modified; > ulint innodb_encryption_rotation_pages_flushed; > ulint innodb_encryption_rotation_estimated_iops; > int64_t innodb_encryption_key_requests; > int64_t innodb_key_rotation_list_length; > > ulint innodb_scrub_page_reorganizations; > ulint innodb_scrub_page_splits; > ulint innodb_scrub_page_split_failures_underflow; > ulint innodb_scrub_page_split_failures_out_of_filespace; > ulint innodb_scrub_page_split_failures_missing_index; > ulint innodb_scrub_page_split_failures_unknown; > int64_t innodb_scrub_log; >}; > > >struct srv_slot_t{ > srv_thread_type type; > > ulint in_use; > > ulint suspended; ># 1122 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" > time_t suspend_time; > ulong wait_timeout; > > > > > os_event_t event; > > > que_thr_t* thr; ># 1140 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >}; ># 1151 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0srv.h" >__attribute__((visibility ("hidden"))) >void >wsrep_srv_conc_cancel_wait( > > trx_t* trx); ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0crc32.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0crc32.h" >void >ut_crc32_init(); ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0crc32.h" >typedef uint32_t (*ut_crc32_func_t)(const byte* ptr, ulint len); > > >extern ut_crc32_func_t ut_crc32; > > > > > > > >extern const char* ut_crc32_implementation; ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" 2 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" >static inline >ulint >log_block_get_flush_bit( > > const byte* log_block) >{ > if (0x80000000UL > & mach_read_from_4(log_block + 0)) { > > return((1)); > } > > return((0)); >} > > > >static inline >void >log_block_set_flush_bit( > > byte* 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( > > const byte* log_block) >{ > return(~0x80000000UL > & mach_read_from_4(log_block + 0)); >} > > > > >static inline >void >log_block_set_hdr_no( > > byte* log_block, > ulint n) > >{ > do { } while(0); > do { } while(0); > > mach_write_to_4(log_block + 0, n); >} > > > > >static inline >ulint >log_block_get_data_len( > > const byte* log_block) >{ > return(mach_read_from_2(log_block + 4)); >} > > > >static inline >void >log_block_set_data_len( > > byte* log_block, > ulint len) >{ > mach_write_to_2(log_block + 4, len); >} > > > > > >static inline >ulint >log_block_get_first_rec_group( > > const byte* log_block) >{ > return(mach_read_from_2(log_block + 6)); >} > > > >static inline >void >log_block_set_first_rec_group( > > byte* log_block, > ulint offset) >{ > mach_write_to_2(log_block + 6, offset); >} > > > > >static inline >ulint >log_block_get_checkpoint_no( > > const byte* log_block) >{ > return(mach_read_from_4(log_block + 8)); >} > > > >static inline >void >log_block_set_checkpoint_no( > > byte* log_block, > ib_uint64_t no) >{ > mach_write_to_4(log_block + 8, (ulint) no); >} > > > > >static inline >ulint >log_block_convert_lsn_to_no( > > lsn_t lsn) >{ > return(((ulint) (lsn / 512U) & > (0x3FFFFFFFUL) > ) + 1); >} > > > > >static inline >ulint >log_block_calc_checksum( > > const byte* block) >{ > return(log_checksum_algorithm_ptr(block)); >} > > > > >static inline >ulint >log_block_calc_checksum_format_0( > const byte* block) >{ > ulint sum; > ulint sh; > ulint i; > > sum = 1; > sh = 0; > > for (i = 0; i < 512U - 4; i++) { > ulint b = (ulint) block[i]; > sum &= 0x7FFFFFFFUL; > sum += b; > sum += b << sh; > sh++; > if (sh > 24) { > sh = 0; > } > } > > return(sum); >} > > > > >static inline >ulint >log_block_calc_checksum_crc32( > const byte* block) >{ > return(ut_crc32(block, 512U - 4)); >} > > > > >static inline >ulint >log_block_calc_checksum_none( > const byte* block) >{ > return(0xDEADBEEFUL); >} > > > > >static inline >ulint >log_block_get_checksum( > > const byte* log_block) >{ > return(mach_read_from_4(log_block + 512U > - 4)); >} > > > >static inline >void >log_block_set_checksum( > > byte* log_block, > ulint checksum) >{ > mach_write_to_4(log_block + 512U > - 4, > checksum); >} > > > >static inline >void >log_block_init( > > byte* log_block, > lsn_t 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 >lsn_t >log_reserve_and_write_fast( > const void* str, > ulint len, > lsn_t* start_lsn) >{ > do { } while(0); > do { } while(0); ># 339 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" > const ulint data_len = len > > > > + log_sys->buf_free % 512U; > > if (data_len >= 512U - 4) { > > > > > return(0); > } > > *start_lsn = log_sys->lsn; ># 373 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" > memcpy(log_sys->buf + log_sys->buf_free, str, len); > > log_block_set_data_len( > reinterpret_cast<byte*>(ut_align_down( > log_sys->buf + log_sys->buf_free, > 512U)), > data_len); > > log_sys->buf_free += len; > > do { } while(0); > > log_sys->lsn += len; > > (void) 0; if ((monitor_set_tbl[MONITOR_LSN_CHECKPOINT_AGE / (sizeof(ulint) * 8)] & ((ulint)1 << (MONITOR_LSN_CHECKPOINT_AGE % (sizeof(ulint) * 8))))) { (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_value) = (mon_type_t) (log_sys->lsn - log_sys->last_checkpoint_lsn); if ((innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_value) > (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_max_value)) { (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_max_value) = (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_value); } if ((innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_value) < (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_min_value)) { (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_min_value) = (innodb_counter_value[MONITOR_LSN_CHECKPOINT_AGE].mon_value); } } > ; > > return(log_sys->lsn); >} > > > > >static inline >lsn_t >log_get_lsn(void) > >{ > lsn_t lsn; > > (&log_sys->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic", 403); > > lsn = log_sys->lsn; > > (&log_sys->mutex)->exit(); > > return(lsn); >} > > > > >static inline >ib_uint64_t >log_get_flush_lsn(void) >{ > ib_uint64_t lsn; > > (&log_sys->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic", 421); > > lsn = log_sys->flushed_to_disk_lsn; > > (&log_sys->mutex)->exit(); > > return(lsn); >} > > > > >static inline >lsn_t >log_get_lsn_nowait(void) > >{ > lsn_t lsn=0; > > if (!(&(log_sys->mutex))->trylock("/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic", uint32_t(440))) { > > lsn = log_sys->lsn; > > (&(log_sys->mutex))->exit(); > } > > return(lsn); >} > > > > > >static inline >lsn_t >log_get_capacity(void) > >{ > return(log_sys->log_group_capacity); >} > > > > > >static inline >lsn_t >log_get_max_modified_age_async(void) > >{ > return(log_sys->max_modified_age_async); >} > > > > > > >static inline >void >log_free_check(void) > >{ ># 499 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.ic" > do { } while(0) > > ; > > if (log_sys->check_flush_or_checkpoint) { > > log_check_margins(); > } >} ># 797 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0log.h" 2 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" 2 > > ># 1 "/usr/include/c++/4.8.2/list" 1 3 ># 58 "/usr/include/c++/4.8.2/list" 3 ># 59 "/usr/include/c++/4.8.2/list" 3 > > > > ># 1 "/usr/include/c++/4.8.2/bits/stl_list.h" 1 3 ># 64 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > namespace __detail > { ># 77 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > 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) throw(); > > void > _M_transfer(_List_node_base* const __first, > _List_node_base* const __last) throw(); > > void > _M_reverse() throw(); > > void > _M_hook(_List_node_base* const __position) throw(); > > void > _M_unhook() throw(); > }; > > > } > > > > > template<typename _Tp> > struct _List_node : public __detail::_List_node_base > { > > _Tp _M_data; > > > > > > > > }; > > > > > > > template<typename _Tp> > struct _List_iterator > { > typedef _List_iterator<_Tp> _Self; > typedef _List_node<_Tp> _Node; > > typedef ptrdiff_t difference_type; > typedef std::bidirectional_iterator_tag iterator_category; > typedef _Tp value_type; > typedef _Tp* pointer; > typedef _Tp& reference; > > _List_iterator() > : _M_node() { } > > explicit > _List_iterator(__detail::_List_node_base* __x) > : _M_node(__x) { } > > > reference > operator*() const > { return static_cast<_Node*>(_M_node)->_M_data; } > > pointer > operator->() const > { return std::__addressof(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; } > > > __detail::_List_node_base* _M_node; > }; > > > > > > > template<typename _Tp> > struct _List_const_iterator > { > typedef _List_const_iterator<_Tp> _Self; > typedef const _List_node<_Tp> _Node; > typedef _List_iterator<_Tp> iterator; > > typedef ptrdiff_t difference_type; > typedef std::bidirectional_iterator_tag iterator_category; > typedef _Tp value_type; > typedef const _Tp* pointer; > typedef const _Tp& reference; > > _List_const_iterator() > : _M_node() { } > > explicit > _List_const_iterator(const __detail::_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 std::__addressof(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 __detail::_List_node_base* _M_node; > }; > > template<typename _Val> > inline bool > operator==(const _List_iterator<_Val>& __x, > const _List_const_iterator<_Val>& __y) > { return __x._M_node == __y._M_node; } > > template<typename _Val> > inline bool > operator!=(const _List_iterator<_Val>& __x, > const _List_const_iterator<_Val>& __y) > { return __x._M_node != __y._M_node; } > > > > template<typename _Tp, typename _Alloc> > class _List_base > { > protected: ># 305 "/usr/include/c++/4.8.2/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 > { > __detail::_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*>(&_M_impl); } > > const _Node_alloc_type& > _M_get_Node_allocator() const > { return *static_cast<const _Node_alloc_type*>(&_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 _Node_alloc_type& __a) > : _M_impl(__a) > { _M_init(); } ># 377 "/usr/include/c++/4.8.2/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; > } > }; ># 437 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _Tp, typename _Alloc = std::allocator<_Tp> > > class list : protected _List_base<_Tp, _Alloc> > { > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > typedef _List_base<_Tp, _Alloc> _Base; > typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; > typedef typename _Base::_Node_alloc_type _Node_alloc_type; > > public: > typedef _Tp value_type; > typedef typename _Tp_alloc_type::pointer pointer; > typedef typename _Tp_alloc_type::const_pointer const_pointer; > typedef typename _Tp_alloc_type::reference reference; > typedef typename _Tp_alloc_type::const_reference const_reference; > typedef _List_iterator<_Tp> iterator; > typedef _List_const_iterator<_Tp> const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Alloc allocator_type; > > protected: > > > typedef _List_node<_Tp> _Node; > > using _Base::_M_impl; > using _Base::_M_put_node; > using _Base::_M_get_node; > using _Base::_M_get_Tp_allocator; > using _Base::_M_get_Node_allocator; ># 481 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > _Node* > _M_create_node(const value_type& __x) > { > _Node* __p = this->_M_get_node(); > try > { > _M_get_Tp_allocator().construct > (std::__addressof(__p->_M_data), __x); > } > catch(...) > { > _M_put_node(__p); > throw; > } > return __p; > } ># 517 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > public: > > > > > > list() > : _Base() { } > > > > > > explicit > list(const allocator_type& __a) > : _Base(_Node_alloc_type(__a)) { } ># 568 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > explicit > list(size_type __n, const value_type& __value = value_type(), > const allocator_type& __a = allocator_type()) > : _Base(_Node_alloc_type(__a)) > { _M_fill_initialize(__n, __value); } ># 582 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > list(const list& __x) > : _Base(__x._M_get_Node_allocator()) > { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } ># 629 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _InputIterator> > list(_InputIterator __first, _InputIterator __last, > const allocator_type& __a = allocator_type()) > : _Base(_Node_alloc_type(__a)) > { > > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_initialize_dispatch(__first, __last, _Integral()); > } ># 655 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > list& > operator=(const list& __x); ># 701 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > assign(size_type __n, const value_type& __val) > { _M_fill_assign(__n, __val); } ># 724 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } ># 748 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > 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()); } ># 867 "/usr/include/c++/4.8.2/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_Node_allocator().max_size(); } ># 917 "/usr/include/c++/4.8.2/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; > } ># 973 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > push_front(const value_type& __x) > { this->_M_insert(begin(), __x); } ># 1000 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > pop_front() > { this->_M_erase(begin()); } ># 1014 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > push_back(const value_type& __x) > { this->_M_insert(end(), __x); } ># 1040 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > pop_back() > { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } ># 1073 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > iterator > insert(iterator __position, const value_type& __x); ># 1122 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > insert(iterator __position, size_type __n, const value_type& __x) > { > list __tmp(__n, __x, get_allocator()); > splice(__position, __tmp); > } ># 1146 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _InputIterator> > > void > insert(iterator __position, _InputIterator __first, > _InputIterator __last) > { > list __tmp(__first, __last, get_allocator()); > splice(__position, __tmp); > } ># 1171 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > iterator > erase(iterator __position); ># 1192 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > iterator > erase(iterator __first, iterator __last) > { > while (__first != __last) > __first = erase(__first); > return __last; > } ># 1209 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > swap(list& __x) > { > __detail::_List_node_base::swap(this->_M_impl._M_node, > __x._M_impl._M_node); > > > > std::__alloc_swap<typename _Base::_Node_alloc_type>:: > _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()); > } > > > > > > > > void > clear() > { > _Base::_M_clear(); > _Base::_M_init(); > } ># 1246 "/usr/include/c++/4.8.2/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()); > } > } ># 1276 "/usr/include/c++/4.8.2/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); > } ># 1312 "/usr/include/c++/4.8.2/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); > } > } ># 1347 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > remove(const _Tp& __value); ># 1361 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _Predicate> > void > remove_if(_Predicate); ># 1375 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > unique(); ># 1390 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _BinaryPredicate> > void > unique(_BinaryPredicate); ># 1411 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > merge(list& __x); ># 1438 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _StrictWeakOrdering> > void > merge(list& __x, _StrictWeakOrdering __comp); > > > > > > > > void > reverse() > { this->_M_impl._M_node._M_reverse(); } > > > > > > > > void > sort(); > > > > > > > > template<typename _StrictWeakOrdering> > void > sort(_StrictWeakOrdering); > > protected: > > > > > > > template<typename _Integer> > void > _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) > { _M_fill_initialize(static_cast<size_type>(__n), __x); } > > > template<typename _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > for (; __first != __last; ++__first) > > > > push_back(*__first); > > } > > > > void > _M_fill_initialize(size_type __n, const value_type& __x) > { > for (; __n; --__n) > push_back(__x); > } ># 1526 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { _M_fill_assign(__n, __val); } > > > template<typename _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type); > > > > void > _M_fill_assign(size_type __n, const value_type& __val); > > > > void > _M_transfer(iterator __position, iterator __first, iterator __last) > { __position._M_node->_M_transfer(__first._M_node, __last._M_node); } > > > > void > _M_insert(iterator __position, const value_type& __x) > { > _Node* __tmp = _M_create_node(__x); > __tmp->_M_hook(__position._M_node); > } ># 1567 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > void > _M_erase(iterator __position) > { > __position._M_node->_M_unhook(); > _Node* __n = static_cast<_Node*>(__position._M_node); > > > > _M_get_Tp_allocator().destroy(std::__addressof(__n->_M_data)); > > _M_put_node(__n); > } > > > void > _M_check_equal_allocators(list& __x) > { > if (std::__alloc_neq<typename _Base::_Node_alloc_type>:: > _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator())) > __throw_runtime_error(("list::_M_check_equal_allocators")); > } > }; ># 1600 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) > { > typedef typename list<_Tp, _Alloc>::const_iterator const_iterator; > const_iterator __end1 = __x.end(); > const_iterator __end2 = __y.end(); > > const_iterator __i1 = __x.begin(); > const_iterator __i2 = __y.begin(); > while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) > { > ++__i1; > ++__i2; > } > return __i1 == __end1 && __i2 == __end2; > } ># 1629 "/usr/include/c++/4.8.2/bits/stl_list.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) > { return std::lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Tp, typename _Alloc> > inline bool > operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Tp, typename _Alloc> > inline void > swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) > { __x.swap(__y); } > > >} ># 64 "/usr/include/c++/4.8.2/list" 2 3 ># 1 "/usr/include/c++/4.8.2/bits/list.tcc" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/list.tcc" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ > > > template<typename _Tp, typename _Alloc> > void > _List_base<_Tp, _Alloc>:: > _M_clear() > { > typedef _List_node<_Tp> _Node; > _Node* __cur = static_cast<_Node*>(_M_impl._M_node._M_next); > while (__cur != &_M_impl._M_node) > { > _Node* __tmp = __cur; > __cur = static_cast<_Node*>(__cur->_M_next); > > > > _M_get_Tp_allocator().destroy(std::__addressof(__tmp->_M_data)); > > _M_put_node(__tmp); > } > } ># 96 "/usr/include/c++/4.8.2/bits/list.tcc" 3 > template<typename _Tp, typename _Alloc> > typename list<_Tp, _Alloc>::iterator > list<_Tp, _Alloc>:: > insert(iterator __position, const value_type& __x) > { > _Node* __tmp = _M_create_node(__x); > __tmp->_M_hook(__position._M_node); > return iterator(__tmp); > } > > template<typename _Tp, typename _Alloc> > typename list<_Tp, _Alloc>::iterator > list<_Tp, _Alloc>:: > erase(iterator __position) > { > iterator __ret = iterator(__position._M_node->_M_next); > _M_erase(__position); > return __ret; > } ># 166 "/usr/include/c++/4.8.2/bits/list.tcc" 3 > template<typename _Tp, typename _Alloc> > void > list<_Tp, _Alloc>:: > resize(size_type __new_size, value_type __x) > { > iterator __i = begin(); > size_type __len = 0; > for (; __i != end() && __len < __new_size; ++__i, ++__len) > ; > if (__len == __new_size) > erase(__i, end()); > else > insert(end(), __new_size - __len, __x); > } > > > template<typename _Tp, typename _Alloc> > list<_Tp, _Alloc>& > list<_Tp, _Alloc>:: > operator=(const list& __x) > { > if (this != &__x) > { > iterator __first1 = begin(); > iterator __last1 = end(); > const_iterator __first2 = __x.begin(); > const_iterator __last2 = __x.end(); > for (; __first1 != __last1 && __first2 != __last2; > ++__first1, ++__first2) > *__first1 = *__first2; > if (__first2 == __last2) > erase(__first1, __last1); > else > insert(__last1, __first2, __last2); > } > return *this; > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp, _Alloc>:: > _M_fill_assign(size_type __n, const value_type& __val) > { > iterator __i = begin(); > for (; __i != end() && __n > 0; ++__i, --__n) > *__i = __val; > if (__n > 0) > insert(end(), __n, __val); > else > erase(__i, end()); > } > > template<typename _Tp, typename _Alloc> > template <typename _InputIterator> > void > list<_Tp, _Alloc>:: > _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, > __false_type) > { > iterator __first1 = begin(); > iterator __last1 = end(); > for (; __first1 != __last1 && __first2 != __last2; > ++__first1, ++__first2) > *__first1 = *__first2; > if (__first2 == __last2) > erase(__first1, __last1); > else > insert(__last1, __first2, __last2); > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp, _Alloc>:: > remove(const value_type& __value) > { > iterator __first = begin(); > iterator __last = end(); > iterator __extra = __last; > while (__first != __last) > { > iterator __next = __first; > ++__next; > if (*__first == __value) > { > > > > if (std::__addressof(*__first) != std::__addressof(__value)) > _M_erase(__first); > else > __extra = __first; > } > __first = __next; > } > if (__extra != __last) > _M_erase(__extra); > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp, _Alloc>:: > unique() > { > iterator __first = begin(); > iterator __last = end(); > if (__first == __last) > return; > iterator __next = __first; > while (++__next != __last) > { > if (*__first == *__next) > _M_erase(__next); > else > __first = __next; > __next = __first; > } > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp, _Alloc>:: > > > > merge(list& __x) > > { > > > if (this != &__x) > { > _M_check_equal_allocators(__x); > > iterator __first1 = begin(); > iterator __last1 = end(); > iterator __first2 = __x.begin(); > iterator __last2 = __x.end(); > while (__first1 != __last1 && __first2 != __last2) > if (*__first2 < *__first1) > { > iterator __next = __first2; > _M_transfer(__first1, __first2, ++__next); > __first2 = __next; > } > else > ++__first1; > if (__first2 != __last2) > _M_transfer(__last1, __first2, __last2); > } > } > > template<typename _Tp, typename _Alloc> > template <typename _StrictWeakOrdering> > void > list<_Tp, _Alloc>:: > > > > merge(list& __x, _StrictWeakOrdering __comp) > > { > > > if (this != &__x) > { > _M_check_equal_allocators(__x); > > iterator __first1 = begin(); > iterator __last1 = end(); > iterator __first2 = __x.begin(); > iterator __last2 = __x.end(); > while (__first1 != __last1 && __first2 != __last2) > if (__comp(*__first2, *__first1)) > { > iterator __next = __first2; > _M_transfer(__first1, __first2, ++__next); > __first2 = __next; > } > else > ++__first1; > if (__first2 != __last2) > _M_transfer(__last1, __first2, __last2); > } > } > > template<typename _Tp, typename _Alloc> > void > list<_Tp, _Alloc>:: > sort() > { > > if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node > && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) > { > list __carry; > list __tmp[64]; > list * __fill = &__tmp[0]; > list * __counter; > > do > { > __carry.splice(__carry.begin(), *this, begin()); > > for(__counter = &__tmp[0]; > __counter != __fill && !__counter->empty(); > ++__counter) > { > __counter->merge(__carry); > __carry.swap(*__counter); > } > __carry.swap(*__counter); > if (__counter == __fill) > ++__fill; > } > while ( !empty() ); > > for (__counter = &__tmp[1]; __counter != __fill; ++__counter) > __counter->merge(*(__counter - 1)); > swap( *(__fill - 1) ); > } > } > > template<typename _Tp, typename _Alloc> > template <typename _Predicate> > void > list<_Tp, _Alloc>:: > remove_if(_Predicate __pred) > { > iterator __first = begin(); > iterator __last = end(); > while (__first != __last) > { > iterator __next = __first; > ++__next; > if (__pred(*__first)) > _M_erase(__first); > __first = __next; > } > } > > template<typename _Tp, typename _Alloc> > template <typename _BinaryPredicate> > void > list<_Tp, _Alloc>:: > unique(_BinaryPredicate __binary_pred) > { > iterator __first = begin(); > iterator __last = end(); > if (__first == __last) > return; > iterator __next = __first; > while (++__next != __last) > { > if (__binary_pred(*__first, *__next)) > _M_erase(__next); > else > __first = __next; > __next = __first; > } > } > > template<typename _Tp, typename _Alloc> > template <typename _StrictWeakOrdering> > void > list<_Tp, _Alloc>:: > sort(_StrictWeakOrdering __comp) > { > > if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node > && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) > { > list __carry; > list __tmp[64]; > list * __fill = &__tmp[0]; > list * __counter; > > do > { > __carry.splice(__carry.begin(), *this, begin()); > > for(__counter = &__tmp[0]; > __counter != __fill && !__counter->empty(); > ++__counter) > { > __counter->merge(__carry, __comp); > __carry.swap(*__counter); > } > __carry.swap(*__counter); > if (__counter == __fill) > ++__fill; > } > while ( !empty() ); > > for (__counter = &__tmp[1]; __counter != __fill; ++__counter) > __counter->merge(*(__counter - 1), __comp); > swap(*(__fill - 1)); > } > } > > >} ># 65 "/usr/include/c++/4.8.2/list" 2 3 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" 2 > > > >extern bool recv_writer_thread_active; > > > > > > > >dberr_t >recv_find_max_checkpoint(ulint* max_field) > __attribute__((nonnull, warn_unused_result)); > > > > >void recv_recover_corrupt_page(page_id_t page_id); > > > >__attribute__((cold)) void recv_recover_page(buf_page_t* bpage); > > > > > > >dberr_t >recv_recovery_from_checkpoint_start( > lsn_t flush_lsn); > >void >recv_recovery_from_checkpoint_finish(void); > > >void >recv_recovery_rollback_active(void); > > >void >recv_sys_close(); > >void >recv_sys_init(); > > >void >recv_sys_debug_free(void); ># 96 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >bool >log_group_read_log_seg( > byte* buf, > const log_group_t* group, > lsn_t* start_lsn, > lsn_t end_lsn); > > > >void >recv_sys_var_init(void); > > > > > >void >recv_apply_hashed_log_recs(bool last_batch); > > >enum store_t { > > STORE_NO, > > STORE_YES, > > STORE_IF_EXISTS >}; ># 132 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >bool recv_sys_add_to_parsing_buf(const byte* log_block, lsn_t scanned_lsn); ># 142 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >bool recv_parse_log_recs( > lsn_t checkpoint_lsn, > store_t* store, > ulint available_memory, > bool apply); > > >void recv_sys_justify_left_parsing_buf(); > > > > > >extern void (*log_optimized_ddl_op)(ulint space_id); > > > >extern void (*log_truncate)(); ># 168 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >extern void (*log_file_op)(ulint space_id, const byte* flags, > const byte* name, ulint len, > const byte* new_name, ulint new_len); > > >struct recv_data_t{ > recv_data_t* next; > > > >}; > > >struct recv_t{ > mlog_id_t type; > ulint len; > recv_data_t* data; > > lsn_t start_lsn; > > > > lsn_t end_lsn; > > > > ut_list_node<recv_t> > rec_list; >}; > >struct recv_dblwr_t { > > void add(byte* page) { > pages.push_back(page); > } > > > > > > > const byte* find_page(ulint space_id, ulint page_no); > > typedef std::list<byte*, ut_allocator<byte*> > list; > > > list pages; >}; > > >struct recv_sys_t{ > ib_mutex_t mutex; > > > ib_mutex_t writer_mutex; > > > os_event_t flush_start; > > os_event_t flush_end; > > buf_flush_t flush_type; > > > ulint apply_log_recs; > > > > > ulint apply_batch_on; > > > byte* buf; > ulint len; > lsn_t parse_start_lsn; > > > > > lsn_t scanned_lsn; > > > ulint scanned_checkpoint_no; > > > ulint recovered_offset; > > > lsn_t recovered_lsn; > > > bool found_corrupt_log; > > > > bool found_corrupt_fs; > > > > lsn_t mlog_checkpoint_lsn; > > > > time_t progress_time; > mem_heap_t* heap; > > hash_table_t* addr_hash; > ulint n_addrs; > > > > > struct trunc { > > lsn_t lsn; > > unsigned pages; > } truncated_undo_spaces[127]; > > recv_dblwr_t dblwr; > > > lsn_t last_stored_lsn; > > > > > > bool report(time_t time) > { > if (time - progress_time < 15) { > return false; > } > > progress_time = time; > return true; > } >}; > > >extern recv_sys_t* recv_sys; > > > > >extern volatile bool recv_recovery_on; ># 323 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >extern bool recv_no_ibuf_operations; > >extern bool recv_needed_recovery; ># 335 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >extern bool recv_lsn_checks_on; ># 349 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0recv.h" >extern ulint recv_n_pool_free_frames; ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" 2 > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0types.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0types.h" >struct ibuf_t; ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" 2 > > > > >extern ulint srv_use_doublewrite_buf; >extern struct buf_dblwr_t* buf_dblwr; >class page_id_t; >struct trx_t; >class truncate_t; > >typedef std::list<char*, ut_allocator<char*> > space_name_list_t; > > >struct fil_space_crypt_t; > > >enum fil_type_t { > > FIL_TYPE_TEMPORARY, > > FIL_TYPE_IMPORT, > > FIL_TYPE_TABLESPACE, > > FIL_TYPE_LOG >}; > > > > > > >inline >bool >fil_type_is_data( > fil_type_t type) >{ > return(type == FIL_TYPE_TEMPORARY > || type == FIL_TYPE_IMPORT > || type == FIL_TYPE_TABLESPACE); >} > >struct fil_node_t; > > >struct fil_space_t { > ulint id; > hash_node_t hash; > char* name; > hash_node_t name_hash; > lsn_t max_lsn; ># 95 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > lsn_t enable_lsn; > bool stop_new_ops; ># 109 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > bool is_being_truncated; > > > > > > > fil_type_t purpose; > ut_list_base<fil_node_t, ut_list_node<fil_node_t> fil_node_t::*> chain; > > ulint size; > > ulint size_in_header; > > > ulint free_len; > > ulint free_limit; > > ulint recv_size; > > > > ulint flags; > > > > ulint n_reserved_extents; > > > ulint n_pending_flushes; ># 149 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > ulint n_pending_ops; > > > > > > > ulint n_pending_ios; > rw_lock_t latch; > > ut_list_node<fil_space_t> unflushed_spaces; > > > ut_list_node<fil_space_t> named_spaces; > > > > > bool is_in_unflushed_spaces() const; > ut_list_node<fil_space_t> space_list; > > > ut_list_node<fil_space_t> rotation_list; > > > bool is_in_rotation_list() const; > > > fil_space_crypt_t* crypt_data; > > > bool atomic_write_supported; > > > > void release_free_extents(ulint n_reserved); > > > > bool punch_hole; > > ulint magic_n; > > > bool is_stopping() const { return stop_new_ops; } > > > bool use_doublewrite() const > { > return !atomic_write_supported > && srv_use_doublewrite_buf && buf_dblwr; > } ># 211 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > fil_node_t* add(const char* name, pfs_os_file_t handle, > ulint size, bool is_raw, bool atomic_write, > ulint max_pages = ((ulint)(-2))); > > > > > > >}; > > > > > >struct fil_node_t { > > fil_space_t* space; > > char* name; > > pfs_os_file_t handle; > > bool is_raw_disk; > > > > ulint size; > > > ulint init_size; > > ulint max_size; > > ulint n_pending; > > ulint n_pending_flushes; > > bool being_extended; > > bool needs_flush; > > ut_list_node<fil_node_t> chain; > > ut_list_node<fil_node_t> LRU; > > > bool atomic_write; > > > ulint block_size; > > > ulint magic_n; > > > bool is_open() const > { > return(handle != OS_FILE_CLOSED); > } > > > > > bool read_page0(bool first); >}; > > > > > >enum ib_extention { > NO_EXT = 0, > IBD = 1, > ISL = 2, > CFG = 3 >}; >extern const char* dot_ext[]; > > > > > > > >extern const char* fil_path_to_mysql_datadir; > > > > > >typedef byte fil_faddr_t; ># 320 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >struct fil_addr_t { > ulint page; > ulint boffset; >}; > > >extern fil_addr_t fil_addr_null; ># 450 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >enum fil_encryption_t { > > FIL_ENCRYPTION_DEFAULT, > > FIL_ENCRYPTION_ON, > > FIL_ENCRYPTION_OFF >}; > > > > >extern ulint fil_n_log_flushes; > > >extern ulint fil_n_pending_log_flushes; > >extern ulint fil_n_pending_tablespace_flushes; ># 478 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >fil_space_t* >fil_space_get( > ulint id) > __attribute__((warn_unused_result)); > > > > >struct fil_system_t { > ib_mutex_t mutex; > hash_table_t* spaces; > > > hash_table_t* name_hash; > > ut_list_base<fil_node_t, ut_list_node<fil_node_t> fil_node_t::*> LRU; ># 504 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > ut_list_base<fil_space_t, ut_list_node<fil_space_t> fil_space_t::*> unflushed_spaces; > > > > > > ulint n_open; > ulint max_n_open; > > ulint max_assigned_id; > > > > > > ut_list_base<fil_space_t, ut_list_node<fil_space_t> fil_space_t::*> space_list; > > ut_list_base<fil_space_t, ut_list_node<fil_space_t> fil_space_t::*> named_spaces; > > > > > > ut_list_base<fil_space_t, ut_list_node<fil_space_t> fil_space_t::*> rotation_list; > > > > ulint space_id_reuse_warned; ># 540 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > fil_space_t* read_page0(ulint id); ># 556 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" > fil_space_t* keyrotate_next( > fil_space_t* prev_space, > bool remove, > uint key_version); >}; > > > >extern fil_system_t* fil_system; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_crypt.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" 2 > > > > > > > >static const unsigned char CRYPT_MAGIC[6] = { > 's', 0xE, 0xC, 'R', 'E', 't' }; > > > > >extern os_event_t fil_crypt_threads_event; ># 67 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >struct key_struct >{ > uint key_version; > uint key_length; > unsigned char key[32]; > >}; > > >extern ulong srv_encrypt_tables; > > > > >void >crypt_data_scheme_locker( > st_encryption_scheme* scheme, > int exit); > >struct fil_space_rotate_state_t >{ > time_t start_time; > ulint active_threads; > ulint next_offset; > ulint max_offset; > uint min_key_version_found; > > lsn_t end_lsn; > > bool starting; > bool flushing; > struct { > bool is_active; > time_t last_scrub_completed; > > } scrubbing; >}; > > > >struct fil_space_crypt_t : st_encryption_scheme >{ > public: > > > > fil_space_crypt_t( > uint new_type, > uint new_min_key_version, > uint new_key_id, > fil_encryption_t new_encryption) > : st_encryption_scheme(), > min_key_version(new_min_key_version), > page0_offset(0), > encryption(new_encryption), > key_found(0), > rotate_state() > { > key_id = new_key_id; > my_random_bytes(iv, sizeof(iv)); > mutex_init((&mutex), (LATCH_ID_FIL_CRYPT_DATA_MUTEX), "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h", 127); > locker = crypt_data_scheme_locker; > type = new_type; > > if (new_encryption == FIL_ENCRYPTION_OFF || > (!srv_encrypt_tables && > new_encryption == FIL_ENCRYPTION_DEFAULT)) { > type = 0; > } else { > type = 1; > min_key_version = key_get_latest_version(); > } > > key_found = min_key_version; > } > > > ~fil_space_crypt_t() > { > mutex_destroy(&mutex); > } > > > > > > uint key_get_latest_version(void); > > > > bool is_key_found() const { > return key_found != (~(unsigned int)0); > } > > > bool should_encrypt() const { > return ((encryption == FIL_ENCRYPTION_ON) || > (srv_encrypt_tables && > encryption == FIL_ENCRYPTION_DEFAULT)); > } > > > bool is_encrypted() const { > return (encryption != FIL_ENCRYPTION_OFF); > } > > > bool is_default_encryption() const { > return (encryption == FIL_ENCRYPTION_DEFAULT); > } > > > bool not_encrypted() const { > return (encryption == FIL_ENCRYPTION_OFF); > } > > > > > > void fill_page0(ulint flags, byte* page); > > > > > > void write_page0(const fil_space_t* space, byte* page0, mtr_t* mtr); > > uint min_key_version; > ulint page0_offset; > fil_encryption_t encryption; > > ib_mutex_t mutex; > > > > > > > uint key_found; > > fil_space_rotate_state_t rotate_state; >}; > > >struct fil_space_crypt_status_t { > ulint space; > ulint scheme; > uint min_key_version; > uint current_key_version; > uint keyserver_requests; > uint key_id; > bool rotating; > bool flushing; > ulint rotate_next_page_number; > ulint rotate_max_page_number; >}; > > >struct fil_crypt_stat_t { > ulint pages_read_from_cache; > ulint pages_read_from_disk; > ulint pages_modified; > ulint pages_flushed; > ulint estimated_iops; >}; > > >struct fil_space_scrub_status_t { > ulint space; > bool compressed; > time_t last_scrub_completed; > bool scrubbing; > time_t current_scrub_started; > ulint current_scrub_active_threads; > ulint current_scrub_page_number; > ulint current_scrub_max_page_number; >}; > > > >__attribute__((visibility ("hidden"))) >void >fil_space_crypt_init(); > > > >__attribute__((visibility ("hidden"))) >void >fil_space_crypt_cleanup(); ># 266 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >__attribute__((visibility ("hidden"))) >fil_space_crypt_t* >fil_space_create_crypt_data( > fil_encryption_t encrypt_mode, > uint key_id) > __attribute__((warn_unused_result)); > > > > > >__attribute__((visibility ("hidden"))) >void >fil_space_merge_crypt_data( > fil_space_crypt_t* dst, > const fil_space_crypt_t* src); > > > > > > >__attribute__((visibility ("hidden"))) >fil_space_crypt_t* >fil_space_read_crypt_data(const page_size_t& page_size, const byte* page) > __attribute__((nonnull, warn_unused_result)); > > > > >__attribute__((visibility ("hidden"))) >void >fil_space_destroy_crypt_data( > fil_space_crypt_t **crypt_data); ># 308 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >__attribute__((visibility ("hidden"))) >byte* >fil_parse_write_crypt_data( > byte* ptr, > const byte* end_ptr, > const buf_block_t* block, > dberr_t* err) > __attribute__((warn_unused_result)); ># 326 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >byte* >fil_encrypt_buf( > fil_space_crypt_t* crypt_data, > ulint space, > ulint offset, > lsn_t lsn, > const byte* src_frame, > const page_size_t& page_size, > byte* dst_frame) > __attribute__((warn_unused_result)); ># 346 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >__attribute__((visibility ("hidden"))) >byte* >fil_space_encrypt( > const fil_space_t* space, > ulint offset, > lsn_t lsn, > byte* src_frame, > byte* dst_frame) > __attribute__((warn_unused_result)); ># 364 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >__attribute__((visibility ("hidden"))) >bool >fil_space_decrypt( > fil_space_crypt_t* crypt_data, > byte* tmp_frame, > const page_size_t& page_size, > byte* src_frame, > dberr_t* err); ># 380 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >__attribute__((visibility ("hidden"))) >byte* >fil_space_decrypt( > const fil_space_t* space, > byte* tmp_frame, > byte* src_frame) > __attribute__((warn_unused_result)); > > > > > > > >__attribute__((visibility ("hidden"))) >uint32_t >fil_crypt_calculate_checksum( > const page_size_t& page_size, > const byte* dst_frame) > __attribute__((warn_unused_result)); > > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_set_thread_cnt( > uint new_cnt); > > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_set_rotate_key_age( > uint val); > > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_set_rotation_iops( > uint val); > > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_set_encrypt_tables( > uint val); > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_threads_init(); > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_threads_cleanup(); > > > > >__attribute__((visibility ("hidden"))) >void >fil_space_crypt_close_tablespace( > const fil_space_t* space); > > > > > > >__attribute__((visibility ("hidden"))) >void >fil_space_crypt_get_status( > const fil_space_t* space, > struct fil_space_crypt_status_t* status); > > > > >__attribute__((visibility ("hidden"))) >void >fil_crypt_total_stat( > fil_crypt_stat_t *stat); > > > > > > > >__attribute__((visibility ("hidden"))) >void >fil_space_get_scrub_status( > const fil_space_t* space, > fil_space_scrub_status_t* status); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.ic" >static inline >bool >fil_page_is_encrypted( > > const byte *buf) >{ > return(mach_read_from_4(buf+26) != 0); >} > > > > >static inline >const char * >fil_crypt_get_mode( > > const fil_space_crypt_t* crypt_data) >{ > switch (crypt_data->encryption) { > case FIL_ENCRYPTION_DEFAULT: > return("Default tablespace encryption mode"); > case FIL_ENCRYPTION_ON: > return("Tablespace encrypted"); > case FIL_ENCRYPTION_OFF: > return("Tablespace not encrypted"); > } > > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.ic", 56); > return ("NULL"); >} > > > > >static inline >const char * >fil_crypt_get_type( > const fil_space_crypt_t* crypt_data) >{ > do { } while(0); > switch (crypt_data->type) { > case 0: > return("scheme unencrypted"); > break; > case 1: > return("scheme encrypted"); > break; > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.ic", 77); > } > > return ("NULL"); >} ># 485 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" 2 ># 498 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0crypt.h" >bool >fil_space_verify_crypt_checksum(const byte* page, const page_size_t& page_size) > __attribute__((warn_unused_result)); ># 567 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" 2 > > > > > >rw_lock_t* >fil_space_get_latch( > ulint id, > ulint* flags); > > > > >fil_type_t >fil_space_get_type( > ulint id); > > > > > > > >void >fil_space_set_imported( > ulint id); ># 604 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >fil_space_t* >fil_space_create( > const char* name, > ulint id, > ulint flags, > fil_type_t purpose, > fil_space_crypt_t* crypt_data, > fil_encryption_t mode = FIL_ENCRYPTION_DEFAULT) > __attribute__((warn_unused_result)); > > > > > > >bool >fil_assign_new_space_id( > > ulint* space_id); > > > > > > > >bool >fil_space_free( > ulint id, > bool x_latched); > > > > > > > >char* >fil_space_get_first_path( > ulint id); > > > > >__attribute__((visibility ("hidden"))) >void >fil_space_set_recv_size(ulint id, ulint size); > > > > >ulint >fil_space_get_size( > > ulint id); > > > > >ulint >fil_space_get_flags( > > ulint id); > > > > >bool >fil_space_open( > const char* name); > > > >void >fil_space_close( > const char* name); > > > > > > >const page_size_t >fil_space_get_page_size( > ulint id, > bool* found); > > > >void >fil_init( > > ulint hash_size, > ulint max_n_open); > > >void >fil_close(void); > > > > > > > >void >fil_open_log_and_system_tablespace_files(void); > > > > >void >fil_close_all_files(void); > > > > >void >fil_close_log_files( > > bool free); > > > >void >fil_set_max_space_id_if_bigger( > > ulint max_id); > > > > > >dberr_t >fil_write_flushed_lsn( > lsn_t lsn) >__attribute__((warn_unused_result)); ># 749 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >__attribute__((visibility ("hidden"))) >fil_space_t* >fil_space_acquire_low(ulint id, bool silent) > __attribute__((warn_unused_result)); > > > > > > > >inline >fil_space_t* >fil_space_acquire(ulint id) >{ > return (fil_space_acquire_low(id, false)); >} > > > > > > > >inline >fil_space_t* >fil_space_acquire_silent(ulint id) >{ > return (fil_space_acquire_low(id, true)); >} > > > >void >fil_space_release(fil_space_t* space); > > > > > > >fil_space_t* >fil_space_acquire_for_io(ulint id); > > > >void >fil_space_release_for_io(fil_space_t* space); ># 806 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >fil_space_t* >fil_space_next( > fil_space_t* prev_space) > __attribute__((warn_unused_result)); ># 822 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >fil_space_t* >fil_space_keyrotate_next(fil_space_t* prev_space, bool remove) > __attribute__((warn_unused_result)); > > >class FilSpace >{ >public: > > > FilSpace() : m_space(__null) {} > > > > > > explicit FilSpace(ulint space_id, bool silent = false) > : m_space(fil_space_acquire_low(space_id, silent)) {} > > > > > > class FilSpace& operator=(fil_space_t* space) > { > > do { } while(0); > m_space = space; > return(*this); > } > > > > ~FilSpace() > { > if (m_space != __null) { > fil_space_release(m_space); > } > } > > > > operator const fil_space_t*() const > { > return(m_space); > } > > > > const fil_space_t* operator->() const > { > return(m_space); > } > > > > const fil_space_t* operator()() const > { > return(m_space); > } > >private: > > fil_space_t* m_space; >}; > > > >void >fil_create_directory_for_tablename( > > const char* name); > > > > > >void >fil_name_write_rename( > ulint space_id, > const char* old_name, > const char* new_name); > > > > >dberr_t >fil_recreate_table( > > ulint space_id, > ulint format_flags, > ulint flags, > const char* name, > truncate_t& truncate); > > > > > >dberr_t >fil_recreate_tablespace( > > ulint space_id, > ulint format_flags, > ulint flags, > const char* name, > truncate_t& truncate, > > lsn_t recv_lsn); ># 940 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >bool >fil_op_replay_rename( > ulint space_id, > ulint first_page_no, > const char* name, > const char* new_name) > __attribute__((warn_unused_result)); ># 956 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >bool fil_table_accessible(const dict_table_t* table) > __attribute__((warn_unused_result, nonnull)); > > > > >dberr_t >fil_delete_tablespace( > ulint id > > , bool drop_ahi = false > > ); > > > > > >fil_space_t* fil_truncate_prepare(ulint space_id); > > >void fil_truncate_log(fil_space_t* space, ulint size, mtr_t* mtr) > __attribute__((nonnull)); > > > > > >bool >fil_truncate_tablespace( > ulint space_id, > ulint size_in_pages); > > > > > > > >dberr_t >fil_prepare_for_truncate( > > ulint id); > > > > > > >void >fil_reinit_space_header_for_table( > dict_table_t* table, > ulint size, > trx_t* trx); > > > > > >dberr_t >fil_close_tablespace( > > trx_t* trx, > ulint id); ># 1035 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >dberr_t >fil_discard_tablespace( > > ulint id) > __attribute__((warn_unused_result)); ># 1049 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >dberr_t >fil_rename_tablespace_check( > ulint space_id, > const char* old_path, > const char* new_path, > bool is_discarded, > bool replace_new = false); ># 1066 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >bool >fil_rename_tablespace( > ulint id, > const char* old_path, > const char* new_name, > const char* new_path_in); ># 1080 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >char* >fil_make_filepath( > const char* path, > const char* name, > ib_extention suffix, > bool strip_name); ># 1097 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >dberr_t >fil_ibd_create( > ulint space_id, > const char* name, > const char* path, > ulint flags, > ulint size, > fil_encryption_t mode, > uint32_t key_id) > __attribute__((nonnull(2), warn_unused_result)); > > > > > >__attribute__((visibility ("hidden"))) >void >fsp_flags_try_adjust(ulint space_id, ulint flags); ># 1145 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >dberr_t >fil_ibd_open( > bool validate, > bool fix_dict, > fil_type_t purpose, > ulint id, > ulint flags, > const char* tablename, > const char* path_in) > __attribute__((warn_unused_result)); > >enum fil_load_status { > > FIL_LOAD_OK, > > FIL_LOAD_ID_CHANGED, > > FIL_LOAD_NOT_FOUND, > > FIL_LOAD_INVALID >}; > > > > > > >enum fil_load_status >fil_ibd_load( > ulint space_id, > const char* filename, > fil_space_t*& space) > __attribute__((warn_unused_result)); ># 1186 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >int >fil_file_readdir_next_file( > > dberr_t* err, > > const char* dirname, > os_file_dir_t dir, > os_file_stat_t* info); ># 1202 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >bool >fil_space_for_table_exists_in_mem( > ulint id, > const char* name, > ulint table_flags); > > > > > >bool >fil_space_extend( > fil_space_t* space, > ulint size); > > > >bool >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); ># 1259 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >dberr_t >fil_io( > const IORequest& type, > bool sync, > const page_id_t page_id, > const page_size_t& page_size, > ulint byte_offset, > ulint len, > void* buf, > void* message, > bool ignore_missing_space = false); > > > > > > >void >fil_aio_wait( > > ulint segment); > > > > >void >fil_flush( > > ulint space_id); > > > >void >fil_flush(fil_space_t* space); > > > > >void >fil_flush_file_spaces( > fil_type_t purpose); > > > >bool >fil_validate(void); > > > > >bool >fil_addr_is_null( > > fil_addr_t addr); > > > >ulint >fil_page_get_prev( > > const byte* page); > > > >ulint >fil_page_get_next( > > const byte* page); > > >void >fil_page_set_type( > > byte* page, > ulint type); ># 1352 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >void >fil_delete_file( > > const char* path); ># 1364 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >bool >fil_space_read_name_and_filepath( > ulint space_id, > char** name, > char** filepath); > > > > >char* >fil_path_to_space_name( > const char* filename); > > > > > > >ulint >fil_space_get_id_by_name( > const char* tablespace); > > > > > > >dberr_t >fil_get_space_names( > > space_name_list_t& space_name_list) > > __attribute__((warn_unused_result)); > > > > > > > >dberr_t >fil_mtr_rename_log( > const dict_table_t* old_table, > const dict_table_t* new_table, > const char* tmp_name, > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); ># 1419 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >fil_space_t* >fil_space_get_by_id( > > ulint id); > > > > > >fil_space_t* >fil_space_get_by_name(const char* name); > > > > >void >fil_names_dirty( > fil_space_t* space); > > > > > > >void >fil_names_dirty_and_write( > fil_space_t* space, > mtr_t* mtr); > > > > > > >inline __attribute__((warn_unused_result)) >bool >fil_names_write_if_was_clean( > fil_space_t* space, > mtr_t* mtr) >{ > do { } while(0); > > if (space == __null) { > return(false); > } > > const bool was_clean = space->max_lsn == 0; > do { } while(0); > space->max_lsn = log_sys->lsn; > > if (was_clean) { > fil_names_dirty_and_write(space, mtr); > } > > return(was_clean); >} > > > > >inline void fil_space_open_if_needed(fil_space_t* space) >{ > ; > do { } while(0); > > if (space->size == 0) { > > > > > fil_space_get_size(space->id); > do { } while(0); > } >} ># 1501 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >bool >fil_names_clear( > lsn_t lsn, > bool do_write); ># 1514 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" >__attribute__((visibility ("hidden"))) >ulint >fil_space_get_block_size(const fil_space_t* space, unsigned offset); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.ic" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.ic" >static inline >const char* >fil_get_page_type_name( > > ulint page_type) >{ > switch(page_type) { > case 37401: > return "PAGE_COMPRESSED_ENRYPTED"; > case 34354: > return "PAGE_COMPRESSED"; > case 17855: > return "INDEX"; > case 17854: > return "RTREE"; > case 2: > return "UNDO LOG"; > case 3: > return "INODE"; > case 4: > return "IBUF_FREE_LIST"; > case 0: > return "ALLOCATED"; > case 5: > return "IBUF_BITMAP"; > case 6: > return "SYS"; > case 7: > return "TRX_SYS"; > case 8: > return "FSP_HDR"; > case 9: > return "XDES"; > case 10: > return "BLOB"; > case 11: > return "ZBLOB"; > case 12: > return "ZBLOB2"; > case 13: > return "OLD UNKOWN PAGE TYPE"; > default: > return "PAGE TYPE CORRUPTED"; > } >} > > > > >static inline >bool >fil_page_type_validate( > const byte* page) >{ ># 125 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.ic" > return true; >} ># 1519 "/buildbot/mariadb-10.2.31/storage/innobase/include/fil0fil.h" 2 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" 2 ># 48 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >struct fil_addr_t; ># 95 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >extern buf_pool_t* buf_pool_ptr; > > >extern volatile bool buf_pool_withdrawing; > > >extern volatile ulint buf_withdraw_clock; ># 114 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >enum buf_page_state { > BUF_BLOCK_POOL_WATCH, > > BUF_BLOCK_ZIP_PAGE, > > BUF_BLOCK_ZIP_DIRTY, > > > > BUF_BLOCK_NOT_USED, > > > > BUF_BLOCK_READY_FOR_USE, > > BUF_BLOCK_FILE_PAGE, > BUF_BLOCK_MEMORY, > > BUF_BLOCK_REMOVE_HASH > >}; > > > > >struct buf_pool_info_t{ > > ulint pool_unique_id; > ulint pool_size; > ulint lru_len; > ulint old_lru_len; > ulint free_list_len; > ulint flush_list_len; > ulint n_pend_unzip; > > ulint n_pend_reads; > > ulint n_pending_flush_lru; > ulint n_pending_flush_single_page; > > > > ulint n_pending_flush_list; > > ulint n_pages_made_young; > ulint n_pages_not_made_young; > ulint n_pages_read; > ulint n_pages_created; > ulint n_pages_written; > ulint n_page_gets; > ulint n_ra_pages_read_rnd; > > ulint n_ra_pages_read; > > ulint n_ra_pages_evicted; > > > ulint n_page_get_delta; > > > > double page_made_young_rate; > > double page_not_made_young_rate; > > double pages_read_rate; > double pages_created_rate; > double pages_written_rate; > ulint page_read_delta; > > ulint young_making_delta; > > ulint not_young_making_delta; > > > > double pages_readahead_rnd_rate; > > double pages_readahead_rate; > > double pages_evicted_rate; > > > > ulint unzip_lru_len; > > > ulint io_sum; > ulint io_cur; > > ulint unzip_sum; > ulint unzip_cur; > > >}; > > >struct buf_pools_list_size_t { > ulint LRU_bytes; > ulint unzip_LRU_bytes; > ulint flush_list_bytes; >}; > > > > > > >std::ostream& >operator<<( > std::ostream& out, > const page_id_t page_id); > > > > >static inline >void >buf_pool_mutex_enter_all(void); > > > > >static inline >void >buf_pool_mutex_exit_all(void); > > > > > >dberr_t >buf_pool_init( > > ulint size, > ulint n_instances); > > > >void >buf_pool_free( > > ulint n_instances); > > > > > >bool >buf_block_will_withdrawn( > buf_pool_t* buf_pool, > const buf_block_t* block); > > > > > >bool >buf_frame_will_withdrawn( > buf_pool_t* buf_pool, > const byte* ptr); > > > > > >extern "C" >os_thread_ret_t >buf_resize_thread(void*); > > > >void >buf_pool_clear_hash_index(); > > > > > >static inline >ulint >buf_pool_get_curr_size(void); > > > > >static inline >ulint >buf_pool_get_n_pages(void); > > > > > >lsn_t >buf_pool_get_oldest_modification(void); > > > > > >static inline >buf_page_t* >buf_page_alloc_descriptor(void) > > __attribute__((malloc)); > > >static inline >void >buf_page_free_descriptor( > > buf_page_t* bpage) > __attribute__((nonnull)); > > > > >buf_block_t* >buf_block_alloc( > > buf_pool_t* buf_pool); > > > > >static inline >void >buf_block_free( > > buf_block_t* block); > > > > >static inline >byte* >buf_frame_copy( > > byte* buf, > const buf_frame_t* frame); ># 375 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >ulint >buf_page_optimistic_get( > > ulint rw_latch, > buf_block_t* block, > ib_uint64_t modify_clock, > const char* file, > unsigned line, > mtr_t* mtr); > > > > >ulint >buf_page_get_known_nowait( > > ulint rw_latch, > buf_block_t* block, > ulint mode, > const char* file, > unsigned line, > mtr_t* mtr); ># 406 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >buf_block_t* >buf_page_try_get_func( > const page_id_t page_id, > const char* file, > unsigned line, > mtr_t* mtr); ># 432 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >buf_page_t* >buf_page_get_zip( > const page_id_t page_id, > const page_size_t& page_size); ># 448 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >buf_block_t* >buf_page_get_gen( > const page_id_t page_id, > const page_size_t& page_size, > ulint rw_latch, > buf_block_t* guess, > ulint mode, > const char* file, > unsigned line, > mtr_t* mtr, > dberr_t* err); ># 468 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >buf_block_t* >buf_page_create( > const page_id_t page_id, > const page_size_t& page_size, > mtr_t* mtr); > > > >static inline >void >buf_page_release_zip( > > buf_page_t* bpage); > > >static inline >void >buf_page_release_latch( > > buf_block_t* block, > ulint rw_latch); > > > > > >void >buf_page_make_young( > > buf_page_t* bpage); > > > > > > >inline bool buf_page_peek(const page_id_t page_id); ># 528 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >unsigned >buf_page_get_freed_page_clock( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > >static inline >unsigned >buf_block_get_freed_page_clock( > > const buf_block_t* block) > __attribute__((warn_unused_result)); ># 551 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >ulint >buf_page_peek_if_young( > > const buf_page_t* bpage); > > > > > >static inline >ulint >buf_page_peek_if_too_old( > > const buf_page_t* bpage); > > > > >static inline >lsn_t >buf_page_get_newest_modification( > > const buf_page_t* bpage); > > > > > >static inline >void >buf_block_modify_clock_inc( > > buf_block_t* block); > > > > >static inline >ib_uint64_t >buf_block_get_modify_clock( > > buf_block_t* block); > > >static inline >void >buf_block_buf_fix_inc_func( > > > > > > buf_block_t* block) > __attribute__((nonnull)); > > > > >static inline >ulint >buf_block_fix(buf_page_t* bpage); > > > > >static inline >ulint >buf_block_fix(buf_block_t* block); > > > > >static inline >ulint >buf_block_unfix(buf_page_t* bpage); > > > >static inline >ulint >buf_block_unfix(buf_block_t* block); ># 653 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >bool buf_page_is_zeroes(const void* read_buf, size_t page_size); > > > > > > >bool >buf_page_is_checksum_valid_crc32( > const byte* read_buf, > ulint checksum_field1, > ulint checksum_field2) > __attribute__((nonnull(1), warn_unused_result)); > > > > > > >bool >buf_page_is_checksum_valid_innodb( > const byte* read_buf, > ulint checksum_field1, > ulint checksum_field2) > __attribute__((nonnull(1), warn_unused_result)); > > > > > > >bool >buf_page_is_checksum_valid_none( > const byte* read_buf, > ulint checksum_field1, > ulint checksum_field2) > __attribute__((nonnull(1), warn_unused_result)); > > > > > > > >bool >buf_page_is_corrupted( > bool check_lsn, > const byte* read_buf, > const page_size_t& page_size, > > const fil_space_t* space = __null) > > > > __attribute__((warn_unused_result)); > >inline void *aligned_malloc(size_t size, size_t align) >{ > > > > void *result; > if (posix_memalign(&result, align, size)) > result= __null; > return result; > >} > >inline void aligned_free(void *ptr) >{ > > > > free(ptr); > >} > > > > > >static inline >void >buf_ptr_get_fsp_addr( > > const void* ptr, > ulint* space, > fil_addr_t* addr); > > > > >static inline >unsigned >buf_block_get_lock_hash_val( > > const buf_block_t* block) > __attribute__((warn_unused_result)); ># 765 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >buf_frame_t* >buf_frame_align( > > > byte* ptr); ># 792 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >__attribute__((visibility ("hidden"))) >void >buf_page_print(const byte* read_buf, const page_size_t& page_size) > __attribute__((cold)) __attribute__((nonnull)); > > > >ulint >buf_zip_decompress( > > buf_block_t* block, > ulint check); ># 816 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >ulint >buf_get_n_pending_read_ios(void); > > > >void >buf_print_io( > > FILE* file); > > > > >void >buf_stats_get_pool_info( > > buf_pool_t* buf_pool, > ulint pool_id, > buf_pool_info_t* all_pool_info); > > > > >double >buf_get_modified_ratio_pct(void); > >void >buf_refresh_io_stats_all(void); > > >ulint >buf_all_freed(void); > > > > >ulint >buf_pool_check_no_pending_io(void); > > > > > >void >buf_pool_invalidate(void); ># 885 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >enum buf_page_state >buf_page_get_state( > > const buf_page_t* bpage); > > > > >static inline >const char* >buf_get_state_name( > > const buf_block_t* block); > > > > >static inline >enum buf_page_state >buf_block_get_state( > > const buf_block_t* block) > __attribute__((warn_unused_result)); > > >static inline >void >buf_page_set_state( > > buf_page_t* bpage, > enum buf_page_state state); > > >static inline >void >buf_block_set_state( > > buf_block_t* block, > enum buf_page_state state); > > > >static inline >ulint >buf_page_in_file( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >buf_page_belongs_to_unzip_LRU( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > > >static inline >BPageMutex* >buf_page_get_mutex( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > > >static inline >buf_flush_t >buf_page_get_flush_type( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > >static inline >void >buf_page_set_flush_type( > > buf_page_t* bpage, > buf_flush_t flush_type); > > > > >static inline >void >buf_block_set_file_page( > buf_block_t* block, > const page_id_t page_id); > > > > >static inline >enum buf_io_fix >buf_page_get_io_fix( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > >static inline >enum buf_io_fix >buf_block_get_io_fix( > > const buf_block_t* block) > __attribute__((warn_unused_result)); > > >static inline >void >buf_page_set_io_fix( > > buf_page_t* bpage, > enum buf_io_fix io_fix); > > >static inline >void >buf_block_set_io_fix( > > buf_block_t* block, > enum buf_io_fix io_fix); ># 1025 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >void >buf_page_set_sticky( > > buf_page_t* bpage); > > >static inline >void >buf_page_unset_sticky( > > buf_page_t* bpage); > > > >static inline >ulint >buf_page_can_relocate( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >buf_page_is_old( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > >static inline >void >buf_page_set_old( > > buf_page_t* bpage, > bool old); > > > >static inline >unsigned >buf_page_is_accessed( > > const buf_page_t* bpage) > __attribute__((warn_unused_result)); > > >static inline >void >buf_page_set_accessed( > > buf_page_t* bpage) > __attribute__((nonnull)); > > > > > >static inline >buf_block_t* >buf_page_get_block( > > buf_page_t* bpage) > __attribute__((warn_unused_result)); ># 1118 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >buf_block_t* >buf_block_from_ahi(const byte* ptr); > > > > > > >ulint >buf_pointer_is_block_field( > > const void* ptr); ># 1157 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >buf_page_t* >buf_page_init_for_read( > dberr_t* err, > ulint mode, > const page_id_t page_id, > const page_size_t& page_size, > bool unzip); ># 1175 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >__attribute__((visibility ("hidden"))) >dberr_t >buf_page_io_complete(buf_page_t* bpage, bool dblwr = false, bool evict = false) > __attribute__((nonnull)); > > > > >static inline >unsigned >buf_pool_index( > > const buf_pool_t* buf_pool) > __attribute__((warn_unused_result)); > > > >static inline >buf_pool_t* >buf_pool_from_bpage( > > const buf_page_t* bpage); > > > >static inline >buf_pool_t* >buf_pool_from_block( > > const buf_block_t* block); > > > > >inline buf_pool_t* buf_pool_get(const page_id_t page_id); > > > > >static inline >buf_pool_t* >buf_pool_from_array( > > ulint index); > > > > > > >static inline >buf_page_t* >buf_page_hash_get_low( > buf_pool_t* buf_pool, > const page_id_t page_id); ># 1247 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >buf_page_t* >buf_page_hash_get_locked( > buf_pool_t* buf_pool, > const page_id_t page_id, > rw_lock_t** lock, > ulint lock_mode, > bool watch = false); ># 1270 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >static inline >buf_block_t* >buf_block_hash_get_locked( > buf_pool_t* buf_pool, > const page_id_t page_id, > rw_lock_t** lock, > ulint lock_mode); ># 1304 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >ulint >buf_pool_watch_is_sentinel( > > const buf_pool_t* buf_pool, > const buf_page_t* bpage) > __attribute__((nonnull, warn_unused_result)); > > > > >void buf_pool_watch_unset(const page_id_t page_id); > > > > > > >bool buf_pool_watch_occurred(const page_id_t page_id) >__attribute__((warn_unused_result)); > > > >void >buf_get_total_list_len( > > ulint* LRU_len, > ulint* free_len, > ulint* flush_list_len); > > >void >buf_get_total_list_size_in_bytes( > > buf_pools_list_size_t* buf_pools_list_size); > > > >void >buf_get_total_stat( > > buf_pool_stat_t*tot_stat); > > > >static inline >buf_block_t* >buf_get_nth_chunk_block( > > const buf_pool_t* buf_pool, > ulint n, > ulint* chunk_size); > > > > >static inline >bool >buf_pool_is_obsolete( > ulint withdraw_clock); > > > > > >static inline >ulint >buf_pool_size_align( > ulint size); > > > > > > >void >buf_flush_update_zip_checksum( > buf_frame_t* page, > ulint size, > lsn_t lsn); ># 1391 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >__attribute__((visibility ("hidden"))) >byte* >buf_page_encrypt_before_write( > fil_space_t* space, > buf_page_t* bpage, > byte* src_frame); > > > > > > >typedef struct { >private: > int32 reserved; > >public: > byte* crypt_buf; > > > > byte* comp_buf; > > > byte* out_buf; > > > > > void release() > { > __atomic_store_n((&reserved), (false), (0)) > ; > } > > > > bool acquire() > { > return !__atomic_exchange_n((&reserved), (true), (0)) > ; > } >} buf_tmp_buffer_t; > > > > > > > >class buf_page_t { >public: ># 1452 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > page_id_t id; > buf_page_t* hash; > > > > > page_size_t size; > > > int32 buf_fix_count; > > > > buf_io_fix io_fix; > > > buf_page_state state; > > unsigned flush_type:2; > > > > unsigned buf_pool_index:6; > > > > > > page_zip_des_t zip; > > > > > > > ulint write_size; > > > > > ulint real_size; > > > > > > buf_tmp_buffer_t* slot; ># 1510 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ut_list_node<buf_page_t> list; ># 1555 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > FlushObserver* flush_observer; > > lsn_t newest_modification; > > > > > > lsn_t oldest_modification; ># 1582 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ut_list_node<buf_page_t> LRU; > > > > > > > unsigned old:1; > > unsigned freed_page_clock:31; ># 1600 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > unsigned access_time; ># 1611 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >}; > > > >struct buf_block_t{ > > > > > buf_page_t page; > > > > byte* frame; > > > > BPageLock lock; > > ut_list_node<buf_block_t> unzip_LRU; ># 1641 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > unsigned lock_hash_val:32; ># 1652 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ib_uint64_t modify_clock; ># 1669 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ulint n_hash_helps; > > volatile ulint n_bytes; > > > volatile ulint n_fields; > > volatile bool left_side; ># 1736 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > unsigned curr_n_fields:10; > > unsigned curr_n_bytes:15; > > unsigned curr_left_side:1; > dict_index_t* index; ># 1756 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > bool skip_flush_check; ># 1768 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > BPageMutex mutex; > > > > > >}; ># 1796 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" >class HazardPointer { > >public: > > > > HazardPointer(const buf_pool_t* buf_pool, const ib_mutex_t* mutex) > : > m_buf_pool(buf_pool) > > > > , m_hp() {} > > > virtual ~HazardPointer() {} > > > buf_page_t* get() const > { > do { } while(0); > return(m_hp); > } > > > > void set(buf_page_t* bpage); > > > > > bool is_hp(const buf_page_t* bpage); > > > > > > > virtual void adjust(const buf_page_t*) = 0; > >protected: > > HazardPointer(const HazardPointer&); > HazardPointer& operator=(const HazardPointer&); > > > const buf_pool_t* m_buf_pool; > > > > > > > > buf_page_t* m_hp; >}; > > >class FlushHp: public HazardPointer { > >public: > > > > FlushHp(const buf_pool_t* buf_pool, const ib_mutex_t* mutex) > : > HazardPointer(buf_pool, mutex) {} > > > virtual ~FlushHp() {} > > > > > > void adjust(const buf_page_t* bpage); >}; > > >class LRUHp: public HazardPointer { > >public: > > > > LRUHp(const buf_pool_t* buf_pool, const ib_mutex_t* mutex) > : > HazardPointer(buf_pool, mutex) {} > > > virtual ~LRUHp() {} > > > > > > void adjust(const buf_page_t* bpage); >}; > > > > > >class LRUItr: public LRUHp { > >public: > > > > LRUItr(const buf_pool_t* buf_pool, const ib_mutex_t* mutex) > : > LRUHp(buf_pool, mutex) {} > > > virtual ~LRUItr() {} > > > > > > buf_page_t* start(); >}; > > >struct buf_buddy_free_t { > union { > ulint size; > byte bytes[38U]; ># 1932 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > } stamp; > > buf_page_t bpage; > ut_list_node<buf_buddy_free_t> list; > >}; > > >struct buf_pool_stat_t{ > ulint n_page_gets; > > > > > > ulint n_pages_read; > ulint n_pages_written; > ulint n_pages_created; > > ulint n_ra_pages_read_rnd; > > ulint n_ra_pages_read; > > ulint n_ra_pages_evicted; > > > ulint n_pages_made_young; > > ulint n_pages_not_made_young; > > > > ulint LRU_bytes; > ulint flush_list_bytes; >}; > > >struct buf_buddy_stat_t { > > ulint used; > > ib_uint64_t relocated; > > ib_uint64_t relocated_usec; >}; > > > > > > >typedef struct { > ulint n_slots; > buf_tmp_buffer_t *slots; > >} buf_tmp_array_t; > > > > > > >struct buf_pool_t{ > > > > BufPoolMutex mutex; > > BufPoolZipMutex zip_mutex; > > > > ulint instance_no; > > ulint curr_pool_size; > ulint LRU_old_ratio; ># 2016 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ut_allocator<unsigned char> allocator; > > > volatile ulint n_chunks; > volatile ulint n_chunks_new; > buf_chunk_t* chunks; > buf_chunk_t* chunks_old; > > ulint curr_size; > ulint old_size; > ulint read_ahead_area; > > > hash_table_t* page_hash; ># 2040 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > hash_table_t* page_hash_old; > > hash_table_t* zip_hash; > > > > ulint n_pend_reads; > > ulint n_pend_unzip; > > time_t last_printout_time; > > > buf_buddy_stat_t buddy_stat[(16 - 10) + 1]; > > > buf_pool_stat_t stat; > buf_pool_stat_t old_stat; > > > > > > > > FlushListMutex flush_list_mutex; > > > > > > > > FlushHp flush_hp; > > > > ut_list_base<buf_page_t, ut_list_node<buf_page_t> buf_page_t::*> flush_list; > > > ulint init_flush[BUF_FLUSH_N_TYPES]; > > > ulint n_flush[BUF_FLUSH_N_TYPES]; > > > os_event_t no_flush[BUF_FLUSH_N_TYPES]; > > > > > > ib_rbt_t* flush_rbt; ># 2106 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > unsigned freed_page_clock; ># 2115 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ulint try_LRU_scan; ># 2130 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ut_list_base<buf_page_t, ut_list_node<buf_page_t> buf_page_t::*> free; > > > > ut_list_base<buf_page_t, ut_list_node<buf_page_t> buf_page_t::*> withdraw; > > > > > > ulint withdraw_target; > > > > > LRUHp lru_hp; > > > > LRUItr lru_scan_itr; > > > > LRUItr single_scan_itr; > > ut_list_base<buf_page_t, ut_list_node<buf_page_t> buf_page_t::*> LRU; > > > buf_page_t* LRU_old; > > > > > > > ulint LRU_old_len; > > > > > > > > ut_list_base<buf_block_t, ut_list_node<buf_block_t> buf_block_t::*> unzip_LRU; ># 2187 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" > ut_list_base<buf_buddy_free_t, ut_list_node<buf_buddy_free_t> buf_buddy_free_t::*> zip_free[(16 - 10)]; > > > buf_page_t* watch; > > > > > buf_tmp_array_t* tmp_arr; > > > > > > > >}; > > > > > >std::ostream& >operator<<( > std::ostream& out, > const buf_pool_t& buf_pool); ># 2408 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.h" 1 ># 130 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.h" >struct fil_space_t; > > > >void >mtr_write_log( > const mtr_buf_t* log); > > >struct mtr_memo_slot_t { > > void* object; > > > ulint type; >}; > > >struct mtr_t { > mtr_t() : m_state(MTR_STATE_INIT) {} > > > > > > > void release_free_extents(ulint n_reserved); > > > void start(); > > > void commit(); ># 172 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.h" > void commit_checkpoint( > lsn_t checkpoint_lsn, > bool write_mlog_checkpoint); > > > > ulint get_savepoint() const {do { } while(0); return m_memo.size();} > > > > > > inline void release_s_latch_at_savepoint( > ulint savepoint, > rw_lock_t* lock); > > > inline void release_block_at_savepoint( > ulint savepoint, > buf_block_t* block); > > > inline void sx_latch_at_savepoint(ulint savepoint, buf_block_t* block); > > > inline void x_latch_at_savepoint(ulint savepoint, buf_block_t* block); > > > > inline mtr_log_t get_log_mode() const > __attribute__((warn_unused_result)); > > > > > inline mtr_log_t set_log_mode(mtr_log_t mode); > > > > > fil_space_t* set_sys_modified() > { > if (!m_sys_space) { > lookup_sys_space(); > } > return m_sys_space; > } > > > > > > void set_spaces(const mtr_t& mtr) > { > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > ; > m_user_space = mtr.m_user_space; > m_undo_space = mtr.m_undo_space; > m_sys_space = mtr.m_sys_space; > } > > > > > > fil_space_t* set_named_space(ulint space_id) > { > do { } while(0); > ; > if (!space_id) { > return(set_sys_modified()); > } else { > lookup_user_space(space_id); > return m_user_space; > } > } > > > > > void set_named_space(fil_space_t* space); ># 270 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.h" > inline ulint read_ulint(const byte* ptr, mlog_id_t type) const > __attribute__((warn_unused_result)); > > > > > > > inline void s_lock(rw_lock_t* lock, const char* file, unsigned line); > > > > > > > inline void x_lock(rw_lock_t* lock, const char* file, unsigned line); > > > > > > > inline void sx_lock(rw_lock_t* lock, const char* file, unsigned line); > > > > > > > > fil_space_t* x_lock_space( > ulint space_id, > const char* file, > unsigned line); > > > > > > bool memo_release(const void* object, ulint type); > > > > void release_page(const void* ptr, mtr_memo_type_t type); > > > void set_modified() { m_modifications = true; } > > > > > void discard_modifications() { m_modifications = false; } > > > > > lsn_t commit_lsn() const > { > do { } while(0); > return(m_commit_lsn); > } > > > void enter_ibuf() { m_inside_ibuf = true; } > > > void exit_ibuf() { m_inside_ibuf = false; } > > > bool is_inside_ibuf() const { return m_inside_ibuf; } > > > > bool is_active() const { return m_state == MTR_STATE_ACTIVE; } > > > > FlushObserver* get_flush_observer() const { return m_flush_observer; } > > > > void set_flush_observer(FlushObserver* observer) > { > do { } while(0); > m_flush_observer = observer; > } ># 407 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.h" > bool is_dirty() const { return m_made_dirty; } > > > void added_rec() { ++m_n_log_recs; } > > > > const mtr_buf_t* get_log() const { return &m_log; } > > > > mtr_buf_t* get_log() { return &m_log; } > > > > > inline void memo_push(void* object, mtr_memo_type_t type); > > > > > static inline bool is_block_dirtied(const buf_block_t* block) > __attribute__((warn_unused_result)); > >private: > > void lookup_sys_space(); > > > void lookup_user_space(ulint space_id); > > > > inline ulint prepare_write(); > > > > > inline lsn_t finish_write(ulint len); > > > inline void release_resources(); > > > mtr_buf_t m_memo; > > > mtr_buf_t m_log; > > > bool m_made_dirty; > > > bool m_inside_ibuf; > > > bool m_modifications; > > > > ib_uint32_t m_n_log_recs; > > > > mtr_log_t m_log_mode; > > > > > > > fil_space_t* m_user_space; > > fil_space_t* m_undo_space; > > fil_space_t* m_sys_space; > > > mtr_state_t m_state; > > > FlushObserver* m_flush_observer; > > > lsn_t m_commit_lsn; >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" 1 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic" 2 > > > >bool >mtr_t::is_block_dirtied(const buf_block_t* block) >{ > do { } while(0); > do { } while(0); > > > > > return(block->page.oldest_modification == 0); >} > > > >void >mtr_t::memo_push(void* object, mtr_memo_type_t type) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > > > > > > if ((type == MTR_MEMO_PAGE_X_FIX || type == MTR_MEMO_PAGE_SX_FIX) > && !m_made_dirty) { > > m_made_dirty = is_block_dirtied( > reinterpret_cast<const buf_block_t*>(object)); > } > > mtr_memo_slot_t* slot = m_memo.push<mtr_memo_slot_t*>(sizeof(*slot)); > > slot->type = type; > slot->object = object; >} > > > > >void >mtr_t::release_s_latch_at_savepoint( > ulint savepoint, > rw_lock_t* lock) >{ > do { } while(0); > do { } while(0); > > mtr_memo_slot_t* slot = m_memo.at<mtr_memo_slot_t*>(savepoint); > > do { } while(0); > do { } while(0); > > rw_lock_s_unlock_func(lock); > > slot->object = __null; >} > > > > >void >mtr_t::sx_latch_at_savepoint( > ulint savepoint, > buf_block_t* block) >{ > do { } while(0); > do { } while(0); > > do { } while(0) > > > > ; > > mtr_memo_slot_t* slot = m_memo.at<mtr_memo_slot_t*>(savepoint); > > do { } while(0); > > > do { if (__builtin_expect(!(ulint) (slot->type == MTR_MEMO_BUF_FIX), (0))) { ut_dbg_assertion_failed("slot->type == MTR_MEMO_BUF_FIX", "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic", 115); } } while (0); > > rw_lock_sx_lock_func((&block->lock), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic", 117); > > if (!m_made_dirty) { > m_made_dirty = is_block_dirtied(block); > } > > slot->type = MTR_MEMO_PAGE_SX_FIX; >} > > > > >void >mtr_t::x_latch_at_savepoint( > ulint savepoint, > buf_block_t* block) >{ > do { } while(0); > do { } while(0); > > do { } while(0) > > > > ; > > mtr_memo_slot_t* slot = m_memo.at<mtr_memo_slot_t*>(savepoint); > > do { } while(0); > > > do { if (__builtin_expect(!(ulint) (slot->type == MTR_MEMO_BUF_FIX), (0))) { ut_dbg_assertion_failed("slot->type == MTR_MEMO_BUF_FIX", "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic", 148); } } while (0); > > rw_lock_x_lock_func((&block->lock), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic", 150); > > if (!m_made_dirty) { > m_made_dirty = is_block_dirtied(block); > } > > slot->type = MTR_MEMO_PAGE_X_FIX; >} > > > > >void >mtr_t::release_block_at_savepoint( > ulint savepoint, > buf_block_t* block) >{ > do { } while(0); > > mtr_memo_slot_t* slot = m_memo.at<mtr_memo_slot_t*>(savepoint); > > do { if (__builtin_expect(!(ulint) (slot->object == block), (0))) { ut_dbg_assertion_failed("slot->object == block", "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.ic", 171); } } while (0); > > buf_block_unfix(reinterpret_cast<buf_block_t*>(block)); > > buf_page_release_latch(block, slot->type); > > slot->object = __null; >} > > > > > >mtr_log_t >mtr_t::get_log_mode() const >{ > do { } while(0); > do { } while(0); > > return m_log_mode; >} > > > > > >mtr_log_t >mtr_t::set_log_mode(mtr_log_t mode) >{ > do { } while(0); > do { } while(0); > > const mtr_log_t old_mode = m_log_mode; > > switch (old_mode) { > case MTR_LOG_NO_REDO: > > do { } while(0); > return(old_mode); > case MTR_LOG_NONE: > if (mode == old_mode || mode == MTR_LOG_SHORT_INSERTS) { > > return(old_mode); > } > > case MTR_LOG_SHORT_INSERTS: > do { } while(0); > > case MTR_LOG_ALL: > > > do { } while(0); > m_log_mode = mode; > return(old_mode); > } > > do { } while(0); > return(old_mode); >} > > > > >void >mtr_t::s_lock(rw_lock_t* lock, const char* file, unsigned line) >{ > rw_lock_s_lock_func((lock), (0), (file), (line)); > > memo_push(lock, MTR_MEMO_S_LOCK); >} > > > > >void >mtr_t::x_lock(rw_lock_t* lock, const char* file, unsigned line) >{ > rw_lock_x_lock_func((lock), (0), (file), (line)); > > memo_push(lock, MTR_MEMO_X_LOCK); >} > > > > >void >mtr_t::sx_lock(rw_lock_t* lock, const char* file, unsigned line) >{ > rw_lock_sx_lock_func((lock), (0), (file), (line)); > > memo_push(lock, MTR_MEMO_SX_LOCK); >} > > > > > >ulint >mtr_t::read_ulint(const byte* ptr, mlog_id_t type) const >{ > do { } while(0); > > do { } while(0) > > > > ; > > return(mach_read_ulint(ptr, type)); >} ># 495 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0mtr.h" 2 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >extern bool buf_page_cleaner_is_active; ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >extern os_event_t buf_flush_event; > >class ut_stage_alter_t; > > >struct flush_counters_t { > ulint flushed; > ulint evicted; > ulint unzip_LRU_evicted; > >}; > > > >void >buf_flush_remove( > > buf_page_t* bpage); > > > > >void >buf_flush_relocate_on_flush_list( > > buf_page_t* bpage, > buf_page_t* dpage); > > > >void buf_flush_write_complete(buf_page_t* bpage, bool dblwr); > > > > > >void >buf_flush_init_for_writing( > const buf_block_t* block, > byte* page, > void* page_zip_, > lsn_t newest_lsn); ># 115 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >bool >buf_flush_do_batch( > buf_pool_t* buf_pool, > buf_flush_t type, > ulint min_n, > lsn_t lsn_limit, > flush_counters_t* n); ># 136 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >bool >buf_flush_lists( > ulint min_n, > lsn_t lsn_limit, > ulint* n_processed); ># 150 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >bool >buf_flush_single_page_from_LRU( > > buf_pool_t* buf_pool); > > >void >buf_flush_wait_batch_end( > > buf_pool_t* buf_pool, > buf_flush_t type); > > > > > >void >buf_flush_wait_flushed( > lsn_t new_oldest); > > > > > >static inline >void >buf_flush_note_modification( > > buf_block_t* block, > lsn_t start_lsn, > > lsn_t end_lsn, > > FlushObserver* observer); > > > >static inline >void >buf_flush_recv_note_modification( > > buf_block_t* block, > lsn_t start_lsn, > > lsn_t end_lsn); > > > > > >ulint >buf_flush_ready_for_replace( > > buf_page_t* bpage); ># 225 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >extern "C" >os_thread_ret_t >buf_flush_page_cleaner_coordinator( > > void* arg); > > > > >extern "C" >os_thread_ret_t >buf_flush_page_cleaner_worker( > > void* arg); > > >void >buf_flush_page_cleaner_init(void); > > >void >buf_flush_wait_LRU_batch_end(void); ># 262 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >void >buf_flush_init_flush_rbt(void); > > > > >void >buf_flush_free_flush_rbt(void); ># 280 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" >ulint >buf_flush_page( > > buf_pool_t* buf_pool, > buf_page_t* bpage, > buf_flush_t flush_type, > bool sync); > > > >bool >buf_flush_ready_for_flush( > > buf_page_t* bpage, > > buf_flush_t flush_type) > __attribute__((warn_unused_result)); > > > > > >ulint >buf_pool_get_dirty_pages_count( > > buf_pool_t* buf_pool, > ulint id, > FlushObserver* observer); > > > > > >void >buf_flush_sync_all_buf_pools(void); > > > > >void >buf_flush_request_force( > lsn_t lsn_limit); > > > > > > >class FlushObserver { >public: > > > > > > > FlushObserver(ulint space_id, trx_t* trx, ut_stage_alter_t* stage); > > > ~FlushObserver(); > > > > > > bool is_complete(ulint instance_no) > { > return(m_flushed->at(instance_no) == m_removed->at(instance_no) > || m_interrupted); > } > > > bool is_partial_flush() const { return m_stage != __null; } > > > bool is_interrupted() const { return m_interrupted; } > > > void interrupted() > { > m_interrupted = true; > } > > > void check_interrupted(); > > > void flush(); > > > > void notify_flush( > buf_pool_t* buf_pool, > buf_page_t* bpage); > > > > > void notify_remove( > buf_pool_t* buf_pool, > buf_page_t* bpage); >private: > > const ulint m_space_id; > > > const trx_t* const m_trx; > > > > > > > ut_stage_alter_t* m_stage; > > > std::vector<ulint>* m_flushed; > > > std::vector<ulint>* m_removed; > > > bool m_interrupted; >}; > > > >ulint >buf_flush_start( > > buf_pool_t* buf_pool, > buf_flush_t flush_type); > > > >void >buf_flush_end( > > buf_pool_t* buf_pool, > buf_flush_t flush_type); > > > >void >buf_flush_common( > > buf_flush_t flush_type, > ulint page_count); > > > > > > > >__attribute__((nonnull)) >void >buf_flush_batch( > > buf_pool_t* buf_pool, > buf_flush_t flush_type, > > > > ulint min_n, > > > lsn_t lsn_limit, > > > > > flush_counters_t* n); > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.ic" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.ic" >void >buf_flush_insert_into_flush_list( > > buf_pool_t* buf_pool, > buf_block_t* block, > lsn_t lsn); > > > > > >void >buf_flush_insert_sorted_into_flush_list( > > buf_pool_t* buf_pool, > buf_block_t* block, > lsn_t lsn); > > > > > >static inline >void >buf_flush_note_modification( > > buf_block_t* block, > lsn_t start_lsn, > > lsn_t end_lsn, > > FlushObserver* observer) >{ ># 82 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.ic" > (&block->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.ic", 82); > > do { } while(0); > block->page.newest_modification = end_lsn; > > > > do { } while(0) > ; > block->page.flush_observer = observer; > > if (block->page.oldest_modification == 0) { > buf_pool_t* buf_pool = buf_pool_from_block(block); > > buf_flush_insert_into_flush_list(buf_pool, block, start_lsn); > } else { > do { } while(0); > } > > do { (block)->mutex.exit(); } while (0); > > srv_stats.buf_pool_write_requests.inc(); >} > > > >static inline >void >buf_flush_recv_note_modification( > > buf_block_t* block, > lsn_t start_lsn, > > lsn_t end_lsn) > >{ ># 134 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.ic" > do { (&(block)->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.ic", 134); } while (0); > > block->page.newest_modification = end_lsn; > > if (!block->page.oldest_modification) { > buf_pool_t* buf_pool = buf_pool_from_block(block); > > buf_flush_insert_sorted_into_flush_list( > buf_pool, block, start_lsn); > } else { > do { } while(0); > } > > do { (block)->mutex.exit(); } while (0); > >} ># 457 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0flu.h" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" >struct trx_t; > > > > > > >ulint >buf_LRU_buf_pool_running_out(void); ># 53 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" >struct dict_table_t; > > > >bool buf_LRU_drop_page_hash_for_tablespace(dict_table_t* table) > __attribute__((warn_unused_result,nonnull)); ># 68 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" >void buf_LRU_flush_or_remove_pages(ulint id, FlushObserver* observer, > ulint first = 0); ># 91 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" >bool >buf_LRU_free_page( > > buf_page_t* bpage, > bool zip) > > __attribute__((nonnull)); > > > >bool >buf_LRU_scan_and_free_block( > > buf_pool_t* buf_pool, > bool scan_all) > > > __attribute__((nonnull,warn_unused_result)); > > > > >buf_block_t* >buf_LRU_get_free_only( > > buf_pool_t* buf_pool); ># 141 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" >buf_block_t* >buf_LRU_get_free_block( > > buf_pool_t* buf_pool) > __attribute__((nonnull,warn_unused_result)); > > > > >ulint >buf_LRU_evict_from_unzip_LRU( > > buf_pool_t* buf_pool); > > >void >buf_LRU_block_free_non_file_page( > > buf_block_t* block); > > > > >void >buf_LRU_add_block( > > buf_page_t* bpage, > ulint old); > > > > > >void >buf_unzip_LRU_add_block( > > buf_block_t* block, > ulint old); > > > >void >buf_LRU_make_block_young( > > buf_page_t* bpage); > > > >uint >buf_LRU_old_ratio_update( > > uint old_pct, > > bool adjust); > > > > > >void >buf_LRU_stat_update(void); > > > > > > > >void buf_LRU_free_one_page(buf_page_t* bpage, page_id_t old_page_id) > __attribute__((nonnull)); > > > >void >buf_LRU_adjust_hp( > > buf_pool_t* buf_pool, > const buf_page_t* bpage); ># 259 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0lru.h" >extern uint buf_LRU_old_threshold_ms; > > > > > > > >struct buf_LRU_stat_t >{ > ulint io; > ulint unzip; >}; > > > >extern buf_LRU_stat_t buf_LRU_stat_cur; > > > >extern buf_LRU_stat_t buf_LRU_stat_sum; ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0rea.h" 1 ># 43 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0rea.h" >dberr_t >buf_read_page( > const page_id_t page_id, > const page_size_t& page_size); ># 56 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0rea.h" >void >buf_read_page_background( > const page_id_t page_id, > const page_size_t& page_size, > bool sync); ># 78 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0rea.h" >ulint >buf_read_ahead_random( > const page_id_t page_id, > const page_size_t& page_size, > ulint inside_ibuf); ># 110 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0rea.h" >ulint >buf_read_ahead_linear( > const page_id_t page_id, > const page_size_t& page_size, > ulint inside_ibuf); > > > > > >void >buf_read_ibuf_merge_pages( > > bool sync, > > > > > const ulint* space_ids, > const ulint* page_nos, > > > > ulint n_stored); ># 144 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0rea.h" >void >buf_read_recv_pages( > bool sync, > ulint space_id, > const ulint* page_nos, > ulint n_stored); ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" 2 > > > >struct buf_chunk_t{ > ulint size; > unsigned char* mem; > > ut_new_pfx_t mem_pfx; > > > > buf_block_t* blocks; > > > size_t mem_size() const { > return(mem_pfx.m_size); > } >}; > > > > >static inline >ulint >buf_pool_get_curr_size(void) > >{ > return(srv_buf_pool_curr_size); >} > > > > >static inline >unsigned >buf_pool_index( > > const buf_pool_t* buf_pool) >{ > unsigned i = unsigned(buf_pool - buf_pool_ptr); > do { } while(0); > do { } while(0); > return(i); >} > > > > >static inline >buf_pool_t* >buf_pool_from_bpage( > > const buf_page_t* bpage) >{ > do { } while(0); > return(&buf_pool_ptr[bpage->buf_pool_index]); >} > > > > >static inline >buf_pool_t* >buf_pool_from_block( > > const buf_block_t* block) >{ > return(buf_pool_from_bpage(&block->page)); >} > > > > >static inline >ulint >buf_pool_get_n_pages(void) > >{ > if (!buf_pool_ptr) > return buf_pool_get_curr_size() >> srv_page_size_shift; > > ulint chunk_size= 0; > for (uint i= 0; i < srv_buf_pool_instances; i++) > { > buf_pool_t* buf_pool = buf_pool_from_array(i); > for (uint j= 0; j < buf_pool->n_chunks; j++) > chunk_size+= buf_pool->chunks[j].size; > } > return chunk_size; >} > > > > >static inline >unsigned >buf_page_get_freed_page_clock( > > const buf_page_t* bpage) >{ > > return(bpage->freed_page_clock); >} > > > > >static inline >unsigned >buf_block_get_freed_page_clock( > > const buf_block_t* block) >{ > return(buf_page_get_freed_page_clock(&block->page)); >} ># 161 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >static inline >ulint >buf_page_peek_if_young( > > const buf_page_t* bpage) >{ > buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); > > > return((buf_pool->freed_page_clock & ((1UL << 31) - 1)) > < (bpage->freed_page_clock > + (buf_pool->curr_size > * (1024 - buf_pool->LRU_old_ratio) > / (1024 * 4)))); >} > > > > > > >static inline >ulint >buf_page_peek_if_too_old( > > const buf_page_t* bpage) >{ > buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); > > if (buf_pool->freed_page_clock == 0) { > > > > return((0)); > } else if (buf_LRU_old_threshold_ms && bpage->old) { > unsigned access_time = buf_page_is_accessed(bpage); > > > > > > > > if (access_time > 0 > && ((ib_uint32_t) (ut_time_ms() - access_time)) > >= buf_LRU_old_threshold_ms) { > return((1)); > } > > buf_pool->stat.n_pages_not_made_young++; > return((0)); > } else { > return(!buf_page_peek_if_young(bpage)); > } >} > > > > >static inline >enum buf_page_state >buf_page_get_state( > > const buf_page_t* bpage) >{ > enum buf_page_state state = bpage->state; ># 244 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > return(state); >} > > > >static inline >enum buf_page_state >buf_block_get_state( > > const buf_block_t* block) >{ > return(buf_page_get_state(&block->page)); >} > > > > >static inline >const char* >buf_get_state_name( > > const buf_block_t* block) > >{ > enum buf_page_state state = buf_page_get_state(&block->page); > > switch (state) { > case BUF_BLOCK_POOL_WATCH: > return (const char *) "BUF_BLOCK_POOL_WATCH"; > case BUF_BLOCK_ZIP_PAGE: > return (const char *) "BUF_BLOCK_ZIP_PAGE"; > case BUF_BLOCK_ZIP_DIRTY: > return (const char *) "BUF_BLOCK_ZIP_DIRTY"; > case BUF_BLOCK_NOT_USED: > return (const char *) "BUF_BLOCK_NOT_USED"; > case BUF_BLOCK_READY_FOR_USE: > return (const char *) "BUF_BLOCK_NOT_USED"; > case BUF_BLOCK_FILE_PAGE: > return (const char *) "BUF_BLOCK_FILE_PAGE"; > case BUF_BLOCK_MEMORY: > return (const char *) "BUF_BLOCK_MEMORY"; > case BUF_BLOCK_REMOVE_HASH: > return (const char *) "BUF_BLOCK_REMOVE_HASH"; > default: > return (const char *) "CORRUPTED"; > } >} > > > >static inline >void >buf_page_set_state( > > buf_page_t* bpage, > enum buf_page_state state) >{ ># 350 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > bpage->state = state; >} > > > >static inline >void >buf_block_set_state( > > buf_block_t* block, > enum buf_page_state state) >{ > buf_page_set_state(&block->page, state); >} > > > > >static inline >ulint >buf_page_in_file( > > const buf_page_t* bpage) >{ > switch (buf_page_get_state(bpage)) { > case BUF_BLOCK_POOL_WATCH: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 376); > break; > case BUF_BLOCK_ZIP_PAGE: > case BUF_BLOCK_ZIP_DIRTY: > case BUF_BLOCK_FILE_PAGE: > return((1)); > case BUF_BLOCK_NOT_USED: > case BUF_BLOCK_READY_FOR_USE: > case BUF_BLOCK_MEMORY: > case BUF_BLOCK_REMOVE_HASH: > break; > } > > return((0)); >} > > > > >static inline >ulint >buf_page_belongs_to_unzip_LRU( > > const buf_page_t* bpage) >{ > do { } while(0); > > return(bpage->zip.data > && buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE); >} > > > > >static inline >BPageMutex* >buf_page_get_mutex( > > const buf_page_t* bpage) >{ > buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); > > switch (buf_page_get_state(bpage)) { > case BUF_BLOCK_POOL_WATCH: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 420); > return(__null); > case BUF_BLOCK_ZIP_PAGE: > case BUF_BLOCK_ZIP_DIRTY: > return(&buf_pool->zip_mutex); > default: > return(&((buf_block_t*) bpage)->mutex); > } >} > > > > >static inline >buf_flush_t >buf_page_get_flush_type( > > const buf_page_t* bpage) >{ > buf_flush_t flush_type = (buf_flush_t) bpage->flush_type; ># 452 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > return(flush_type); >} > > >static inline >void >buf_page_set_flush_type( > > buf_page_t* bpage, > buf_flush_t flush_type) >{ > bpage->flush_type = flush_type; > do { } while(0); >} > > > > >static inline >void >buf_block_set_file_page( > buf_block_t* block, > const page_id_t page_id) >{ > buf_block_set_state(block, BUF_BLOCK_FILE_PAGE); > block->page.id = page_id; >} > > > > >static inline >enum buf_io_fix >buf_page_get_io_fix( > > const buf_page_t* bpage) >{ > do { } while(0); > > enum buf_io_fix io_fix = bpage->io_fix; ># 503 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > return(io_fix); >} > > > > >static inline >enum buf_io_fix >buf_block_get_io_fix( > > const buf_block_t* block) >{ > return(buf_page_get_io_fix(&block->page)); >} > > > >static inline >void >buf_page_set_io_fix( > > buf_page_t* bpage, > enum buf_io_fix io_fix) >{ > > > > > do { } while(0); > > bpage->io_fix = io_fix; > do { } while(0); >} > > > >static inline >void >buf_block_set_io_fix( > > buf_block_t* block, > enum buf_io_fix io_fix) >{ > buf_page_set_io_fix(&block->page, io_fix); >} ># 558 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >static inline >void >buf_page_set_sticky( > > buf_page_t* bpage) >{ > > > > > do { } while(0); > do { } while(0); > > bpage->io_fix = BUF_IO_PIN; >} > > > >static inline >void >buf_page_unset_sticky( > > buf_page_t* bpage) >{ > > > > > do { } while(0); > do { } while(0); > > bpage->io_fix = BUF_IO_NONE; >} > > > > >static inline >ulint >buf_page_can_relocate( > > const buf_page_t* bpage) >{ > > > > > do { } while(0); > do { } while(0); > do { } while(0); > > return(buf_page_get_io_fix(bpage) == BUF_IO_NONE > && bpage->buf_fix_count == 0); >} > > > > >static inline >ulint >buf_page_is_old( > > const buf_page_t* bpage) >{ > > > > > do { } while(0); > > return(bpage->old); >} > > > >static inline >void >buf_page_set_old( > > buf_page_t* bpage, > bool old) >{ > > > > do { if (__builtin_expect(!(ulint) (buf_page_in_file(bpage)), (0))) { ut_dbg_assertion_failed("buf_page_in_file(bpage)", "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 643); } } while (0); > do { } while(0); > do { } while(0); ># 664 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > bpage->old = old; >} > > > > >static inline >unsigned >buf_page_is_accessed( > > const buf_page_t* bpage) >{ > do { } while(0); > > return(bpage->access_time); >} > > > >static inline >void >buf_page_set_accessed( > > buf_page_t* bpage) >{ > > > > > > > do { if (__builtin_expect(!(ulint) (buf_page_in_file(bpage)), (0))) { ut_dbg_assertion_failed("buf_page_in_file(bpage)", "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 695); } } while (0); > > if (bpage->access_time == 0) { > > bpage->access_time = static_cast<uint>(ut_time_ms()); > } >} > > > > > >static inline >buf_block_t* >buf_page_get_block( > > buf_page_t* bpage) >{ > if (bpage != __null) { > do { } while(0); > > if (buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE) { > return((buf_block_t*) bpage); > } > } > > return(__null); >} ># 761 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >static inline >buf_frame_t* >buf_frame_align( > > > byte* ptr) >{ > buf_frame_t* frame; > > do { } while(0); > > frame = (buf_frame_t*) ut_align_down(ptr, ((ulint) srv_page_size)); > > return(frame); >} > > > > >static inline >void >buf_ptr_get_fsp_addr( > > const void* ptr, > ulint* space, > fil_addr_t* addr) >{ > const ib_page_t* page = (const ib_page_t*) ut_align_down(ptr, > ((ulint) srv_page_size)); > > *space = mach_read_from_4(page + 34); > addr->page = mach_read_from_4(page + 4); > addr->boffset = ut_align_offset(ptr, ((ulint) srv_page_size)); >} > > > > > >static inline >unsigned >buf_block_get_lock_hash_val( > > const buf_block_t* block) >{ > do { } while(0); > do { } while(0); > do { } while(0) > ; > > return(block->lock_hash_val); >} > > > > > >static inline >buf_page_t* >buf_page_alloc_descriptor(void) > >{ > buf_page_t* bpage; > > bpage = (buf_page_t*) ::calloc(1, sizeof *bpage); > do { } while(0); > ((void) (bpage), (void) (sizeof *bpage)); > > return(bpage); >} > > > >static inline >void >buf_page_free_descriptor( > > buf_page_t* bpage) >{ > ::free(bpage); >} > > > >static inline >void >buf_block_free( > > buf_block_t* block) >{ > buf_pool_t* buf_pool = buf_pool_from_bpage((buf_page_t*) block); > > do { do { } while(0); (&(buf_pool)->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 853); } while (0); > > do { (&(block)->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 855); } while (0); > > do { if (__builtin_expect(!(ulint) (buf_block_get_state(block) != BUF_BLOCK_FILE_PAGE), (0))) { ut_dbg_assertion_failed("buf_block_get_state(block) != BUF_BLOCK_FILE_PAGE", "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 857); } } while (0); > > buf_LRU_block_free_non_file_page(block); > > do { (block)->mutex.exit(); } while (0); > > (&buf_pool->mutex)->exit(); >} > > > > >static inline >byte* >buf_frame_copy( > > byte* buf, > const buf_frame_t* frame) >{ > do { } while(0); > > ut_memcpy(buf, frame, ((ulint) srv_page_size)); > > return(buf); >} > > > > > >static inline >lsn_t >buf_page_get_newest_modification( > > const buf_page_t* bpage) > >{ > lsn_t lsn; > BPageMutex* block_mutex = buf_page_get_mutex(bpage); > > (block_mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 897); > > if (buf_page_in_file(bpage)) { > lsn = bpage->newest_modification; > } else { > lsn = 0; > } > > (block_mutex)->exit(); > > return(lsn); >} > > > > > >static inline >void >buf_block_modify_clock_inc( > > buf_block_t* block) >{ ># 931 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > ; > > block->modify_clock++; >} > > > > > >static inline >ib_uint64_t >buf_block_get_modify_clock( > > buf_block_t* block) >{ ># 955 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > return(block->modify_clock); >} > > > > >static inline >ulint >buf_block_fix(buf_page_t* bpage) >{ > return uint32(__atomic_fetch_add((&bpage->buf_fix_count), (1), (0)) > > ) + 1; >} > > > > >static inline >ulint >buf_block_fix(buf_block_t* block) >{ > return buf_block_fix(&block->page); >} > > > > >static inline >ulint >buf_block_get_fix(buf_page_t* bpage) >{ > return __atomic_load_n((&bpage->buf_fix_count), (0)) > ; >} > > > > >static inline >ulint >buf_block_get_fix(buf_block_t* block) >{ > return buf_block_get_fix(&block->page); >} > > > >static inline >void >buf_block_buf_fix_inc_func( > > > > > > buf_block_t* block) >{ ># 1024 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > buf_block_fix(block); >} > > > > >static inline >ulint >buf_block_unfix(buf_page_t* bpage) >{ > uint32 count = uint32(__atomic_fetch_add((&bpage->buf_fix_count), (-1), (0)) > > ); > do { } while(0); > return count - 1; >} > > > > >static inline >ulint >buf_block_unfix(buf_block_t* block) >{ > return buf_block_unfix(&block->page); >} > > > >static inline >void >buf_block_buf_fix_dec( > > buf_block_t* block) >{ > buf_block_unfix(block); ># 1069 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >} > > > > >inline buf_pool_t* buf_pool_get(const page_id_t page_id) >{ > > ulint ignored_page_no = page_id.page_no() >> 6; > > page_id_t id(page_id.space(), ignored_page_no); > > ulint i = id.fold() % srv_buf_pool_instances; > > return(&buf_pool_ptr[i]); >} > > > > >static inline >buf_pool_t* >buf_pool_from_array( > > ulint index) > >{ > do { } while(0); > do { } while(0); > return(&buf_pool_ptr[index]); >} > > > > > >static inline >buf_page_t* >buf_page_hash_get_low( > buf_pool_t* buf_pool, > const page_id_t page_id) >{ > buf_page_t* bpage; ># 1123 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > { do { } while(0); (bpage) = (buf_page_t*) (hash_get_nth_cell(buf_pool->page_hash, hash_calc_hash(page_id.fold(), buf_pool->page_hash))->node); do {} while (0); while ((bpage) != __null) { do { } while(0); if (page_id == bpage->id) { break; } else { do {} while (0); (bpage) = (buf_page_t*) ((bpage)->hash); } }} > > > > ; > if (bpage) { > do { if (__builtin_expect(!(ulint) (buf_page_in_file(bpage)), (0))) { ut_dbg_assertion_failed("buf_page_in_file(bpage)", "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 1129); } } while (0); > do { } while(0); > do { } while(0); > do { } while(0); > } > > return(bpage); >} ># 1154 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >static inline >buf_page_t* >buf_page_hash_get_locked( > buf_pool_t* buf_pool, > const page_id_t page_id, > rw_lock_t** lock, > ulint lock_mode, > bool watch) >{ > buf_page_t* bpage = __null; > rw_lock_t* hash_lock; > ulint mode = RW_LOCK_S; > > if (lock != __null) { > *lock = __null; > do { } while(0) > ; > mode = lock_mode; > } > > hash_lock = hash_get_lock(buf_pool->page_hash, page_id.fold()); > > do { } while(0) > ; > > if (mode == RW_LOCK_S) { > rw_lock_s_lock_func((hash_lock), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 1180); > > > hash_lock = hash_lock_s_confirm( > hash_lock, buf_pool->page_hash, page_id.fold()); > } else { > rw_lock_x_lock_func((hash_lock), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 1186); > > hash_lock = hash_lock_x_confirm( > hash_lock, buf_pool->page_hash, page_id.fold()); > } > > bpage = buf_page_hash_get_low(buf_pool, page_id); > > if (!bpage || buf_pool_watch_is_sentinel(buf_pool, bpage)) { > if (!watch) { > bpage = __null; > } > goto unlock_and_exit; > } > > do { } while(0); > do { } while(0); > > if (lock == __null) { > > goto unlock_and_exit; > } else { > > *lock = hash_lock; > goto exit; > } > >unlock_and_exit: > if (mode == RW_LOCK_S) { > rw_lock_s_unlock_func(hash_lock); > } else { > rw_lock_x_unlock_func(hash_lock); > } >exit: > return(bpage); >} ># 1237 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >static inline >buf_block_t* >buf_block_hash_get_locked( > buf_pool_t* buf_pool, > const page_id_t page_id, > rw_lock_t** lock, > ulint lock_mode) >{ > buf_page_t* bpage = buf_page_hash_get_locked(buf_pool, > page_id, > lock, > lock_mode); > buf_block_t* block = buf_page_get_block(bpage); > > if (block != __null) { > > do { } while(0); > do { } while(0); > > return(block); > } else if (bpage) { > > do { } while(0); > > if (lock) { > if (lock_mode == RW_LOCK_S) { > rw_lock_s_unlock_func(*lock); > } else { > rw_lock_x_unlock_func(*lock); > } > } > *lock = __null; > return(__null); > } > > do { } while(0); > do { } while(0); > return(__null); >} > > > > > > >inline bool buf_page_peek(const page_id_t page_id) >{ > buf_pool_t* buf_pool = buf_pool_get(page_id); > > return(buf_page_hash_get_locked(buf_pool, page_id, __null, 0) != __null); >} > > > >static inline >void >buf_page_release_zip( > > buf_page_t* bpage) >{ > do { } while(0); > do { if (__builtin_expect(!(ulint) (bpage->buf_fix_count > 0), (0))) { ut_dbg_assertion_failed("bpage->buf_fix_count > 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 1298); } } while (0); > > switch (buf_page_get_state(bpage)) { > case BUF_BLOCK_FILE_PAGE: ># 1314 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > case BUF_BLOCK_ZIP_PAGE: > case BUF_BLOCK_ZIP_DIRTY: > buf_block_unfix(reinterpret_cast<buf_block_t*>(bpage)); > return; > > case BUF_BLOCK_POOL_WATCH: > case BUF_BLOCK_NOT_USED: > case BUF_BLOCK_READY_FOR_USE: > case BUF_BLOCK_MEMORY: > case BUF_BLOCK_REMOVE_HASH: > break; > } > > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 1327); >} > > > >static inline >void >buf_page_release_latch( > > buf_block_t* block, > ulint rw_latch) > >{ ># 1349 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" > if (rw_latch == RW_S_LATCH) { > rw_lock_s_unlock_func(&block->lock); > } else if (rw_latch == RW_SX_LATCH) { > rw_lock_sx_unlock_func(&block->lock); > } else if (rw_latch == RW_X_LATCH) { > rw_lock_x_unlock_func(&block->lock); > } >} ># 1377 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic" >static inline >void >buf_pool_mutex_enter_all(void) > >{ > for (ulint i = 0; i < srv_buf_pool_instances; ++i) { > buf_pool_t* buf_pool = buf_pool_from_array(i); > > do { do { } while(0); (&(buf_pool)->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.ic", 1385); } while (0); > } >} > > > >static inline >void >buf_pool_mutex_exit_all(void) > >{ > ulint i; > > for (i = 0; i < srv_buf_pool_instances; i++) { > buf_pool_t* buf_pool; > > buf_pool = buf_pool_from_array(i); > (&buf_pool->mutex)->exit(); > } >} > > > >static inline >buf_block_t* >buf_get_nth_chunk_block( > > const buf_pool_t* buf_pool, > ulint n, > ulint* chunk_size) >{ > const buf_chunk_t* chunk; > > chunk = buf_pool->chunks + n; > *chunk_size = chunk->size; > return(chunk->blocks); >} > > > >static inline >void * >buf_page_get_frame( > > const buf_page_t* bpage) >{ > > > if (bpage->slot && bpage->slot->out_buf) { > return bpage->slot->out_buf; > } else if (bpage->zip.data) { > return bpage->zip.data; > } else { > return ((buf_block_t*) bpage)->frame; > } >} > > > > >static inline >bool >buf_pool_is_obsolete( > ulint withdraw_clock) >{ > return(buf_pool_withdrawing > || buf_withdraw_clock != withdraw_clock); >} > > > > > >static inline >ulint >buf_pool_size_align( > ulint size) >{ > const ib_uint64_t m = ((ib_uint64_t)srv_buf_pool_instances) * srv_buf_pool_chunk_unit; > size = std::max(size, srv_buf_pool_min_size); > > if (size % m == 0) { > return(size); > } else { > return (ulint)((size / m + 1) * m); > } >} ># 2409 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0buf.h" 2 ># 46 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0type.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0type.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0geo.h" 1 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0geo.h" >enum wkbType >{ > wkbPoint = 1, > wkbLineString = 2, > wkbPolygon = 3, > wkbMultiPoint = 4, > wkbMultiLineString = 5, > wkbMultiPolygon = 6, > wkbGeometryCollection = 7 >}; > > >enum wkbByteOrder >{ > wkbXDR = 0, > wkbNDR = 1 >}; > > > > > >int >rtree_mbr_from_wkb( > > const uchar* wkb, > uint size, > uint n_dims, > double* mbr); > > >struct rtr_split_node_t >{ > double square; > int n_node; > uchar* key; > double* coords; >}; > > > >inline >static >double* >reserve_coords(double **d_buffer, > int n_dim) > >{ > double *coords = *d_buffer; > (*d_buffer) += n_dim * 2; > return coords; >} > > > > >int >split_rtree_node( > > rtr_split_node_t* node, > int n_entries, > int all_size, > int key_size, > int min_size, > int size1, > int size2, > double** d_buffer, > int n_dim, > uchar* first_rec); ># 119 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0geo.h" >int >rtree_key_cmp( > > page_cur_mode_t mode, > const uchar* b, > int b_len, > const uchar* a, > int a_len); > > > > > > >double >rtree_area_increase( > const uchar* a, > const uchar* b, > int a_len, > double* ab_area); > > > > > > >double >rtree_area_overlapping( > const uchar* a, > const uchar* b, > int mbr_len); ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0type.h" 2 > > > > > >typedef ib_uint32_t node_seq_t; > > >typedef struct node_visit { > ulint page_no; > node_seq_t seq_no; > ulint level; > ulint child_no; > > btr_pcur_t* cursor; > > > > double mbr_inc; > >} node_visit_t; > >typedef std::vector<node_visit_t, ut_allocator<node_visit_t> > rtr_node_path_t; > >typedef struct rtr_rec { > rec_t* r_rec; > bool locked; >} rtr_rec_t; > >typedef std::vector<rtr_rec_t, ut_allocator<rtr_rec_t> > rtr_rec_vector; > > >typedef struct matched_rec { > byte* bufp; > byte rec_buf[(1U << 16) * 2]; > > buf_block_t block; > ulint used; > rtr_rec_vector* matched_recs; > ib_mutex_t rtr_match_mutex; > > bool valid; > > > bool locked; >} matched_rec_t; > > >typedef struct rtr_mbr { > double xmin; > double xmax; > double ymin; > double ymax; >} rtr_mbr_t; ># 100 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0type.h" >typedef struct rtr_info{ > rtr_node_path_t*path; > rtr_node_path_t*parent_path; > > > matched_rec_t* matches; > ib_mutex_t rtr_path_mutex; > > buf_block_t* tree_blocks[100 + 3]; > > > ulint tree_savepoints[100 + 3]; > > > rtr_mbr_t mbr; > que_thr_t* thr; > mem_heap_t* heap; > btr_cur_t* cursor; > dict_index_t* index; > bool need_prdt_lock; > > > bool need_page_lock; > > > bool allocated; > > bool mbr_adj; > > bool fd_del; > const dtuple_t* search_tuple; > > page_cur_mode_t search_mode; > >} rtr_info_t; > >typedef std::list<rtr_info_t*, ut_allocator<rtr_info_t*> > rtr_info_active; > > >typedef struct rtr_info_track { > rtr_info_active* rtr_active; > ib_mutex_t rtr_active_mutex; > > >} rtr_info_track_t; > > >typedef struct rtree_ssn { > ib_mutex_t mutex; > node_seq_t seq_no; >} rtr_ssn_t; > > > >typedef struct rtr_rec_move { > rec_t* old_rec; > rec_t* new_rec; > bool moved; >} rtr_rec_move_t; ># 47 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0once.h" 1 ># 54 "/buildbot/mariadb-10.2.31/storage/innobase/include/os0once.h" >class os_once { >public: > > typedef ib_uint32_t state_t; > > > static const state_t NEVER_DONE = 0; > > > static const state_t IN_PROGRESS = 1; > > > static const state_t DONE = 2; > > > > > > > static > void > do_or_wait_for_done( > volatile state_t* state, > void (*do_func)(void*), > void* do_func_arg) > { > int32 oldval = NEVER_DONE; > > > if (*state == DONE) { > return; > } > > if (my_atomic_cas32((int32*) state, &oldval, IN_PROGRESS)) { > > > do_func(do_func_arg); > > my_atomic_store32((int32*) state, DONE); > } else { > > > > > for (;;) { > const state_t s = *state; > > switch (s) { > case DONE: > return; > case IN_PROGRESS: > break; > case NEVER_DONE: > > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/os0once.h", 109); > } > > do { volatile int32 volatile_var; int32 oldval= 0; my_atomic_cas32(&volatile_var, &oldval, 1); } while (0); > } > } > } >}; ># 48 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 > > > > > ># 1 "/usr/include/c++/4.8.2/iterator" 1 3 ># 58 "/usr/include/c++/4.8.2/iterator" 3 ># 59 "/usr/include/c++/4.8.2/iterator" 3 > > > > > > > ># 1 "/usr/include/c++/4.8.2/bits/stream_iterator.h" 1 3 ># 33 "/usr/include/c++/4.8.2/bits/stream_iterator.h" 3 ># 34 "/usr/include/c++/4.8.2/bits/stream_iterator.h" 3 > > > >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 47 "/usr/include/c++/4.8.2/bits/stream_iterator.h" 3 > template<typename _Tp, typename _CharT = char, > typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t> > class istream_iterator > : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&> > { > public: > typedef _CharT char_type; > typedef _Traits traits_type; > typedef basic_istream<_CharT, _Traits> istream_type; > > private: > istream_type* _M_stream; > _Tp _M_value; > bool _M_ok; > > public: > > istream_iterator() > : _M_stream(0), _M_value(), _M_ok(false) {} > > > istream_iterator(istream_type& __s) > : _M_stream(&__s) > { _M_read(); } > > istream_iterator(const istream_iterator& __obj) > : _M_stream(__obj._M_stream), _M_value(__obj._M_value), > _M_ok(__obj._M_ok) > { } > > const _Tp& > operator*() const > { > > > ; > return _M_value; > } > > const _Tp* > operator->() const { return &(operator*()); } > > istream_iterator& > operator++() > { > > > ; > _M_read(); > return *this; > } > > istream_iterator > operator++(int) > { > > > ; > istream_iterator __tmp = *this; > _M_read(); > return __tmp; > } > > bool > _M_equal(const istream_iterator& __x) const > { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); } > > private: > void > _M_read() > { > _M_ok = (_M_stream && *_M_stream) ? true : false; > if (_M_ok) > { > *_M_stream >> _M_value; > _M_ok = *_M_stream ? true : false; > } > } > }; > > > template<typename _Tp, typename _CharT, typename _Traits, typename _Dist> > inline bool > operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, > const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) > { return __x._M_equal(__y); } > > > template <class _Tp, class _CharT, class _Traits, class _Dist> > inline bool > operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, > const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) > { return !__x._M_equal(__y); } ># 152 "/usr/include/c++/4.8.2/bits/stream_iterator.h" 3 > template<typename _Tp, typename _CharT = char, > typename _Traits = char_traits<_CharT> > > class ostream_iterator > : public iterator<output_iterator_tag, void, void, void, void> > { > public: > > > typedef _CharT char_type; > typedef _Traits traits_type; > typedef basic_ostream<_CharT, _Traits> ostream_type; > > > private: > ostream_type* _M_stream; > const _CharT* _M_string; > > public: > > ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {} ># 183 "/usr/include/c++/4.8.2/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; } > }; > > > > >} ># 67 "/usr/include/c++/4.8.2/iterator" 2 3 ># 54 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 > > > >struct ib_rbt_t; ># 305 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" >dict_table_t* >dict_mem_table_create( > > const char* name, > ulint space, > > ulint n_cols, > > > ulint n_v_cols, > ulint flags, > ulint flags2); > > > >__attribute__((visibility ("hidden"))) >bool >dict_mem_table_is_system( > > char *name); > > >void >dict_mem_table_free( > > dict_table_t* table); > > >void >dict_mem_table_add_col( > > dict_table_t* table, > mem_heap_t* heap, > const char* name, > ulint mtype, > ulint prtype, > ulint len) > __attribute__((nonnull(1))); ># 357 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" >dict_v_col_t* >dict_mem_table_add_v_col( > dict_table_t* table, > mem_heap_t* heap, > const char* name, > ulint mtype, > ulint prtype, > ulint len, > ulint pos, > ulint num_base); > > > > >void >dict_mem_table_add_s_col( > dict_table_t* table, > ulint num_base); > > > >void >dict_mem_table_col_rename( > > dict_table_t* table, > ulint nth_col, > const char* from, > const char* to, > bool is_virtual); > > > > >void >dict_mem_fill_column_struct( > > dict_col_t* column, > > ulint col_pos, > ulint mtype, > ulint prtype, > ulint col_len); > > > >static inline >void >dict_mem_fill_index_struct( > > dict_index_t* index, > mem_heap_t* heap, > const char* table_name, > const char* index_name, > ulint space, > > > ulint type, > > ulint n_fields); > > > >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 prefix_len); > > > > >void >dict_mem_index_free( > > dict_index_t* index); > > > >dict_foreign_t* >dict_mem_foreign_create(void); > > > > > > > >void >dict_mem_foreign_table_name_lookup_set( > > dict_foreign_t* foreign, > ulint do_alloc); > > > > > > >void >dict_mem_referenced_table_name_lookup_set( > > dict_foreign_t* foreign, > ulint do_alloc); > > > > > > >void >dict_mem_foreign_fill_vcol_set( > dict_foreign_t* foreign); > > > >void >dict_mem_table_fill_foreign_vcol_set( > dict_table_t* table); > > > >void >dict_mem_table_free_foreign_vcol_set( > dict_table_t* table); > > > > > > >char* >dict_mem_create_temporary_tablename( > mem_heap_t* heap, > const char* dbtab, > table_id_t id); > > >void >dict_mem_init(void); > > >class id_name_t >{ >public: > > id_name_t() > : m_name() > {} > > > explicit id_name_t( > const char* name) > : m_name(name) > {} > > > > id_name_t& operator=( > const char* name) > { > m_name = name; > return(*this); > } > > > > operator const char*() const > { > return(m_name); > } > > > > const char* operator()() const > { > return(m_name); > } > >private: > > const char* m_name; >}; > > >struct table_name_t >{ > > char* m_name; > > > table_name_t() {} > > table_name_t(char* name) : m_name(name) {} > > > const char* dbend() const > { > const char* sep = strchr(m_name, '/'); > do { } while(0); > return sep; > } > > > size_t dblen() const { return dbend() - m_name; } > > > > const char* basename() const { return dbend() + 1; } > > > static const char part_suffix[4]; > > > > > const char* part() const { return strstr(basename(), part_suffix); } > > > inline bool is_temporary() const; >}; > > >struct dict_col_t{ > > > > > unsigned prtype:32; > > > > > > > unsigned mtype:8; > > > > unsigned len:16; ># 620 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > unsigned mbminlen:3; > > unsigned mbmaxlen:3; > > > > > > unsigned ind:10; > > unsigned ord_part:1; > > > unsigned max_prefix:12; > > > > > bool is_virtual() const { return prtype & 8192U; } > > > > inline void detach(const dict_index_t& index); >}; > > > > >struct dict_v_idx_t { > > dict_index_t* index; > > > ulint nth_field; >}; > > >typedef std::list<dict_v_idx_t, ut_allocator<dict_v_idx_t> > dict_v_idx_list; > > >struct dict_v_col_t{ > > dict_col_t m_col; > > > dict_col_t** base_col; > > > ulint num_base; > > > ulint v_pos; > > > > dict_v_idx_list* v_indexes; > >}; > > >struct dict_add_v_col_t{ > > ulint n_v_col; > > > const dict_v_col_t* v_col; > > > const char** v_col_name; >}; > > >struct dict_s_col_t { > > dict_col_t* m_col; > > dict_col_t** base_col; > > ulint num_base; > > ulint s_pos; >}; > > >typedef std::list<dict_s_col_t, ut_allocator<dict_s_col_t> > dict_s_col_list; ># 742 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" >struct dict_field_t{ > dict_col_t* col; > id_name_t name; > unsigned prefix_len:12; > > > > > > > > unsigned fixed_len:10; > > > > > dict_field_t() : col(__null), name(__null), prefix_len(0), fixed_len(0) {} >}; ># 793 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" >extern ulong zip_failure_threshold_pct; > > > >extern ulong zip_pad_max; > > > > >struct zip_pad_info_t { > SysMutex* mutex; > ulint pad; > ulint success; > > ulint failure; > > ulint n_rounds; > > volatile os_once::state_t > mutex_created; > >}; > > > > > > > >const char innobase_index_reserve_name[] = "GEN_CLUST_INDEX"; > > > >struct dict_index_t{ > index_id_t id; > mem_heap_t* heap; > id_name_t name; > const char* table_name; > dict_table_t* table; > unsigned space:32; > > unsigned page:32; > unsigned merge_threshold:6; > > > > > unsigned type:8; > > > > unsigned trx_id_offset:12; > > > > > > > > unsigned n_user_defined_cols:10; > > > > unsigned nulls_equal:1; ># 867 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > unsigned n_uniq:10; > > > unsigned n_def:10; > unsigned n_fields:10; > unsigned n_nullable:10; > unsigned cached:1; > > unsigned to_be_dropped:1; > > > unsigned online_status:2; > > > > > > > unsigned uncommitted:1; ># 897 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > dict_field_t* fields; > st_mysql_ftparser* > parser; > bool has_new_v_col; > > > bool index_fts_syncing; > > > ut_list_node<dict_index_t> > indexes; > > btr_search_t* search_info; > > > row_log_t* online_log; > > > > > > > > ib_uint64_t* stat_n_diff_key_vals; > > > > > > > > ib_uint64_t* stat_n_sample_sizes; > > > > > ib_uint64_t* stat_n_non_null_key_vals; > > > > > > > ulint stat_index_size; > > > ulint stat_n_leaf_pages; > > > bool stats_error_printed; > > > > > > > > ulint stat_defrag_modified_counter; > ulint stat_defrag_n_pages_freed; > > ulint stat_defrag_n_page_split; > > > ulint stat_defrag_data_size_sample[10]; > > > ulint stat_defrag_sample_next_slot; > > > > rtr_ssn_t rtr_ssn; > rtr_info_track_t* > rtr_track; > trx_id_t trx_id; > > > zip_pad_info_t zip_pad; > > rw_lock_t lock; > > > > > > bool is_committed() const > { > do { } while(0); > return(__builtin_expect(!uncommitted, (1))); > } > > > > void set_committed(bool committed) > { > do { } while(0); > do { } while(0); > uncommitted = !committed; > } > > > > > > > inline bool is_readable() const; > > > > bool is_primary() const > { > return 1 == (type & (1 | 8)); > } > > > bool has_virtual() const { return type & 128; } > > > inline bool is_corrupted() const; > > > void detach_columns() > { > if (has_virtual()) { > for (unsigned i = 0; i < n_fields; i++) { > fields[i].col->detach(*this); > } > > n_fields = 0; > } > } > > > class record_size_info_t { > public: > record_size_info_t() > : max_leaf_size(0), shortest_size(0), too_big(false), > first_overrun_field_index((~((size_t) 0))), overrun_size(0) > { > } > > > > void set_too_big(size_t field_index) > { > do { } while(0); > > too_big = true; > if (first_overrun_field_index > field_index) { > first_overrun_field_index = field_index; > overrun_size = shortest_size; > } > } > > > > size_t get_first_overrun_field_index() const > { > do { } while(0); > do { } while(0); > return first_overrun_field_index; > } > > size_t get_overrun_size() const > { > do { } while(0); > return overrun_size; > } > > bool row_is_too_big() const { return too_big; } > > size_t max_leaf_size; > > size_t shortest_size; > > > private: > bool too_big; > > > size_t first_overrun_field_index; > > > > size_t overrun_size; > }; > > > > > inline record_size_info_t record_size_info() const; >}; > > > >inline void dict_col_t::detach(const dict_index_t& index) >{ > if (!is_virtual()) { > return; > } > > if (dict_v_idx_list* v_indexes = reinterpret_cast<const dict_v_col_t*> > (this)->v_indexes) { > for (dict_v_idx_list::iterator i = v_indexes->begin(); > i != v_indexes->end(); i++) { > if (i->index == &index) { > v_indexes->erase(i); > return; > } > } > } >} > > >enum online_index_status { > > ONLINE_INDEX_COMPLETE = 0, > > > ONLINE_INDEX_CREATION, > > > > > > ONLINE_INDEX_ABORTED, > > > > > ONLINE_INDEX_ABORTED_DROPPED >}; > > > >typedef std::set<dict_v_col_t*, std::less<dict_v_col_t*>, > ut_allocator<dict_v_col_t*> > dict_vcol_set; > > > > >struct dict_foreign_t{ > mem_heap_t* heap; > > char* id; > > unsigned n_fields:10; > > > > > > unsigned type:6; > > char* foreign_table_name; > char* foreign_table_name_lookup; > > dict_table_t* foreign_table; > const char** foreign_col_names; > > char* referenced_table_name; > char* referenced_table_name_lookup; > > dict_table_t* referenced_table; > > const char** referenced_col_names; > > dict_index_t* foreign_index; > > > > > dict_index_t* referenced_index; > > dict_vcol_set* v_cols; > >}; > >std::ostream& >operator<< (std::ostream& out, const dict_foreign_t& foreign); > >struct dict_foreign_print { > > dict_foreign_print(std::ostream& out) > : m_out(out) > {} > > void operator()(const dict_foreign_t* foreign) { > m_out << *foreign; > } >private: > std::ostream& m_out; >}; > > > > > >struct dict_foreign_compare { > > bool operator()( > const dict_foreign_t* lhs, > const dict_foreign_t* rhs) const > { > return(ut_strcmp(lhs->id, rhs->id) < 0); > } >}; > > > >struct dict_foreign_with_index { > > dict_foreign_with_index(const dict_index_t* index) > : m_index(index) > {} > > bool operator()(const dict_foreign_t* foreign) const > { > return(foreign->referenced_index == m_index); > } > > const dict_index_t* m_index; >}; > > > > >struct dict_foreign_with_foreign_index { > > dict_foreign_with_foreign_index(const dict_index_t* index) > : m_index(index) > {} > > bool operator()(const dict_foreign_t* foreign) const > { > return(foreign->foreign_index == m_index); > } > > const dict_index_t* m_index; >}; > > > > > >struct dict_foreign_different_tables { > > bool operator()(const dict_foreign_t* foreign) const > { > return(foreign->foreign_table != foreign->referenced_table); > } >}; > > > > > >struct dict_foreign_matches_id { > > dict_foreign_matches_id(const char* id) > : m_id(id) > {} > > bool operator()(const dict_foreign_t* foreign) const > { > if (0 == innobase_strcasecmp(foreign->id, m_id)) { > return(true); > } > if (const char* pos = strchr(foreign->id, '/')) { > if (0 == innobase_strcasecmp(m_id, pos + 1)) { > return(true); > } > } > return(false); > } > > const char* m_id; >}; > >typedef std::set< > dict_foreign_t*, > dict_foreign_compare, > ut_allocator<dict_foreign_t*> > dict_foreign_set; > >std::ostream& >operator<< (std::ostream& out, const dict_foreign_set& fk_set); > > > > >struct dict_foreign_not_exists { > dict_foreign_not_exists(const dict_foreign_set& obj_) > : m_foreigns(obj_) > {} > > > bool operator()(dict_foreign_t* const & foreign) const { > return(m_foreigns.find(foreign) == m_foreigns.end()); > } >private: > const dict_foreign_set& m_foreigns; >}; > > > > >bool >dict_foreign_set_validate( > const dict_foreign_set& fk_set); > > > > > >bool >dict_foreign_set_validate( > const dict_table_t& table); > > > >inline >void >dict_foreign_free( > > dict_foreign_t* foreign) >{ > if (foreign->v_cols != __null) { > ::delete foreign->v_cols; > } > > mem_heap_free(foreign->heap); >} > > > > > >struct dict_foreign_set_free { > > dict_foreign_set_free(const dict_foreign_set& foreign_set) > : m_foreign_set(foreign_set) > {} > > ~dict_foreign_set_free() > { > std::for_each(m_foreign_set.begin(), > m_foreign_set.end(), > dict_foreign_free); > } > > const dict_foreign_set& m_foreign_set; >}; ># 1364 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" >std::ostream& >operator<<( > std::ostream& s, > const id_name_t& id_name); > > > > > >std::ostream& >operator<<( > std::ostream& s, > const table_name_t& table_name); > > > > > >typedef ut_list_base<ib_lock_t, ut_list_node<ib_lock_t> lock_table_t::*> > table_lock_list_t; > > >struct mysql_row_templ_t; > > > >struct dict_vcol_templ_t { > > ulint n_col; > > > ulint n_v_col; > > > mysql_row_templ_t** vtempl; > > > std::string db_name; > > > std::string tb_name; > > > ulint rec_len; > > > byte* default_rec; > > > TABLE* mysql_table; > > > uint64_t mysql_table_query_id; > > dict_vcol_templ_t() : vtempl(0), mysql_table_query_id(~0ULL) {} >}; > > > >typedef enum { > DICT_FRM_CONSISTENT = 0, > DICT_FRM_NO_PK = 1, > > > DICT_NO_PK_FRM_HAS = 2, > > DICT_FRM_INCONSISTENT_KEYS = 3 >} dict_frm_t; > > > >struct dict_table_t { > > > > inline int32 get_ref_count() > { > return __atomic_load_n((&n_ref_count), (0)) > ; > } > > > inline void acquire(); > > > > inline bool release(); > > > bool is_temporary() const > { > return flags2 & 1U; > } > > > > > > > bool is_readable() const > { > return(__builtin_expect(!file_unreadable, (1))); > } > > > > static bool is_temporary_name(const char* name) > { > return strstr(name, "/" "#sql") != __null; > } > > > size_t get_overflow_field_local_len() const; > > > table_id_t id; > > hash_node_t id_hash; > > table_name_t name; > > hash_node_t name_hash; > > > mem_heap_t* heap; > > > char* data_dir_path; > > > uint32_t space; ># 1504 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > unsigned flags:(1 + 4 + 1 + 1 + 1 + 4); ># 1515 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > unsigned flags2:7; > > > > > > > unsigned skip_alter_undo:1; > > > > unsigned file_unreadable:1; > > > unsigned cached:1; > > > > > > > unsigned to_be_dropped:1; > > > unsigned n_def:10; > > > unsigned n_cols:10; > > > unsigned n_t_cols:10; > > > unsigned n_t_def:10; > > > unsigned n_v_def:10; > > > unsigned n_v_cols:10; > > > > > unsigned persistent_autoinc:10; > > > > unsigned can_be_evicted:1; > > > unsigned corrupted:1; > > > > unsigned drop_aborted:1; > > > dict_col_t* cols; > > > dict_v_col_t* v_cols; > > > > > > > dict_s_col_list* s_cols; > > > > > > const char* col_names; > > > const char* v_col_names; > > bool is_system_db; > > > > dict_frm_t dict_frm_mismatch; > > > > > dict_index_t* fts_doc_id_index; > > > ut_list_base<dict_index_t, ut_list_node<dict_index_t> dict_index_t::*> indexes; > > > > ut_list_base<dict_foreign_t, ut_list_node<dict_foreign_t> dict_foreign_t::*> foreign_list; > > > ut_list_base<dict_foreign_t, ut_list_node<dict_foreign_t> dict_foreign_t::*> referenced_list; > > > ut_list_node<dict_table_t> table_LRU; > > > > > unsigned fk_max_recusive_level:8; > > > > > ulint n_foreign_key_checks_running; > > > > > > trx_id_t query_cache_inv_trx_id; > > > > > trx_id_t def_trx_id; > > > > dict_foreign_set foreign_set; > > > dict_foreign_set referenced_set; > > > > > volatile os_once::state_t stats_latch_created; ># 1662 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > rw_lock_t* stats_latch; > > > > unsigned stat_initialized:1; > > > time_t stats_last_recalc; ># 1686 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > ib_uint32_t stat_persistent; ># 1704 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > ib_uint32_t stats_auto_recalc; > > > > > ulint stats_sample_pages; > > > > ib_uint64_t stat_n_rows; > > > ulint stat_clustered_index_size; > > > ulint stat_sum_of_other_index_sizes; > > > > > > > > ib_uint64_t stat_modified_counter; ># 1761 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > byte stats_bg_flag; > > bool stats_error_printed; ># 1784 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > ib_lock_t* autoinc_lock; > > > volatile os_once::state_t autoinc_mutex_created; > > > ib_mutex_t* autoinc_mutex; > > > ib_uint64_t autoinc; > > > > > > > > ulong n_waiting_or_granted_auto_inc_locks; > > > > const trx_t* autoinc_trx; > > > > > fts_t* fts; > > > > > ib_quiesce_t quiesce; > > > > > ulint n_rec_locks; > >private: > > > > int32 n_ref_count; > >public: > > table_lock_list_t locks; > > > time_t update_time; ># 1844 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" > dict_vcol_templ_t* vc_templ; >}; > >inline bool table_name_t::is_temporary() const >{ > return dict_table_t::is_temporary_name(m_name); >} > >inline bool dict_index_t::is_readable() const >{ > return(__builtin_expect(!table->file_unreadable, (1))); >} > >inline bool dict_index_t::is_corrupted() const >{ > return __builtin_expect(online_status >= ONLINE_INDEX_ABORTED || (type & 16) || (table && table->corrupted), (0)) > > ; >} > > > >void >lock_table_lock_list_init( > > table_lock_list_t* locks); > > > >struct dict_foreign_add_to_referenced_table { > void operator()(dict_foreign_t* foreign) const > { > if (dict_table_t* table = foreign->referenced_table) { > std::pair<dict_foreign_set::iterator, bool> ret > = table->referenced_set.insert(foreign); > do { if (__builtin_expect(!(ulint) (ret.second), (0))) { ut_dbg_assertion_failed("ret.second", "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h", 1879); } } while (0); > } > } >}; > > > > > >inline >void >dict_table_autoinc_destroy( > dict_table_t* table) >{ > if (table->autoinc_mutex_created == os_once::DONE > && table->autoinc_mutex != __null) { > mutex_destroy(table->autoinc_mutex); > ::delete table->autoinc_mutex; > } >} > > > > > >inline >void >dict_table_autoinc_create_lazy( > dict_table_t* table) >{ > table->autoinc_mutex = __null; > table->autoinc_mutex_created = os_once::NEVER_DONE; >} > > > > > >inline >void >dict_index_zip_pad_mutex_create_lazy( > dict_index_t* index) >{ > index->zip_pad.mutex = __null; > index->zip_pad.mutex_created = os_once::NEVER_DONE; >} > > > > > >inline >void >dict_index_zip_pad_mutex_destroy( > dict_index_t* index) >{ > if (index->zip_pad.mutex_created == os_once::DONE > && index->zip_pad.mutex != __null) { > mutex_destroy(index->zip_pad.mutex); > ::delete index->zip_pad.mutex; > } >} > > > >inline >void >dict_index_zip_pad_unlock( > dict_index_t* index) >{ > (index->zip_pad.mutex)->exit(); >} ># 1968 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" >inline >spatial_status_t >dict_col_get_spatial_status( > const dict_col_t* col) >{ > spatial_status_t spatial_status = SPATIAL_NONE; > > > if (!col->ord_part) { > return(spatial_status); > } > > if (((col->mtype) == 14)) { > if (col->max_prefix == 0) { > spatial_status = SPATIAL_ONLY; > } else { > > > spatial_status = SPATIAL_MIXED; > } > } > > return(spatial_status); >} > > >inline void dict_stats_empty_defrag_summary(dict_index_t* index) >{ > index->stat_defrag_n_pages_freed = 0; >} > > >inline void dict_stats_empty_defrag_stats(dict_index_t* index) >{ > index->stat_defrag_modified_counter = 0; > index->stat_defrag_n_page_split = 0; >} > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.ic" 1 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.ic" 2 > > > > > >static inline >void >dict_mem_fill_index_struct( > > dict_index_t* index, > mem_heap_t* heap, > const char* table_name, > const char* index_name, > ulint space, > > > ulint type, > > ulint n_fields) >{ > > if (heap) { > index->heap = heap; > index->name = mem_heap_strdup(heap, index_name); > index->fields = (dict_field_t*) mem_heap_alloc( > heap, 1 + n_fields * sizeof(dict_field_t)); > } else { > index->name = index_name; > index->heap = __null; > index->fields = __null; > } > > > > index->type = unsigned(type); > index->space = (unsigned int) space; > index->page = 0xFFFFFFFF; > index->merge_threshold = 50; > index->table_name = table_name; > index->n_fields = (unsigned int) n_fields; > > > index->nulls_equal = false; > > > > > > ; >} ># 2007 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0mem.h" 2 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.h" 1 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.h" >typedef byte flst_base_node_t; >typedef byte flst_node_t; ># 52 "/buildbot/mariadb-10.2.31/storage/innobase/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_remove( > > flst_base_node_t* base, > flst_node_t* node2, > mtr_t* mtr); > > > >static inline >ulint >flst_get_len( > const flst_base_node_t* base); > > > >static inline >fil_addr_t >flst_get_first( > > const flst_base_node_t* base, > mtr_t* mtr); > > > >static inline >fil_addr_t >flst_get_last( > > const flst_base_node_t* base, > mtr_t* mtr); > > > >static inline >fil_addr_t >flst_get_next_addr( > > const flst_node_t* node, > mtr_t* mtr); > > > >static inline >fil_addr_t >flst_get_prev_addr( > > const 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( > > const fil_faddr_t* faddr, > mtr_t* mtr); > > > >ulint >flst_validate( > > const flst_base_node_t* base, > mtr_t* mtr1); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic" 1 ># 26 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.h" 1 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.h" >static inline >byte* >fut_get_ptr( > ulint space, > const page_size_t& page_size, > fil_addr_t addr, > rw_lock_type_t rw_latch, > mtr_t* mtr, > buf_block_t** ptr_block = __null) > __attribute__((warn_unused_result)); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.ic" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.ic" >static inline >byte* >fut_get_ptr( > ulint space, > const page_size_t& page_size, > fil_addr_t addr, > rw_lock_type_t rw_latch, > mtr_t* mtr, > buf_block_t** ptr_block) >{ > buf_block_t* block; > byte* ptr = __null; > > do { } while(0); > do { } while(0) > > ; > > block = buf_page_get_gen(page_id_t(space, addr.page), page_size, rw_latch, __null, 10, > "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.ic" ># 56 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.ic" > , > 57 ># 56 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.ic" > , mtr, __null) > ; > > ptr = (block)->frame + addr.boffset; > > ; > > if (ptr_block != __null) { > *ptr_block = block; > } > > return(ptr); >} ># 54 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0fut.h" 2 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.h" >struct dict_index_t; > > > > >void >mlog_write_ulint( > > byte* ptr, > ulint val, > mlog_id_t type, > mtr_t* mtr); > > > > >void >mlog_write_ull( > > byte* ptr, > ib_uint64_t val, > mtr_t* mtr); > > > >void >mlog_write_string( > > byte* ptr, > const byte* str, > ulint len, > mtr_t* mtr); > > > >void >mlog_log_string( > > byte* ptr, > ulint len, > mtr_t* mtr); > > > >void >mlog_write_initial_log_record( > > const byte* ptr, > > > mlog_id_t type, > mtr_t* mtr); > > >static inline >void >mlog_catenate_ulint( > > mtr_buf_t* dyn_buf, > ulint val, > mlog_id_t type); > > >static inline >void >mlog_catenate_ulint( > > mtr_t* mtr, > ulint val, > mlog_id_t type); > > >void >mlog_catenate_string( > > mtr_t* mtr, > const byte* str, > ulint len); > > >static inline >void >mlog_catenate_ulint_compressed( > > mtr_t* mtr, > ulint val); > > >static inline >void >mlog_catenate_ull_compressed( > > mtr_t* mtr, > ib_uint64_t val); > > > >static inline >byte* >mlog_open( > > mtr_t* mtr, > ulint size); > > > >static inline >void >mlog_close( > > mtr_t* mtr, > byte* ptr); ># 154 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.h" >static inline >byte* >mlog_write_initial_log_record_low( > mlog_id_t type, > ulint space_id, > ulint page_no, > byte* log_ptr, > mtr_t* mtr); > > > > > > >static inline >byte* >mlog_write_initial_log_record_fast( > > const byte* ptr, > > > mlog_id_t type, > byte* log_ptr, > > mtr_t* mtr); > > > >byte* >mlog_parse_initial_log_record( > > const byte* ptr, > const byte* end_ptr, > mlog_id_t* type, > ulint* space, > ulint* page_no); > > > >byte* >mlog_parse_nbytes( > > mlog_id_t type, > const byte* ptr, > const byte* end_ptr, > byte* page, > > void* page_zip); > > > >byte* >mlog_parse_string( > > byte* ptr, > byte* end_ptr, > byte* page, > void* page_zip); > > > > > > > >byte* >mlog_open_and_write_index( > > mtr_t* mtr, > const byte* rec, > const dict_index_t* index, > mlog_id_t type, > ulint size); > > > > > > >byte* >mlog_parse_index( > > byte* ptr, > const byte* end_ptr, > ulint comp, > dict_index_t** index); > > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0dblwr.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0dblwr.h" >extern buf_dblwr_t* buf_dblwr; > >extern ulint buf_dblwr_being_created; > > > > > > >__attribute__((warn_unused_result)) >bool >buf_dblwr_create(); ># 58 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0dblwr.h" >dberr_t >buf_dblwr_init_or_load_pages( > pfs_os_file_t file, > const char* path); > > >void >buf_dblwr_process(); > > > >void >buf_dblwr_free(); > > > >void >buf_dblwr_update( > > const buf_page_t* bpage, > buf_flush_t flush_type); > > > > >ulint >buf_dblwr_page_inside( > > ulint page_no); > > > > >void >buf_dblwr_add_to_batch( > > buf_page_t* bpage); > > > > >void >buf_dblwr_sync_datafiles(); > > > > > > > >void >buf_dblwr_flush_buffered_writes(); ># 119 "/buildbot/mariadb-10.2.31/storage/innobase/include/buf0dblwr.h" >void >buf_dblwr_write_single_page( > > buf_page_t* bpage, > bool sync); > > >struct buf_dblwr_t{ > ib_mutex_t mutex; > > ulint block1; > > ulint block2; > ulint first_free; > > ulint b_reserved; > > os_event_t b_event; > > > > ulint s_reserved; > > os_event_t s_event; > > bool* in_use; > > > bool batch_running; > > > byte* write_buf; > > > > byte* write_buf_unaligned; > > buf_page_t** buf_block_arr; > > >}; ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.ic" 2 > > > > > > > >static inline >byte* >mlog_open( > > mtr_t* mtr, > ulint size) > >{ > mtr->set_modified(); > > if ((mtr)->get_log_mode() == MTR_LOG_NONE > || (mtr)->get_log_mode() == MTR_LOG_NO_REDO) { > > return(__null); > } > > return(mtr->get_log()->open(size)); >} > > > >static inline >void >mlog_close( > > mtr_t* mtr, > byte* ptr) >{ > do { } while(0); > do { } while(0); > > mtr->get_log()->close(ptr); >} > > > >static inline >void >mlog_catenate_ulint( > > mtr_buf_t* mtr_buf, > ulint val, > mlog_id_t type) >{ > do { typedef char compile_time_assert[(MLOG_1BYTE == 1) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(MLOG_2BYTES == 2) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(MLOG_4BYTES == 4) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(MLOG_8BYTES == 8) ? 1 : -1] __attribute__((unused)); } while(0); > > byte* ptr = mtr_buf->push<byte*>(type); > > switch (type) { > case MLOG_4BYTES: > mach_write_to_4(ptr, val); > break; > case MLOG_2BYTES: > mach_write_to_2(ptr, val); > break; > case MLOG_1BYTE: > mach_write_to_1(ptr, val); > break; > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.ic", 97); > } >} > > > >static inline >void >mlog_catenate_ulint( > > mtr_t* mtr, > ulint val, > mlog_id_t type) >{ > if ((mtr)->get_log_mode() == MTR_LOG_NONE > || (mtr)->get_log_mode() == MTR_LOG_NO_REDO) { > > return; > } > > mlog_catenate_ulint(mtr->get_log(), val, type); >} > > > >static inline >void >mlog_catenate_ulint_compressed( > > mtr_t* mtr, > ulint val) >{ > byte* log_ptr; > > log_ptr = mlog_open(mtr, 10); > > > if (log_ptr == __null) { > > return; > } > > log_ptr += mach_write_compressed(log_ptr, val); > > mlog_close(mtr, log_ptr); >} > > > >static inline >void >mlog_catenate_ull_compressed( > > mtr_t* mtr, > ib_uint64_t val) >{ > byte* log_ptr; > > log_ptr = mlog_open(mtr, 15); > > > if (log_ptr == __null) { > > return; > } > > log_ptr += mach_u64_write_compressed(log_ptr, val); > > mlog_close(mtr, log_ptr); >} ># 175 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.ic" >static inline >byte* >mlog_write_initial_log_record_low( > mlog_id_t type, > ulint space_id, > ulint page_no, > byte* log_ptr, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0) > > > > > > > ; > > 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->added_rec(); > return(log_ptr); >} > > > > > > >static inline >byte* >mlog_write_initial_log_record_fast( > > const byte* ptr, > > > mlog_id_t type, > byte* log_ptr, > > mtr_t* mtr) >{ > const byte* page; > ulint space; > ulint offset; > > do { } while(0); > ; > > page = (const byte*) ut_align_down(ptr, ((ulint) srv_page_size)); > space = mach_read_from_4(page + 34); > offset = mach_read_from_4(page + 4); > > > > > > > if (space == TRX_SYS_SPACE > && offset >= ((((ulint) srv_page_size) <= (16384) ? (1048576 / ((ulint) srv_page_size)) : ((((ulint) srv_page_size) <= (32768)) ? (2097152 / ((ulint) srv_page_size)) : (4194304 / ((ulint) srv_page_size))))) && offset < 3 * ((((ulint) srv_page_size) <= (16384) ? (1048576 / ((ulint) srv_page_size)) : ((((ulint) srv_page_size) <= (32768)) ? (2097152 / ((ulint) srv_page_size)) : (4194304 / ((ulint) srv_page_size)))))) { > do { } while(0); > > > > return(log_ptr); > } > > return(mlog_write_initial_log_record_low(type, space, offset, > log_ptr, mtr)); >} ># 246 "/buildbot/mariadb-10.2.31/storage/innobase/include/mtr0log.h" 2 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic" 2 ># 48 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic" >static inline >void >flst_write_addr( > > fil_faddr_t* faddr, > fil_addr_t addr, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0) > > ; > do { if (__builtin_expect(!(ulint) (addr.page == 0xFFFFFFFF || addr.boffset >= 38U), (0))) { ut_dbg_assertion_failed("addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA", "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic", 60); } } while (0); > do { if (__builtin_expect(!(ulint) (ut_align_offset(faddr, ((ulint) srv_page_size)) >= 38U), (0))) { ut_dbg_assertion_failed("ut_align_offset(faddr, UNIV_PAGE_SIZE) >= FIL_PAGE_DATA", "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic", 61); } } while (0); > > mlog_write_ulint(faddr + 0, addr.page, MLOG_4BYTES, mtr); > mlog_write_ulint(faddr + 4, addr.boffset, > MLOG_2BYTES, mtr); >} > > > > >static inline >fil_addr_t >flst_read_addr( > > const fil_faddr_t* faddr, > mtr_t* mtr) >{ > fil_addr_t addr; > > do { } while(0); > > addr.page = (mtr)->read_ulint((faddr + 0), (MLOG_4BYTES)); > addr.boffset = (mtr)->read_ulint((faddr + 4), (MLOG_2BYTES)) > ; > do { if (__builtin_expect(!(ulint) (addr.page == 0xFFFFFFFF || addr.boffset >= 38U), (0))) { ut_dbg_assertion_failed("addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA", "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic", 85); } } while (0); > do { if (__builtin_expect(!(ulint) (ut_align_offset(faddr, ((ulint) srv_page_size)) >= 38U), (0))) { ut_dbg_assertion_failed("ut_align_offset(faddr, UNIV_PAGE_SIZE) >= FIL_PAGE_DATA", "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.ic", 86); } } while (0); > return(addr); >} > > > >static inline >void >flst_init( > > flst_base_node_t* base, > mtr_t* mtr) >{ > do { } while(0) > > ; > > mlog_write_ulint(base + 0, 0, MLOG_4BYTES, 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( > const flst_base_node_t* base) >{ > return(mach_read_from_4(base + 0)); >} > > > > >static inline >fil_addr_t >flst_get_first( > > const flst_base_node_t* base, > mtr_t* mtr) >{ > return(flst_read_addr(base + 4, mtr)); >} > > > > >static inline >fil_addr_t >flst_get_last( > > const 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( > > const flst_node_t* node, > mtr_t* mtr) >{ > return(flst_read_addr(node + 6, mtr)); >} > > > > >static inline >fil_addr_t >flst_get_prev_addr( > > const flst_node_t* node, > mtr_t* mtr) >{ > return(flst_read_addr(node + 0, mtr)); >} ># 153 "/buildbot/mariadb-10.2.31/storage/innobase/include/fut0lst.h" 2 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" 2 ># 98 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >typedef byte fsp_header_t; >typedef byte xdes_t; ># 167 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >typedef byte fseg_inode_t; ># 295 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >void >fsp_init(void); ># 305 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >ulint >fsp_header_get_tablespace_size(void); ># 321 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >ulint >fsp_get_pages_to_extend_ibd( > const page_size_t& page_size, > ulint size); > > > > >static inline >ulint >fsp_get_extent_size_in_pages(const page_size_t& page_size) >{ > return(((((ulint) srv_page_size) <= (16384) ? (1048576 / ((ulint) srv_page_size)) : ((((ulint) srv_page_size) <= (32768)) ? (2097152 / ((ulint) srv_page_size)) : (4194304 / ((ulint) srv_page_size))))) * ((ulint) srv_page_size) / page_size.physical()); >} > > > > >ulint >fsp_header_get_space_id( > > const ib_page_t* page); > > > > > >inline >ulint >fsp_header_get_field(const ib_page_t* page, ulint field) >{ > return(mach_read_from_4(38U + field + page)); >} > > > > >inline >ulint >fsp_header_get_flags(const ib_page_t* page) >{ > return(fsp_header_get_field(page, 16)); >} > > > > >inline __attribute__((pure, warn_unused_result)) >ulint >fsp_header_get_encryption_offset(const page_size_t& ps) >{ > return (38U + (32 + 5 * (4 + 2 * 6))) + (((2 * 6) + 12) + (((((((ulint) srv_page_size) <= (16384) ? (1048576 / ((ulint) srv_page_size)) : ((((ulint) srv_page_size) <= (32768)) ? (2097152 / ((ulint) srv_page_size)) : (4194304 / ((ulint) srv_page_size))))) * 2) + 7) / 8)) * ps.physical() / ((((ulint) srv_page_size) <= (16384) ? (1048576 / ((ulint) srv_page_size)) : ((((ulint) srv_page_size) <= (32768)) ? (2097152 / ((ulint) srv_page_size)) : (4194304 / ((ulint) srv_page_size))))); >} > > > > > >bool >fsp_header_check_encryption_key( > ulint fsp_flags, > ib_page_t* page); > > > > > >void >fsp_header_init_fields( > > ib_page_t* page, > ulint space_id, > ulint flags); > > > > > >void >fsp_header_init(ulint space_id, ulint size, mtr_t* mtr); > > > >void >fsp_header_inc_size( > > ulint space_id, > ulint size_inc, > mtr_t* mtr); > > > > >buf_block_t* >fseg_create( > > ulint space_id, > ulint page, > > > > ulint byte_offset, > > mtr_t* mtr); > > > > >buf_block_t* >fseg_create_general( > > ulint space_id, > 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); ># 480 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >buf_block_t* >fseg_alloc_free_page_general( > > fseg_header_t* seg_header, > ulint hint, > > byte direction, > > > > > ulint has_done_reservation, > > > > > mtr_t* mtr, > mtr_t* init_mtr) > > > > __attribute__((warn_unused_result, nonnull)); ># 541 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >bool >fsp_reserve_free_extents( > ulint* n_reserved, > ulint space_id, > ulint n_ext, > fsp_reserve_t alloc_type, > mtr_t* mtr, > ulint n_pages = 2); > > > > > > >uintmax_t >fsp_get_available_space_in_free_extents( > ulint space_id); > > > > > > >uintmax_t >fsp_get_available_space_in_free_extents( > const fil_space_t* space); > > > >void >fseg_free_page_func( > fseg_header_t* seg_header, > ulint space_id, > ulint page, > > bool ahi, > > > mtr_t* mtr); ># 591 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >bool >fseg_page_is_free(fil_space_t* space, unsigned page) > __attribute__((nonnull, warn_unused_result)); > > > > > > >ulint >fseg_free_step_func( > fseg_header_t* header, > > > > > bool ahi, > > > mtr_t* mtr) > __attribute__((warn_unused_result)); ># 621 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >ulint >fseg_free_step_not_header_func( > fseg_header_t* header, > > > bool ahi, > > > mtr_t* mtr) > __attribute__((warn_unused_result)); ># 646 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >__attribute__((cold)) >void fil_block_reset_type(const buf_block_t& block, ulint type, mtr_t* mtr); > > > > >inline uint16_t fil_page_get_type(const byte* page) >{ > return mach_read_from_2(page + 24); >} ># 666 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >inline void >fil_block_check_type( > const buf_block_t& block, > ulint type, > mtr_t* mtr) >{ > if (__builtin_expect(type != fil_page_get_type(block.frame), (0))) { > fil_block_reset_type(block, type, mtr); > } >} > > > > > >static inline >ulint >fsp_descr_page( > const page_id_t page_id, > const page_size_t& page_size); > > > >void fsp_apply_init_file_page(buf_block_t* block); > > > > > >inline void fsp_init_file_page( > > > > buf_block_t* block, mtr_t* mtr) >{ > ; > do { } while(0); > fsp_apply_init_file_page(block); > mlog_write_initial_log_record(block->frame, MLOG_INIT_FILE_PAGE2, mtr); >} ># 725 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" >__attribute__((warn_unused_result, const)) >static inline >ulint >fsp_flags_convert_from_101(ulint flags) >{ > do { } while(0) > ; > if (flags == 0) { > return(flags); > } > > if (flags >> 18) { > > > > return(((ulint)(-1))); > } > > if ((flags & (((~(~0U << 1)) << 0) | ((~(~0U << 1)) << ((0 + 1) + 4)))) > == ((~(~0U << 1)) << ((0 + 1) + 4))) { > > > > > return(((ulint)(-1))); > } ># 778 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" > const ulint level = ((flags & (15U << ((((0 + 1) + 4) + 1) + 1))) >> ((((0 + 1) + 4) + 1) + 1)) > ; > if (((flags & (1U << (((0 + 1) + 4) + 1))) >> (((0 + 1) + 4) + 1)) != (level != 0) > || level > 9) { > > > return(((ulint)(-1))); > } > if (!(~flags & (3U << (((((0 + 1) + 4) + 1) + 1) + 4)))) { > > > > return(((ulint)(-1))); > } ># 805 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" > const ulint ssize = ((flags & (15U << ((((((0 + 1) + 4) + 1) + 1) + 4) + 2))) >> ((((((0 + 1) + 4) + 1) + 1) + 4) + 2)); > if (ssize == 1 || ssize == 2 || ssize == 5 || ssize & 8) { > > > return(((ulint)(-1))); > } > const ulint zssize = ((flags & ((~(~0U << 4)) << (0 + 1))) >> (0 + 1)); > if (zssize == 0) { > > } else if (zssize > (ssize ? ssize : 5)) { > > return(((ulint)(-1))); > } else if (~flags & (((~(~0U << 1)) << 0) > | ((~(~0U << 1)) << ((0 + 1) + 4)))) { > > > return(((ulint)(-1))); > } > > flags = ((flags & 0x3f) | ssize << (((0 + 1) + 4) + 1) > | ((flags & (1U << (((0 + 1) + 4) + 1))) >> (((0 + 1) + 4) + 1)) > << (((((0 + 1) + 4) + 1) + 4) + 6)); > do { } while(0); > return(flags); >} > > > > > >__attribute__((warn_unused_result)) >static inline >bool >fsp_flags_match(ulint expected, ulint actual) >{ > expected &= ~(~0U << 27); > do { } while(0); > > if (actual == expected) { > return(true); > } > > actual = fsp_flags_convert_from_101(actual); > return(actual == expected); >} > > > > > >static inline >ulint >xdes_calc_descriptor_index( > const page_size_t& page_size, > ulint offset); > > > > >static inline >ulint >xdes_get_bit( > > const xdes_t* descr, > ulint bit, > ulint offset); > > > > > > >static inline >ulint >xdes_calc_descriptor_page( > const page_size_t& page_size, > ulint offset); > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.ic" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.ic" >static inline >ulint >fsp_descr_page( > const page_id_t page_id, > const page_size_t& page_size) >{ > return((page_id.page_no() & (page_size.physical() - 1)) > == 0); >} > > > > > >static inline >ulint >xdes_calc_descriptor_index( > const page_size_t& page_size, > ulint offset) >{ > return(ut_2pow_remainder(offset, page_size.physical()) > / ((((ulint) srv_page_size) <= (16384) ? (1048576 / ((ulint) srv_page_size)) : ((((ulint) srv_page_size) <= (32768)) ? (2097152 / ((ulint) srv_page_size)) : (4194304 / ((ulint) srv_page_size)))))); >} > > > > > >static inline >ulint >xdes_get_bit( > > const xdes_t* descr, > ulint bit, > ulint offset) > >{ > do { } while(0); > do { } while(0); > > ulint index = bit + 2 * offset; > > ulint bit_index = index % 8; > ulint byte_index = index / 8; > > return(ut_bit_get_nth( > mach_read_ulint(descr + ((2 * 6) + 12) + byte_index, > MLOG_1BYTE), > bit_index)); >} > > > > > > >static inline >ulint >xdes_calc_descriptor_page( > const page_size_t& page_size, > ulint offset) >{ ># 108 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.ic" > do { } while(0) > > ; > do { } while(0) > > ; ># 122 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.ic" > return(ut_2pow_round(offset, page_size.physical())); >} ># 886 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0fsp.h" 2 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" 2 ># 1 "/usr/include/c++/4.8.2/deque" 1 3 ># 58 "/usr/include/c++/4.8.2/deque" 3 ># 59 "/usr/include/c++/4.8.2/deque" 3 > > > > > ># 1 "/usr/include/c++/4.8.2/bits/stl_deque.h" 1 3 ># 66 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 88 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > inline size_t > __deque_buf_size(size_t __size) > { return (__size < 512 > ? size_t(512 / __size) : size_t(1)); } ># 105 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Tp, typename _Ref, typename _Ptr> > struct _Deque_iterator > { > typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; > typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator; > > static size_t _S_buffer_size() > { return __deque_buf_size(sizeof(_Tp)); } > > typedef std::random_access_iterator_tag iterator_category; > typedef _Tp value_type; > typedef _Ptr pointer; > typedef _Ref reference; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Tp** _Map_pointer; > typedef _Deque_iterator _Self; > > _Tp* _M_cur; > _Tp* _M_first; > _Tp* _M_last; > _Map_pointer _M_node; > > _Deque_iterator(_Tp* __x, _Map_pointer __y) > : _M_cur(__x), _M_first(*__y), > _M_last(*__y + _S_buffer_size()), _M_node(__y) { } > > _Deque_iterator() > : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) { } > > _Deque_iterator(const iterator& __x) > : _M_cur(__x._M_cur), _M_first(__x._M_first), > _M_last(__x._M_last), _M_node(__x._M_node) { } > > reference > operator*() const > { return *_M_cur; } > > pointer > operator->() const > { return _M_cur; } > > _Self& > operator++() > { > ++_M_cur; > if (_M_cur == _M_last) > { > _M_set_node(_M_node + 1); > _M_cur = _M_first; > } > return *this; > } > > _Self > operator++(int) > { > _Self __tmp = *this; > ++*this; > return __tmp; > } > > _Self& > operator--() > { > if (_M_cur == _M_first) > { > _M_set_node(_M_node - 1); > _M_cur = _M_last; > } > --_M_cur; > return *this; > } > > _Self > operator--(int) > { > _Self __tmp = *this; > --*this; > return __tmp; > } > > _Self& > operator+=(difference_type __n) > { > const difference_type __offset = __n + (_M_cur - _M_first); > if (__offset >= 0 && __offset < difference_type(_S_buffer_size())) > _M_cur += __n; > else > { > const difference_type __node_offset = > __offset > 0 ? __offset / difference_type(_S_buffer_size()) > : -difference_type((-__offset - 1) > / _S_buffer_size()) - 1; > _M_set_node(_M_node + __node_offset); > _M_cur = _M_first + (__offset - __node_offset > * difference_type(_S_buffer_size())); > } > return *this; > } > > _Self > operator+(difference_type __n) const > { > _Self __tmp = *this; > return __tmp += __n; > } > > _Self& > operator-=(difference_type __n) > { return *this += -__n; } > > _Self > operator-(difference_type __n) const > { > _Self __tmp = *this; > return __tmp -= __n; > } > > reference > operator[](difference_type __n) const > { return *(*this + __n); } > > > > > > > void > _M_set_node(_Map_pointer __new_node) > { > _M_node = __new_node; > _M_first = *__new_node; > _M_last = _M_first + difference_type(_S_buffer_size()); > } > }; > > > > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return __x._M_cur == __y._M_cur; } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return __x._M_cur == __y._M_cur; } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return !(__x == __y); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return !(__x == __y); } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) > : (__x._M_node < __y._M_node); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) > : (__x._M_node < __y._M_node); } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return __y < __x; } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return __y < __x; } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return !(__y < __x); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return !(__y < __x); } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline bool > operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { return !(__x < __y); } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline bool > operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { return !(__x < __y); } > > > > > > template<typename _Tp, typename _Ref, typename _Ptr> > inline typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type > operator-(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, > const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) > { > return typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type > (_Deque_iterator<_Tp, _Ref, _Ptr>::_S_buffer_size()) > * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) > + (__y._M_last - __y._M_cur); > } > > template<typename _Tp, typename _RefL, typename _PtrL, > typename _RefR, typename _PtrR> > inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type > operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, > const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) > { > return typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type > (_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size()) > * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) > + (__y._M_last - __y._M_cur); > } > > template<typename _Tp, typename _Ref, typename _Ptr> > inline _Deque_iterator<_Tp, _Ref, _Ptr> > operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x) > { return __x + __n; } > > template<typename _Tp> > void > fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>&, > const _Deque_iterator<_Tp, _Tp&, _Tp*>&, const _Tp&); > > template<typename _Tp> > _Deque_iterator<_Tp, _Tp&, _Tp*> > copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, > _Deque_iterator<_Tp, const _Tp&, const _Tp*>, > _Deque_iterator<_Tp, _Tp&, _Tp*>); > > template<typename _Tp> > inline _Deque_iterator<_Tp, _Tp&, _Tp*> > copy(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, > _Deque_iterator<_Tp, _Tp&, _Tp*> __last, > _Deque_iterator<_Tp, _Tp&, _Tp*> __result) > { return std::copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first), > _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last), > __result); } > > template<typename _Tp> > _Deque_iterator<_Tp, _Tp&, _Tp*> > copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, > _Deque_iterator<_Tp, const _Tp&, const _Tp*>, > _Deque_iterator<_Tp, _Tp&, _Tp*>); > > template<typename _Tp> > inline _Deque_iterator<_Tp, _Tp&, _Tp*> > copy_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, > _Deque_iterator<_Tp, _Tp&, _Tp*> __last, > _Deque_iterator<_Tp, _Tp&, _Tp*> __result) > { return std::copy_backward(_Deque_iterator<_Tp, > const _Tp&, const _Tp*>(__first), > _Deque_iterator<_Tp, > const _Tp&, const _Tp*>(__last), > __result); } ># 438 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > class _Deque_base > { > public: > typedef _Alloc allocator_type; > > allocator_type > get_allocator() const > { return allocator_type(_M_get_Tp_allocator()); } > > typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; > typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator; > > _Deque_base() > : _M_impl() > { _M_initialize_map(0); } > > _Deque_base(size_t __num_elements) > : _M_impl() > { _M_initialize_map(__num_elements); } > > _Deque_base(const allocator_type& __a, size_t __num_elements) > : _M_impl(__a) > { _M_initialize_map(__num_elements); } > > _Deque_base(const allocator_type& __a) > : _M_impl(__a) > { } ># 482 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > ~_Deque_base(); > > protected: > > > > typedef typename _Alloc::template rebind<_Tp*>::other _Map_alloc_type; > > typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; > > struct _Deque_impl > : public _Tp_alloc_type > { > _Tp** _M_map; > size_t _M_map_size; > iterator _M_start; > iterator _M_finish; > > _Deque_impl() > : _Tp_alloc_type(), _M_map(0), _M_map_size(0), > _M_start(), _M_finish() > { } > > _Deque_impl(const _Tp_alloc_type& __a) > : _Tp_alloc_type(__a), _M_map(0), _M_map_size(0), > _M_start(), _M_finish() > { } > > > > > > > > }; > > _Tp_alloc_type& > _M_get_Tp_allocator() > { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } > > const _Tp_alloc_type& > _M_get_Tp_allocator() const > { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); } > > _Map_alloc_type > _M_get_map_allocator() const > { return _Map_alloc_type(_M_get_Tp_allocator()); } > > _Tp* > _M_allocate_node() > { > return _M_impl._Tp_alloc_type::allocate(__deque_buf_size(sizeof(_Tp))); > } > > void > _M_deallocate_node(_Tp* __p) > { > _M_impl._Tp_alloc_type::deallocate(__p, __deque_buf_size(sizeof(_Tp))); > } > > _Tp** > _M_allocate_map(size_t __n) > { return _M_get_map_allocator().allocate(__n); } > > void > _M_deallocate_map(_Tp** __p, size_t __n) > { _M_get_map_allocator().deallocate(__p, __n); } > > protected: > void _M_initialize_map(size_t); > void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish); > void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish); > enum { _S_initial_map_size = 8 }; > > _Deque_impl _M_impl; > }; > > template<typename _Tp, typename _Alloc> > _Deque_base<_Tp, _Alloc>:: > ~_Deque_base() > { > if (this->_M_impl._M_map) > { > _M_destroy_nodes(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1); > _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); > } > } ># 579 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > void > _Deque_base<_Tp, _Alloc>:: > _M_initialize_map(size_t __num_elements) > { > const size_t __num_nodes = (__num_elements/ __deque_buf_size(sizeof(_Tp)) > + 1); > > this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size, > size_t(__num_nodes + 2)); > this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size); > > > > > > > _Tp** __nstart = (this->_M_impl._M_map > + (this->_M_impl._M_map_size - __num_nodes) / 2); > _Tp** __nfinish = __nstart + __num_nodes; > > try > { _M_create_nodes(__nstart, __nfinish); } > catch(...) > { > _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); > this->_M_impl._M_map = 0; > this->_M_impl._M_map_size = 0; > throw; > } > > this->_M_impl._M_start._M_set_node(__nstart); > this->_M_impl._M_finish._M_set_node(__nfinish - 1); > this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first; > this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first > + __num_elements > % __deque_buf_size(sizeof(_Tp))); > } > > template<typename _Tp, typename _Alloc> > void > _Deque_base<_Tp, _Alloc>:: > _M_create_nodes(_Tp** __nstart, _Tp** __nfinish) > { > _Tp** __cur; > try > { > for (__cur = __nstart; __cur < __nfinish; ++__cur) > *__cur = this->_M_allocate_node(); > } > catch(...) > { > _M_destroy_nodes(__nstart, __cur); > throw; > } > } > > template<typename _Tp, typename _Alloc> > void > _Deque_base<_Tp, _Alloc>:: > _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish) > { > for (_Tp** __n = __nstart; __n < __nfinish; ++__n) > _M_deallocate_node(*__n); > } ># 729 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc = std::allocator<_Tp> > > class deque : protected _Deque_base<_Tp, _Alloc> > { > > typedef typename _Alloc::value_type _Alloc_value_type; > > > > typedef _Deque_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 typename _Base::iterator iterator; > typedef typename _Base::const_iterator const_iterator; > typedef std::reverse_iterator<const_iterator> const_reverse_iterator; > typedef std::reverse_iterator<iterator> reverse_iterator; > typedef size_t size_type; > typedef ptrdiff_t difference_type; > typedef _Alloc allocator_type; > > protected: > typedef pointer* _Map_pointer; > > static size_t _S_buffer_size() > { return __deque_buf_size(sizeof(_Tp)); } > > > using _Base::_M_initialize_map; > using _Base::_M_create_nodes; > using _Base::_M_destroy_nodes; > using _Base::_M_allocate_node; > using _Base::_M_deallocate_node; > using _Base::_M_allocate_map; > using _Base::_M_deallocate_map; > using _Base::_M_get_Tp_allocator; > > > > > > using _Base::_M_impl; > > public: > > > > > > deque() > : _Base() { } > > > > > > explicit > deque(const allocator_type& __a) > : _Base(__a, 0) { } ># 827 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > explicit > deque(size_type __n, const value_type& __value = value_type(), > const allocator_type& __a = allocator_type()) > : _Base(__a, __n) > { _M_fill_initialize(__value); } ># 841 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > deque(const deque& __x) > : _Base(__x._M_get_Tp_allocator(), __x.size()) > { std::__uninitialized_copy_a(__x.begin(), __x.end(), > this->_M_impl._M_start, > _M_get_Tp_allocator()); } ># 901 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _InputIterator> > deque(_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()); > } > > > > > > > > ~deque() > { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); } ># 927 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > deque& > operator=(const deque& __x); ># 977 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > assign(size_type __n, const value_type& __val) > { _M_fill_assign(__n, __val); } ># 1000 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _InputIterator> > void > assign(_InputIterator __first, _InputIterator __last) > { > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_assign_dispatch(__first, __last, _Integral()); > } ># 1027 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > allocator_type > get_allocator() const > { return _Base::get_allocator(); } > > > > > > > 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(this->_M_impl._M_finish); } > > > > > > > const_reverse_iterator > rbegin() const > { return const_reverse_iterator(this->_M_impl._M_finish); } > > > > > > > reverse_iterator > rend() > { return reverse_iterator(this->_M_impl._M_start); } > > > > > > > const_reverse_iterator > rend() const > { return const_reverse_iterator(this->_M_impl._M_start); } ># 1141 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > size_type > size() const > { return this->_M_impl._M_finish - this->_M_impl._M_start; } > > > size_type > max_size() const > { return _M_get_Tp_allocator().max_size(); } ># 1204 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > resize(size_type __new_size, value_type __x = value_type()) > { > const size_type __len = size(); > if (__new_size > __len) > insert(this->_M_impl._M_finish, __new_size - __len, __x); > else if (__new_size < __len) > _M_erase_at_end(this->_M_impl._M_start > + difference_type(__new_size)); > } ># 1227 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > bool > empty() const > { return this->_M_impl._M_finish == this->_M_impl._M_start; } ># 1243 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > reference > operator[](size_type __n) > { return this->_M_impl._M_start[difference_type(__n)]; } ># 1258 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > const_reference > operator[](size_type __n) const > { return this->_M_impl._M_start[difference_type(__n)]; } > > protected: > > void > _M_range_check(size_type __n) const > { > if (__n >= this->size()) > __throw_out_of_range(("deque::_M_range_check")); > } > > public: ># 1283 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > reference > at(size_type __n) > { > _M_range_check(__n); > return (*this)[__n]; > } ># 1301 "/usr/include/c++/4.8.2/bits/stl_deque.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() > { > iterator __tmp = end(); > --__tmp; > return *__tmp; > } > > > > > > const_reference > back() const > { > const_iterator __tmp = end(); > --__tmp; > return *__tmp; > } ># 1358 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > push_front(const value_type& __x) > { > if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) > { > this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1, __x); > --this->_M_impl._M_start._M_cur; > } > else > _M_push_front_aux(__x); > } ># 1389 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > push_back(const value_type& __x) > { > if (this->_M_impl._M_finish._M_cur > != this->_M_impl._M_finish._M_last - 1) > { > this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __x); > ++this->_M_impl._M_finish._M_cur; > } > else > _M_push_back_aux(__x); > } ># 1420 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > pop_front() > { > if (this->_M_impl._M_start._M_cur > != this->_M_impl._M_start._M_last - 1) > { > this->_M_impl.destroy(this->_M_impl._M_start._M_cur); > ++this->_M_impl._M_start._M_cur; > } > else > _M_pop_front_aux(); > } ># 1441 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > pop_back() > { > if (this->_M_impl._M_finish._M_cur > != this->_M_impl._M_finish._M_first) > { > --this->_M_impl._M_finish._M_cur; > this->_M_impl.destroy(this->_M_impl._M_finish._M_cur); > } > else > _M_pop_back_aux(); > } ># 1478 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > iterator > insert(iterator __position, const value_type& __x); ># 1518 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > insert(iterator __position, size_type __n, const value_type& __x) > { _M_fill_insert(__position, __n, __x); } ># 1540 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _InputIterator> > void > insert(iterator __position, _InputIterator __first, > _InputIterator __last) > { > > typedef typename std::__is_integer<_InputIterator>::__type _Integral; > _M_insert_dispatch(__position, __first, __last, _Integral()); > } ># 1564 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > iterator > erase(iterator __position); ># 1583 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > iterator > erase(iterator __first, iterator __last); ># 1595 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > swap(deque& __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_map, __x._M_impl._M_map); > std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size); > > > > std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(), > __x._M_get_Tp_allocator()); > } > > > > > > > > void > clear() > { _M_erase_at_end(begin()); } > > protected: > > > > > > > template<typename _Integer> > void > _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) > { > _M_initialize_map(static_cast<size_type>(__n)); > _M_fill_initialize(__x); > } > > > template<typename _InputIterator> > void > _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename std::iterator_traits<_InputIterator>:: > iterator_category _IterCategory; > _M_range_initialize(__first, __last, _IterCategory()); > } ># 1657 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _InputIterator> > void > _M_range_initialize(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag); ># 1679 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > _M_fill_initialize(const value_type& __value); ># 1695 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Integer> > void > _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) > { _M_fill_assign(__n, __val); } > > > template<typename _InputIterator> > void > _M_assign_dispatch(_InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename std::iterator_traits<_InputIterator>:: > iterator_category _IterCategory; > _M_assign_aux(__first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_assign_aux(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > const size_type __len = std::distance(__first, __last); > if (__len > size()) > { > _ForwardIterator __mid = __first; > std::advance(__mid, size()); > std::copy(__first, __mid, begin()); > insert(end(), __mid, __last); > } > else > _M_erase_at_end(std::copy(__first, __last, begin())); > } > > > > void > _M_fill_assign(size_type __n, const value_type& __val) > { > if (__n > size()) > { > std::fill(begin(), end(), __val); > insert(end(), __n - size(), __val); > } > else > { > _M_erase_at_end(begin() + difference_type(__n)); > std::fill(begin(), end(), __val); > } > } > > > > > void _M_push_back_aux(const value_type&); > > void _M_push_front_aux(const value_type&); ># 1766 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void _M_pop_back_aux(); > > void _M_pop_front_aux(); ># 1778 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Integer> > void > _M_insert_dispatch(iterator __pos, > _Integer __n, _Integer __x, __true_type) > { _M_fill_insert(__pos, __n, __x); } > > > template<typename _InputIterator> > void > _M_insert_dispatch(iterator __pos, > _InputIterator __first, _InputIterator __last, > __false_type) > { > typedef typename std::iterator_traits<_InputIterator>:: > iterator_category _IterCategory; > _M_range_insert_aux(__pos, __first, __last, _IterCategory()); > } > > > template<typename _InputIterator> > void > _M_range_insert_aux(iterator __pos, _InputIterator __first, > _InputIterator __last, std::input_iterator_tag); > > > template<typename _ForwardIterator> > void > _M_range_insert_aux(iterator __pos, _ForwardIterator __first, > _ForwardIterator __last, std::forward_iterator_tag); > > > > > void > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); > > > > iterator > _M_insert_aux(iterator __pos, const value_type& __x); > > > > > > > > void > _M_insert_aux(iterator __pos, size_type __n, const value_type& __x); > > > template<typename _ForwardIterator> > void > _M_insert_aux(iterator __pos, > _ForwardIterator __first, _ForwardIterator __last, > size_type __n); > > > > > void > _M_destroy_data_aux(iterator __first, iterator __last); > > > > template<typename _Alloc1> > void > _M_destroy_data(iterator __first, iterator __last, const _Alloc1&) > { _M_destroy_data_aux(__first, __last); } > > void > _M_destroy_data(iterator __first, iterator __last, > const std::allocator<_Tp>&) > { > if (!__has_trivial_destructor(value_type)) > _M_destroy_data_aux(__first, __last); > } > > > void > _M_erase_at_begin(iterator __pos) > { > _M_destroy_data(begin(), __pos, _M_get_Tp_allocator()); > _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node); > this->_M_impl._M_start = __pos; > } > > > > void > _M_erase_at_end(iterator __pos) > { > _M_destroy_data(__pos, end(), _M_get_Tp_allocator()); > _M_destroy_nodes(__pos._M_node + 1, > this->_M_impl._M_finish._M_node + 1); > this->_M_impl._M_finish = __pos; > } ># 1887 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > iterator > _M_reserve_elements_at_front(size_type __n) > { > const size_type __vacancies = this->_M_impl._M_start._M_cur > - this->_M_impl._M_start._M_first; > if (__n > __vacancies) > _M_new_elements_at_front(__n - __vacancies); > return this->_M_impl._M_start - difference_type(__n); > } > > iterator > _M_reserve_elements_at_back(size_type __n) > { > const size_type __vacancies = (this->_M_impl._M_finish._M_last > - this->_M_impl._M_finish._M_cur) - 1; > if (__n > __vacancies) > _M_new_elements_at_back(__n - __vacancies); > return this->_M_impl._M_finish + difference_type(__n); > } > > void > _M_new_elements_at_front(size_type __new_elements); > > void > _M_new_elements_at_back(size_type __new_elements); ># 1923 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > void > _M_reserve_map_at_back(size_type __nodes_to_add = 1) > { > if (__nodes_to_add + 1 > this->_M_impl._M_map_size > - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map)) > _M_reallocate_map(__nodes_to_add, false); > } > > void > _M_reserve_map_at_front(size_type __nodes_to_add = 1) > { > if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node > - this->_M_impl._M_map)) > _M_reallocate_map(__nodes_to_add, true); > } > > void > _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); > > }; ># 1955 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator==(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return __x.size() == __y.size() > && std::equal(__x.begin(), __x.end(), __y.begin()); } ># 1973 "/usr/include/c++/4.8.2/bits/stl_deque.h" 3 > template<typename _Tp, typename _Alloc> > inline bool > operator<(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return std::lexicographical_compare(__x.begin(), __x.end(), > __y.begin(), __y.end()); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator!=(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return !(__x == __y); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return __y < __x; } > > > template<typename _Tp, typename _Alloc> > inline bool > operator<=(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return !(__y < __x); } > > > template<typename _Tp, typename _Alloc> > inline bool > operator>=(const deque<_Tp, _Alloc>& __x, > const deque<_Tp, _Alloc>& __y) > { return !(__x < __y); } > > > template<typename _Tp, typename _Alloc> > inline void > swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) > { __x.swap(__y); } > > > > >} ># 65 "/usr/include/c++/4.8.2/deque" 2 3 > ># 1 "/usr/include/c++/4.8.2/bits/deque.tcc" 1 3 ># 59 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 >namespace std __attribute__ ((__visibility__ ("default"))) >{ ># 90 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 > template <typename _Tp, typename _Alloc> > deque<_Tp, _Alloc>& > deque<_Tp, _Alloc>:: > operator=(const deque& __x) > { > const size_type __len = size(); > if (&__x != this) > { > if (__len >= __x.size()) > _M_erase_at_end(std::copy(__x.begin(), __x.end(), > this->_M_impl._M_start)); > else > { > const_iterator __mid = __x.begin() + difference_type(__len); > std::copy(__x.begin(), __mid, this->_M_impl._M_start); > insert(this->_M_impl._M_finish, __mid, __x.end()); > } > } > return *this; > } ># 146 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 > template <typename _Tp, typename _Alloc> > typename deque<_Tp, _Alloc>::iterator > deque<_Tp, _Alloc>:: > insert(iterator __position, const value_type& __x) > { > if (__position._M_cur == this->_M_impl._M_start._M_cur) > { > push_front(__x); > return this->_M_impl._M_start; > } > else if (__position._M_cur == this->_M_impl._M_finish._M_cur) > { > push_back(__x); > iterator __tmp = this->_M_impl._M_finish; > --__tmp; > return __tmp; > } > else > return _M_insert_aux(__position, __x); > } ># 191 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 > template <typename _Tp, typename _Alloc> > typename deque<_Tp, _Alloc>::iterator > deque<_Tp, _Alloc>:: > erase(iterator __position) > { > iterator __next = __position; > ++__next; > const difference_type __index = __position - begin(); > if (static_cast<size_type>(__index) < (size() >> 1)) > { > if (__position != begin()) > std::copy_backward(begin(), __position, __next); > pop_front(); > } > else > { > if (__next != end()) > std::copy(__next, end(), __position); > pop_back(); > } > return begin() + __index; > } > > template <typename _Tp, typename _Alloc> > typename deque<_Tp, _Alloc>::iterator > deque<_Tp, _Alloc>:: > erase(iterator __first, iterator __last) > { > if (__first == __last) > return __first; > else if (__first == begin() && __last == end()) > { > clear(); > return end(); > } > else > { > const difference_type __n = __last - __first; > const difference_type __elems_before = __first - begin(); > if (static_cast<size_type>(__elems_before) <= (size() - __n) / 2) > { > if (__first != begin()) > std::copy_backward(begin(), __first, __last); > _M_erase_at_begin(begin() + __n); > } > else > { > if (__last != end()) > std::copy(__last, end(), __first); > _M_erase_at_end(end() - __n); > } > return begin() + __elems_before; > } > } > > template <typename _Tp, class _Alloc> > template <typename _InputIterator> > void > deque<_Tp, _Alloc>:: > _M_assign_aux(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag) > { > iterator __cur = begin(); > for (; __first != __last && __cur != end(); ++__cur, ++__first) > *__cur = *__first; > if (__first == __last) > _M_erase_at_end(__cur); > else > insert(end(), __first, __last); > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) > { > if (__pos._M_cur == this->_M_impl._M_start._M_cur) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > try > { > std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start, > __x, _M_get_Tp_allocator()); > this->_M_impl._M_start = __new_start; > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, > this->_M_impl._M_start._M_node); > throw; > } > } > else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > try > { > std::__uninitialized_fill_a(this->_M_impl._M_finish, > __new_finish, __x, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = __new_finish; > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > else > _M_insert_aux(__pos, __n, __x); > } ># 348 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 > template <typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_fill_initialize(const value_type& __value) > { > _Map_pointer __cur; > try > { > for (__cur = this->_M_impl._M_start._M_node; > __cur < this->_M_impl._M_finish._M_node; > ++__cur) > std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), > __value, _M_get_Tp_allocator()); > std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first, > this->_M_impl._M_finish._M_cur, > __value, _M_get_Tp_allocator()); > } > catch(...) > { > std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), > _M_get_Tp_allocator()); > throw; > } > } > > template <typename _Tp, typename _Alloc> > template <typename _InputIterator> > void > deque<_Tp, _Alloc>:: > _M_range_initialize(_InputIterator __first, _InputIterator __last, > std::input_iterator_tag) > { > this->_M_initialize_map(0); > try > { > for (; __first != __last; ++__first) > > > > push_back(*__first); > > } > catch(...) > { > clear(); > throw; > } > } > > template <typename _Tp, typename _Alloc> > template <typename _ForwardIterator> > void > deque<_Tp, _Alloc>:: > _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > const size_type __n = std::distance(__first, __last); > this->_M_initialize_map(__n); > > _Map_pointer __cur_node; > try > { > for (__cur_node = this->_M_impl._M_start._M_node; > __cur_node < this->_M_impl._M_finish._M_node; > ++__cur_node) > { > _ForwardIterator __mid = __first; > std::advance(__mid, _S_buffer_size()); > std::__uninitialized_copy_a(__first, __mid, *__cur_node, > _M_get_Tp_allocator()); > __first = __mid; > } > std::__uninitialized_copy_a(__first, __last, > this->_M_impl._M_finish._M_first, > _M_get_Tp_allocator()); > } > catch(...) > { > std::_Destroy(this->_M_impl._M_start, > iterator(*__cur_node, __cur_node), > _M_get_Tp_allocator()); > throw; > } > } > > > template<typename _Tp, typename _Alloc> > > > > > > > void > deque<_Tp, _Alloc>:: > _M_push_back_aux(const value_type& __t) > > { > _M_reserve_map_at_back(); > *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); > try > { > > > > > this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t); > > this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node > + 1); > this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; > } > catch(...) > { > _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); > throw; > } > } > > > template<typename _Tp, typename _Alloc> > > > > > > > void > deque<_Tp, _Alloc>:: > _M_push_front_aux(const value_type& __t) > > { > _M_reserve_map_at_front(); > *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); > try > { > this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node > - 1); > this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; > > > > > this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t); > > } > catch(...) > { > ++this->_M_impl._M_start; > _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); > throw; > } > } > > > template <typename _Tp, typename _Alloc> > void deque<_Tp, _Alloc>:: > _M_pop_back_aux() > { > _M_deallocate_node(this->_M_impl._M_finish._M_first); > this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); > this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; > this->_M_impl.destroy(this->_M_impl._M_finish._M_cur); > } > > > > > > > template <typename _Tp, typename _Alloc> > void deque<_Tp, _Alloc>:: > _M_pop_front_aux() > { > this->_M_impl.destroy(this->_M_impl._M_start._M_cur); > _M_deallocate_node(this->_M_impl._M_start._M_first); > this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); > this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; > } > > template <typename _Tp, typename _Alloc> > template <typename _InputIterator> > void > deque<_Tp, _Alloc>:: > _M_range_insert_aux(iterator __pos, > _InputIterator __first, _InputIterator __last, > std::input_iterator_tag) > { std::copy(__first, __last, std::inserter(*this, __pos)); } > > template <typename _Tp, typename _Alloc> > template <typename _ForwardIterator> > void > deque<_Tp, _Alloc>:: > _M_range_insert_aux(iterator __pos, > _ForwardIterator __first, _ForwardIterator __last, > std::forward_iterator_tag) > { > const size_type __n = std::distance(__first, __last); > if (__pos._M_cur == this->_M_impl._M_start._M_cur) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > try > { > std::__uninitialized_copy_a(__first, __last, __new_start, > _M_get_Tp_allocator()); > this->_M_impl._M_start = __new_start; > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, > this->_M_impl._M_start._M_node); > throw; > } > } > else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > try > { > std::__uninitialized_copy_a(__first, __last, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = __new_finish; > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > else > _M_insert_aux(__pos, __first, __last, __n); > } > > template<typename _Tp, typename _Alloc> ># 592 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 > typename deque<_Tp, _Alloc>::iterator > deque<_Tp, _Alloc>:: > _M_insert_aux(iterator __pos, const value_type& __x) > { > value_type __x_copy = __x; > > difference_type __index = __pos - this->_M_impl._M_start; > if (static_cast<size_type>(__index) < size() / 2) > { > push_front((front())); > iterator __front1 = this->_M_impl._M_start; > ++__front1; > iterator __front2 = __front1; > ++__front2; > __pos = this->_M_impl._M_start + __index; > iterator __pos1 = __pos; > ++__pos1; > std::copy(__front2, __pos1, __front1); > } > else > { > push_back((back())); > iterator __back1 = this->_M_impl._M_finish; > --__back1; > iterator __back2 = __back1; > --__back2; > __pos = this->_M_impl._M_start + __index; > std::copy_backward(__pos, __back2, __back1); > } > *__pos = (__x_copy); > return __pos; > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) > { > const difference_type __elems_before = __pos - this->_M_impl._M_start; > const size_type __length = this->size(); > value_type __x_copy = __x; > if (__elems_before < difference_type(__length / 2)) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > iterator __old_start = this->_M_impl._M_start; > __pos = this->_M_impl._M_start + __elems_before; > try > { > if (__elems_before >= difference_type(__n)) > { > iterator __start_n = (this->_M_impl._M_start > + difference_type(__n)); > std::__uninitialized_move_a(this->_M_impl._M_start, > __start_n, __new_start, > _M_get_Tp_allocator()); > this->_M_impl._M_start = __new_start; > std::copy(__start_n, __pos, __old_start); > std::fill(__pos - difference_type(__n), __pos, __x_copy); > } > else > { > std::__uninitialized_move_fill(this->_M_impl._M_start, > __pos, __new_start, > this->_M_impl._M_start, > __x_copy, > _M_get_Tp_allocator()); > this->_M_impl._M_start = __new_start; > std::fill(__old_start, __pos, __x_copy); > } > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, > this->_M_impl._M_start._M_node); > throw; > } > } > else > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > iterator __old_finish = this->_M_impl._M_finish; > const difference_type __elems_after = > difference_type(__length) - __elems_before; > __pos = this->_M_impl._M_finish - __elems_after; > try > { > if (__elems_after > difference_type(__n)) > { > iterator __finish_n = (this->_M_impl._M_finish > - difference_type(__n)); > std::__uninitialized_move_a(__finish_n, > this->_M_impl._M_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = __new_finish; > std::copy_backward(__pos, __finish_n, __old_finish); > std::fill(__pos, __pos + difference_type(__n), __x_copy); > } > else > { > std::__uninitialized_fill_move(this->_M_impl._M_finish, > __pos + difference_type(__n), > __x_copy, __pos, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = __new_finish; > std::fill(__pos, __old_finish, __x_copy); > } > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > } > > template <typename _Tp, typename _Alloc> > template <typename _ForwardIterator> > void > deque<_Tp, _Alloc>:: > _M_insert_aux(iterator __pos, > _ForwardIterator __first, _ForwardIterator __last, > size_type __n) > { > const difference_type __elemsbefore = __pos - this->_M_impl._M_start; > const size_type __length = size(); > if (static_cast<size_type>(__elemsbefore) < __length / 2) > { > iterator __new_start = _M_reserve_elements_at_front(__n); > iterator __old_start = this->_M_impl._M_start; > __pos = this->_M_impl._M_start + __elemsbefore; > try > { > if (__elemsbefore >= difference_type(__n)) > { > iterator __start_n = (this->_M_impl._M_start > + difference_type(__n)); > std::__uninitialized_move_a(this->_M_impl._M_start, > __start_n, __new_start, > _M_get_Tp_allocator()); > this->_M_impl._M_start = __new_start; > std::copy(__start_n, __pos, __old_start); > std::copy(__first, __last, __pos - difference_type(__n)); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, difference_type(__n) - __elemsbefore); > std::__uninitialized_move_copy(this->_M_impl._M_start, > __pos, __first, __mid, > __new_start, > _M_get_Tp_allocator()); > this->_M_impl._M_start = __new_start; > std::copy(__mid, __last, __old_start); > } > } > catch(...) > { > _M_destroy_nodes(__new_start._M_node, > this->_M_impl._M_start._M_node); > throw; > } > } > else > { > iterator __new_finish = _M_reserve_elements_at_back(__n); > iterator __old_finish = this->_M_impl._M_finish; > const difference_type __elemsafter = > difference_type(__length) - __elemsbefore; > __pos = this->_M_impl._M_finish - __elemsafter; > try > { > if (__elemsafter > difference_type(__n)) > { > iterator __finish_n = (this->_M_impl._M_finish > - difference_type(__n)); > std::__uninitialized_move_a(__finish_n, > this->_M_impl._M_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = __new_finish; > std::copy_backward(__pos, __finish_n, __old_finish); > std::copy(__first, __last, __pos); > } > else > { > _ForwardIterator __mid = __first; > std::advance(__mid, __elemsafter); > std::__uninitialized_copy_move(__mid, __last, __pos, > this->_M_impl._M_finish, > this->_M_impl._M_finish, > _M_get_Tp_allocator()); > this->_M_impl._M_finish = __new_finish; > std::copy(__first, __mid, __pos); > } > } > catch(...) > { > _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, > __new_finish._M_node + 1); > throw; > } > } > } > > template<typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_destroy_data_aux(iterator __first, iterator __last) > { > for (_Map_pointer __node = __first._M_node + 1; > __node < __last._M_node; ++__node) > std::_Destroy(*__node, *__node + _S_buffer_size(), > _M_get_Tp_allocator()); > > if (__first._M_node != __last._M_node) > { > std::_Destroy(__first._M_cur, __first._M_last, > _M_get_Tp_allocator()); > std::_Destroy(__last._M_first, __last._M_cur, > _M_get_Tp_allocator()); > } > else > std::_Destroy(__first._M_cur, __last._M_cur, > _M_get_Tp_allocator()); > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_new_elements_at_front(size_type __new_elems) > { > if (this->max_size() - this->size() < __new_elems) > __throw_length_error(("deque::_M_new_elements_at_front")); > > const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) > / _S_buffer_size()); > _M_reserve_map_at_front(__new_nodes); > size_type __i; > try > { > for (__i = 1; __i <= __new_nodes; ++__i) > *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); > } > catch(...) > { > for (size_type __j = 1; __j < __i; ++__j) > _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); > throw; > } > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_new_elements_at_back(size_type __new_elems) > { > if (this->max_size() - this->size() < __new_elems) > __throw_length_error(("deque::_M_new_elements_at_back")); > > const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) > / _S_buffer_size()); > _M_reserve_map_at_back(__new_nodes); > size_type __i; > try > { > for (__i = 1; __i <= __new_nodes; ++__i) > *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); > } > catch(...) > { > for (size_type __j = 1; __j < __i; ++__j) > _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); > throw; > } > } > > template <typename _Tp, typename _Alloc> > void > deque<_Tp, _Alloc>:: > _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) > { > const size_type __old_num_nodes > = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; > const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; > > _Map_pointer __new_nstart; > if (this->_M_impl._M_map_size > 2 * __new_num_nodes) > { > __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size > - __new_num_nodes) / 2 > + (__add_at_front ? __nodes_to_add : 0); > if (__new_nstart < this->_M_impl._M_start._M_node) > std::copy(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1, > __new_nstart); > else > std::copy_backward(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1, > __new_nstart + __old_num_nodes); > } > else > { > size_type __new_map_size = this->_M_impl._M_map_size > + std::max(this->_M_impl._M_map_size, > __nodes_to_add) + 2; > > _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); > __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 > + (__add_at_front ? __nodes_to_add : 0); > std::copy(this->_M_impl._M_start._M_node, > this->_M_impl._M_finish._M_node + 1, > __new_nstart); > _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); > > this->_M_impl._M_map = __new_map; > this->_M_impl._M_map_size = __new_map_size; > } > > this->_M_impl._M_start._M_set_node(__new_nstart); > this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); > } > > > > template<typename _Tp> > void > fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>& __first, > const _Deque_iterator<_Tp, _Tp&, _Tp*>& __last, const _Tp& __value) > { > typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; > > for (typename _Self::_Map_pointer __node = __first._M_node + 1; > __node < __last._M_node; ++__node) > std::fill(*__node, *__node + _Self::_S_buffer_size(), __value); > > if (__first._M_node != __last._M_node) > { > std::fill(__first._M_cur, __first._M_last, __value); > std::fill(__last._M_first, __last._M_cur, __value); > } > else > std::fill(__first._M_cur, __last._M_cur, __value); > } > > template<typename _Tp> > _Deque_iterator<_Tp, _Tp&, _Tp*> > copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, > _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, > _Deque_iterator<_Tp, _Tp&, _Tp*> __result) > { > typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; > typedef typename _Self::difference_type difference_type; > > difference_type __len = __last - __first; > while (__len > 0) > { > const difference_type __clen > = std::min(__len, std::min(__first._M_last - __first._M_cur, > __result._M_last - __result._M_cur)); > std::copy(__first._M_cur, __first._M_cur + __clen, __result._M_cur); > __first += __clen; > __result += __clen; > __len -= __clen; > } > return __result; > } > > template<typename _Tp> > _Deque_iterator<_Tp, _Tp&, _Tp*> > copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, > _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, > _Deque_iterator<_Tp, _Tp&, _Tp*> __result) > { > typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; > typedef typename _Self::difference_type difference_type; > > difference_type __len = __last - __first; > while (__len > 0) > { > difference_type __llen = __last._M_cur - __last._M_first; > _Tp* __lend = __last._M_cur; > > difference_type __rlen = __result._M_cur - __result._M_first; > _Tp* __rend = __result._M_cur; > > if (!__llen) > { > __llen = _Self::_S_buffer_size(); > __lend = *(__last._M_node - 1) + __llen; > } > if (!__rlen) > { > __rlen = _Self::_S_buffer_size(); > __rend = *(__result._M_node - 1) + __rlen; > } > > const difference_type __clen = std::min(__len, > std::min(__llen, __rlen)); > std::copy_backward(__lend - __clen, __lend, __rend); > __last -= __clen; > __result -= __clen; > __len -= __clen; > } > return __result; > } ># 1065 "/usr/include/c++/4.8.2/bits/deque.tcc" 3 > >} ># 67 "/usr/include/c++/4.8.2/deque" 2 3 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0pagecompress.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0pagecompress.h" >static inline >ulint >dict_tf_get_page_compression_level( > > ulint flags) > __attribute__((const)); > > > >static inline >ulint >dict_tf_get_page_compression( > > ulint flags) > __attribute__((const)); > > > > >static inline >ulint >dict_table_page_compression_level( > > const dict_table_t* table) > __attribute__((const)); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0pagecompress.ic" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0pagecompress.ic" >static inline >ulint >dict_tf_get_page_compression_level( > > ulint flags) >{ > ulint page_compression_level = ((flags & ((~(~0U << 4)) << (((((0 + 1) + 4) + 1) + 1) + 1))) >> (((((0 + 1) + 4) + 1) + 1) + 1)); > > do { } while(0); > > return(page_compression_level); >} > > > > >static inline >ulint >dict_table_page_compression_level( > > const dict_table_t* table) >{ > do { } while(0); > do { } while(0); > > return(dict_tf_get_page_compression_level(table->flags)); >} > > > > >static inline >ulint >dict_tf_get_page_compression( > > ulint flags) >{ > return(((flags & ((~(~0U << 1)) << ((((0 + 1) + 4) + 1) + 1))) >> ((((0 + 1) + 4) + 1) + 1))); >} > > > > >static inline >ulint >dict_table_is_page_compressed( > > const dict_table_t* table) >{ > return (dict_tf_get_page_compression(table->flags)); >} ># 60 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0pagecompress.h" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" 2 > >extern bool innodb_table_stats_not_found; >extern bool innodb_index_stats_not_found; > > > > > >ulint >dict_get_db_name_len( > > const char* name) > > __attribute__((nonnull, warn_unused_result)); > > > > > >char* >dict_get_referenced_table( > > const char* name, > const char* database_name, > ulint database_name_len, > const char* table_name, > ulint table_name_len, > dict_table_t** table, > mem_heap_t* heap); > > >void >dict_foreign_free( > > dict_foreign_t* foreign); > > > > > >ulint >dict_table_get_highest_foreign_id( > > dict_table_t* table); > > > > >const char* >dict_remove_db_name( > > const char* name) > > __attribute__((nonnull, warn_unused_result)); > > >enum dict_table_op_t { > > DICT_TABLE_OP_NORMAL = 0, > > DICT_TABLE_OP_DROP_ORPHAN, > > > DICT_TABLE_OP_LOAD_TABLESPACE, > > DICT_TABLE_OP_OPEN_ONLY_IF_CACHED >}; > > > > >dict_table_t* >dict_table_open_on_id( > > table_id_t table_id, > ulint dict_locked, > dict_table_op_t table_op) > __attribute__((warn_unused_result)); > > > > >dict_table_t* dict_table_open_on_index_id(index_id_t index_id) > __attribute__((warn_unused_result)); > > >void >dict_table_close( > > dict_table_t* table, > ulint dict_locked, > ulint try_drop) > > > __attribute__((nonnull)); > > > > > > >void >dict_table_close_and_drop( > > trx_t* trx, > dict_table_t* table); > > >void >dict_init(void); > > > > >static inline >ulint >dict_col_get_mbminlen( > > const dict_col_t* col) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_col_get_mbmaxlen( > > const dict_col_t* col) > __attribute__((nonnull, warn_unused_result)); > > >static inline >void >dict_col_copy_type( > > const dict_col_t* col, > dtype_t* type); > > > > > > >static inline >ulint >dict_max_field_len_store_undo( > > dict_table_t* table, > const dict_col_t* col) > > __attribute__((nonnull, warn_unused_result)); > > > > > > >static inline >ulint >dict_max_v_field_len_store_undo( > dict_table_t* table, > ulint col_no); ># 215 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_col_get_min_size( > > const dict_col_t* col) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_col_get_max_size( > > const dict_col_t* col) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_col_get_fixed_size( > > const dict_col_t* col, > ulint comp) > __attribute__((nonnull, warn_unused_result)); > > > > >static inline >ulint >dict_col_get_sql_null_size( > > const dict_col_t* col, > ulint comp) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_col_get_no( > > const dict_col_t* col) > __attribute__((nonnull, warn_unused_result)); > > >static inline >ulint >dict_col_get_clust_pos( > > const dict_col_t* col, > const dict_index_t* clust_index) > __attribute__((nonnull, warn_unused_result)); > > > > > >static inline >ulint >dict_col_get_index_pos( > const dict_col_t* col, > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > > > > >ulint >dict_col_name_is_reserved( > > const char* name) > __attribute__((nonnull, warn_unused_result)); > > >void >dict_table_autoinc_lock( > > dict_table_t* table) > __attribute__((nonnull)); > > > >__attribute__((nonnull)) >static inline >void >dict_table_autoinc_initialize(dict_table_t* table, ib_uint64_t value) >{ > do { } while(0); > table->autoinc = value; >} > > > > > >__attribute__((nonnull, warn_unused_result)) >static inline >ib_uint64_t >dict_table_autoinc_read(const dict_table_t* table) >{ > do { } while(0); > return(table->autoinc); >} > > > > > > >__attribute__((nonnull)) >static inline >bool >dict_table_autoinc_update_if_greater(dict_table_t* table, ib_uint64_t value) >{ > do { } while(0); > > if (value > table->autoinc) { > > table->autoinc = value; > return(true); > } > > return(false); >} > > > >void >dict_table_autoinc_unlock( > > dict_table_t* table) > __attribute__((nonnull)); > > >void >dict_table_add_system_columns( > > dict_table_t* table, > mem_heap_t* heap) > __attribute__((nonnull)); > > >void >dict_table_add_to_cache( > > dict_table_t* table, > bool can_be_evicted, > mem_heap_t* heap) > __attribute__((nonnull)); > > >void >dict_table_remove_from_cache( > > dict_table_t* table) > __attribute__((nonnull)); > > >void >dict_table_remove_from_cache_low( > > dict_table_t* table, > ulint lru_evict) > > __attribute__((nonnull)); > > > >dberr_t >dict_table_rename_in_cache( > > dict_table_t* table, > const char* new_name, > bool rename_also_foreigns, > > > > bool replace_new_file = false) > > > > __attribute__((nonnull)); > > > > > >void >dict_index_remove_from_cache( > dict_table_t* table, > dict_index_t* index); > > > > >void >dict_table_change_id_in_cache( > > dict_table_t* table, > table_id_t new_id) > __attribute__((nonnull)); > > >void >dict_foreign_remove_from_cache( > > dict_foreign_t* foreign) > __attribute__((nonnull)); > > > > > > >dberr_t >dict_foreign_add_to_cache( > > dict_foreign_t* foreign, > > const char** col_names, > > > bool check_charsets, > > > dict_err_ignore_t ignore_err) > > __attribute__((nonnull(1), warn_unused_result)); > > > >ulint >dict_table_is_referenced_by_foreign_key( > > const dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > > >bool >dict_foreign_replace_index( > > dict_table_t* table, > const char** col_names, > > > const dict_index_t* index) > __attribute__((nonnull(1,3), warn_unused_result)); ># 487 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >dberr_t >dict_create_foreign_constraints( > trx_t* trx, > const char* sql_string, > size_t sql_length, > const char* name, > ulint reject_fks) > __attribute__((warn_unused_result)); > > > > >dberr_t >dict_foreign_parse_drop_constraints( > > mem_heap_t* heap, > > trx_t* trx, > dict_table_t* table, > ulint* n, > > const char*** constraints_to_drop) > > __attribute__((nonnull, warn_unused_result)); ># 522 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >dict_table_t* >dict_table_open_on_name( > const char* table_name, > ulint dict_locked, > ulint try_drop, > dict_err_ignore_t ignore_err) > __attribute__((warn_unused_result)); > > >enum fkerr_t >{ > > FK_SUCCESS = 0, > > FK_INDEX_NOT_FOUND, > > FK_IS_PREFIX_INDEX, > > FK_COL_NOT_NULL, > > FK_COLS_NOT_EQUAL >}; > > > > > > >dict_index_t* >dict_foreign_find_index( > > const dict_table_t* table, > const char** col_names, > > > const char** columns, > ulint n_cols, > const dict_index_t* types_idx, > > > > bool check_charsets, > > > > ulint check_null, > > > > fkerr_t* error = __null, > ulint* err_col_no = __null, > > > dict_index_t** err_index = __null) > > > > __attribute__((nonnull(1,3), warn_unused_result)); > > > > >const char* >dict_table_get_col_name( > > const dict_table_t* table, > ulint col_nr) > __attribute__((nonnull, warn_unused_result)); > > > > > >const char* >dict_table_get_v_col_name( > const dict_table_t* table, > ulint col_nr); > > > > > > > >ulint >dict_table_has_column( > const dict_table_t* table, > const char* col_name, > ulint col_nr = 0); > > > >std::string >dict_print_info_on_foreign_keys( > > ulint create_table_format, > > > > trx_t* trx, > dict_table_t* table); > > > > >std::string >dict_print_info_on_foreign_key_in_create_format( > > trx_t* trx, > dict_foreign_t* foreign, > ulint add_newline); > > > > > > >bool >dict_foreign_qualify_index( > > const dict_table_t* table, > const char** col_names, > > > const char** columns, > ulint n_cols, > const dict_index_t* index, > const dict_index_t* types_idx, > > > > bool check_charsets, > > > > ulint check_null, > > > > fkerr_t* error, > ulint* err_col_no, > > > dict_index_t** err_index) > > > __attribute__((nonnull(1,3), warn_unused_result)); ># 719 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_index_is_clust( > > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > > > >static inline >bool >dict_index_is_auto_gen_clust( > const dict_index_t* index); > > > > >static inline >ulint >dict_index_is_unique( > > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > >static inline >ulint >dict_index_is_spatial( > > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > > > > >static inline >ulint >dict_index_is_ibuf( > > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > >static inline >ulint >dict_index_is_sec_or_ibuf( > > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > > > >ulint >dict_table_get_all_fts_indexes( > const dict_table_t* table, > ib_vector_t* indexes); > > > > > > >static inline >ulint >dict_table_get_n_user_cols( > > const dict_table_t* table) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >dict_table_get_n_cols( > > const dict_table_t* table) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >dict_table_get_n_v_cols( > const dict_table_t* table); > > > > >static inline >bool >dict_table_has_indexed_v_cols( > const dict_table_t* table); > > > > >static inline >ib_uint64_t >dict_table_get_n_rows( > > const dict_table_t* table) > __attribute__((warn_unused_result)); > > > > >static inline >void >dict_table_n_rows_inc( > > dict_table_t* table) > __attribute__((nonnull)); > > > > >static inline >void >dict_table_n_rows_dec( > > dict_table_t* table) > __attribute__((nonnull)); > > > > > >dict_v_col_t* >dict_table_get_nth_v_col_mysql( > const dict_table_t* table, > ulint col_nr); ># 901 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_table_get_sys_col_no( > > const dict_table_t* table, > ulint sys) > __attribute__((nonnull, warn_unused_result)); > > > > >static inline >ulint >dict_index_get_min_size( > > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_table_is_comp( > > const dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > > >static inline >ulint >dict_table_get_format( > > const dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_tf_get_format( > > ulint flags) > __attribute__((warn_unused_result)); ># 955 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >void >dict_tf_set( > ulint* flags, > rec_format_t format, > ulint zip_ssize, > bool use_data_dir, > bool page_compressed, > ulint page_compression_level, > ulint not_used); ># 978 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_tf_to_fsp_flags(ulint table_flags) > __attribute__((const)); > > > > >static inline >const page_size_t >dict_tf_get_page_size( > ulint flags) >__attribute__((const)); > > > > > >ulint >dict_table_extent_size( > const dict_table_t* table); > > > > >static inline >const page_size_t >dict_table_page_size( > const dict_table_t* table) > __attribute__((warn_unused_result)); > > > > > >static inline >void >dict_table_x_lock_indexes( > > dict_table_t* table) > __attribute__((nonnull)); > > >static inline >void >dict_table_x_unlock_indexes( > > dict_table_t* table) > __attribute__((nonnull)); > > > > >ulint >dict_table_col_in_clustered_key( > > const dict_table_t* table, > ulint n) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_table_has_fts_index( > > dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > > > > >void >dict_table_copy_v_types( > dtuple_t* tuple, > const dict_table_t* table); > > > > > >void >dict_table_copy_types( > > dtuple_t* tuple, > const dict_table_t* table) > __attribute__((nonnull)); > > > > > >dict_index_t* >dict_index_find_on_id_low( > > index_id_t id) > __attribute__((warn_unused_result)); > > > > > >ulint >dict_make_room_in_cache( > > ulint max_tables, > ulint pct_check); > > > > > >void >dict_index_remove_from_v_col_list( > dict_index_t* index); ># 1104 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >dberr_t >dict_index_add_to_cache( > dict_table_t* table, > dict_index_t*& index, > ulint page_no, > const dict_add_v_col_t* add_v = __null) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >dict_index_get_n_fields( > > const dict_index_t* index) > > > __attribute__((nonnull, warn_unused_result)); > > > > > > >static inline >ulint >dict_index_get_n_unique( > > const dict_index_t* index) > > __attribute__((nonnull, warn_unused_result)); > > > > > >static inline >ulint >dict_index_get_n_unique_in_tree( > > const dict_index_t* index) > > __attribute__((nonnull, warn_unused_result)); ># 1159 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_index_get_n_unique_in_tree_nonleaf( > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > > > > > >static inline >ulint >dict_index_get_n_ordering_defined_by_user( > > const dict_index_t* index) > > __attribute__((nonnull, warn_unused_result)); ># 1194 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >const dict_col_t* >dict_index_get_nth_col( > > const dict_index_t* index, > ulint pos) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >dict_index_get_nth_col_no( > > const dict_index_t* index, > ulint pos) > __attribute__((nonnull, warn_unused_result)); > > > > >static inline >ulint >dict_index_get_nth_col_pos( > > const dict_index_t* index, > ulint n, > ulint* prefix_col_pos) > __attribute__((nonnull(1), warn_unused_result)); ># 1231 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >ulint >dict_index_get_nth_col_or_prefix_pos( > const dict_index_t* index, > ulint n, > bool inc_prefix, > > bool is_virtual, > > ulint* prefix_col_pos) > > __attribute__((warn_unused_result)); > > > > > > > >ulint >dict_index_contains_col_or_prefix( > > const dict_index_t* index, > ulint n, > bool is_virtual) > > __attribute__((warn_unused_result)); > > > > > > > >ulint >dict_index_get_nth_field_pos( > > const dict_index_t* index, > const dict_index_t* index2, > ulint n) > __attribute__((nonnull, warn_unused_result)); > > > >ulint >dict_table_get_nth_col_pos( > > const dict_table_t* table, > ulint n, > ulint* prefix_col_pos) > __attribute__((nonnull(1), warn_unused_result)); > > > >static inline >ulint >dict_index_get_sys_col_pos( > > const dict_index_t* index, > ulint type) > __attribute__((nonnull, warn_unused_result)); > > >void >dict_index_add_col( > > dict_index_t* index, > const dict_table_t* table, > dict_col_t* col, > ulint prefix_len) > __attribute__((nonnull)); > > > >void >dict_index_copy_types( > > dtuple_t* tuple, > const dict_index_t* index, > ulint n_fields) > > __attribute__((nonnull)); > > > >static inline >const dict_col_t* >dict_field_get_col( > > const dict_field_t* field) > __attribute__((nonnull, warn_unused_result)); > > > > > >dict_index_t* >dict_index_get_if_in_cache_low( > > index_id_t index_id) > __attribute__((warn_unused_result)); ># 1375 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >dtuple_t* >dict_index_build_node_ptr( > > const dict_index_t* index, > const rec_t* rec, > > ulint page_no, > > mem_heap_t* heap, > > ulint level) > > __attribute__((nonnull, warn_unused_result)); > > > > >rec_t* >dict_index_copy_rec_order_prefix( > > const dict_index_t* index, > const rec_t* rec, > > ulint* n_fields, > byte** buf, > > ulint* buf_size) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >dtuple_t* >dict_index_build_data_tuple_func( > const rec_t* rec, > const dict_index_t* index, > > > > ulint n_fields, > mem_heap_t* heap) > __attribute__((nonnull, warn_unused_result)); ># 1431 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_index_get_space( > > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > >static inline >void >dict_index_set_space( > > dict_index_t* index, > ulint space) > __attribute__((nonnull)); > > > >static inline >ulint >dict_index_get_page( > > const dict_index_t* tree) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >rw_lock_t* >dict_index_get_lock( > > dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > > > > >static inline >ulint >dict_index_get_space_reserve(void); > > > > > > >static inline >enum online_index_status >dict_index_get_online_status( > > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > >static inline >void >dict_index_set_online_status( > > dict_index_t* index, > enum online_index_status status) > __attribute__((nonnull)); ># 1501 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >bool >dict_index_is_online_ddl( > > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > >ulint >dict_index_calc_min_rec_len( > > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > >void >dict_mutex_enter_for_mysql_func(const char *file, unsigned line); > > > > > > >void >dict_mutex_exit_for_mysql(void); ># 1533 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >void >dict_table_stats_latch_create( > dict_table_t* table, > bool enabled); > > > > > >void >dict_table_stats_latch_destroy( > dict_table_t* table); > > > > >void >dict_table_stats_lock( > dict_table_t* table, > ulint latch_mode); > > > > >void >dict_table_stats_unlock( > dict_table_t* table, > ulint latch_mode); > > > > >ulint >dict_tables_have_same_db( > > const char* name1, > > const char* name2) > > __attribute__((nonnull, warn_unused_result)); > > > > > >dict_index_t* >dict_table_get_index_on_name(dict_table_t* table, const char* name) > __attribute__((warn_unused_result)); > > > > > >inline >const dict_index_t* >dict_table_get_index_on_name(const dict_table_t* table, const char* name) >{ > return dict_table_get_index_on_name(const_cast<dict_table_t*>(table), > name); >} > > > >static inline >ulint >dict_table_is_fts_column( > > > > ib_vector_t* indexes, > ulint col_no, > bool is_virtual) > __attribute__((warn_unused_result)); > > > >static inline >void >dict_table_prevent_eviction( > > dict_table_t* table) > __attribute__((nonnull)); > > > >void >dict_table_move_from_lru_to_non_lru( > > dict_table_t* table) > __attribute__((nonnull)); > > > > > >dict_index_t* >dict_table_find_index_on_id( > const dict_table_t* table, > index_id_t id) > __attribute__((nonnull(1))); > > > >void >dict_move_to_mru( > > dict_table_t* table) > __attribute__((nonnull)); ># 1649 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >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_t{ > DictSysMutex mutex; > > > > > > > row_id_t row_id; > > > > > > hash_table_t* table_hash; > > hash_table_t* table_id_hash; > > dict_table_t* sys_tables; > dict_table_t* sys_columns; > dict_table_t* sys_indexes; > dict_table_t* sys_fields; > dict_table_t* sys_virtual; > > > ut_list_base<dict_table_t, ut_list_node<dict_table_t> dict_table_t::*> > table_LRU; > > ut_list_base<dict_table_t, ut_list_node<dict_table_t> dict_table_t::*> > table_non_LRU; > >}; > > >extern dict_index_t* dict_ind_redundant; > > >void >dict_ind_init(); > > >void >dict_ind_free(); > > > > > >struct dict_col_meta_t { > const char* name; > ulint mtype; > ulint prtype_mask; > > > > ulint len; >}; > > > > >struct dict_table_schema_t { > const char* table_name; > > ulint n_cols; > > dict_col_meta_t* columns; > > > ulint n_foreign; > > > > ulint n_referenced; > > > >}; ># 1746 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >dberr_t >dict_table_schema_check( > > dict_table_schema_t* req_schema, > > char* errstr, > > > > size_t errstr_sz) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >void >dict_fs2utf8( > > const char* db_and_table, > > char* db_utf8, > size_t db_utf8_size, > char* table_utf8, > size_t table_utf8_size) > __attribute__((nonnull)); > > >void >dict_resize(); > > > >void >dict_close(void); > > > > > >static inline >ulint >dict_table_is_corrupted( > > const dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > > >void >dict_set_corrupted( > > dict_index_t* index, > trx_t* trx, > const char* ctx) > __attribute__((cold)) __attribute__((nonnull)); > > > > > >void >dict_set_corrupted_index_cache_only( > dict_index_t* index); > > > > > >ulint >dict_set_corrupted_by_space( > > ulint space_id); > > > > >__attribute__((visibility ("hidden"))) >void >dict_set_encrypted_by_space( > ulint space_id); > > > > >void >dict_index_set_merge_threshold( > dict_index_t* index, > ulint merge_threshold); ># 1850 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >bool >dict_tf_is_valid( > ulint flags); > > > > > > >static inline >bool >dict_tf2_is_valid( > ulint flags, > ulint flags2); > > > > >static inline >bool >dict_table_is_discarded( > > const dict_table_t* table) > __attribute__((warn_unused_result)); > > > > > > >void >dict_index_zip_success( > > dict_index_t* index) > __attribute__((nonnull)); > > > >void >dict_index_zip_failure( > > dict_index_t* index) > __attribute__((nonnull)); > > > >ulint >dict_index_zip_pad_optimal_page_size( > > dict_index_t* index) > > __attribute__((nonnull, warn_unused_result)); > > > >const char* >dict_tf_to_row_format_string( > > ulint table_flag); ># 1919 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" >static inline >ulint >dict_table_encode_n_col( > ulint n_col, > ulint n_v_col); > > > > > >static inline >void >dict_table_decode_n_col( > ulint encoded, > ulint* n_col, > ulint* n_v_col); > > > > >__attribute__((visibility ("hidden"))) >ulint >dict_sys_get_size(); > > > > >bool >dict_space_is_empty( > ulint space_id); > > > > >ulint >dict_space_get_id( > const char* name); > > > >static inline >void >dict_free_vc_templ( > dict_vcol_templ_t* vc_templ); > > > > >static inline >bool >dict_table_have_virtual_index( > dict_table_t* table); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0sysspace.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0sysspace.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0space.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0space.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" >enum device_t { > SRV_NOT_RAW = 0, > SRV_NEW_RAW, > > SRV_OLD_RAW >}; > > >class Datafile { > > friend class Tablespace; > friend class SysTablespace; > >public: > > Datafile() > : > m_name(), > m_filepath(), > m_filename(), > m_handle(), > m_open_flags(OS_FILE_OPEN), > m_size(), > m_order(), > m_type(SRV_NOT_RAW), > m_space_id(((ulint)(-1))), > m_flags(), > m_exists(), > m_is_valid(), > m_first_page_buf(), > m_first_page(), > m_last_os_error(), > m_file_info() > { > > } > > Datafile(const char* name, ulint flags, ulint size, ulint order) > : > m_name(mem_strdup(name)), > m_filepath(), > m_filename(), > m_handle(), > m_open_flags(OS_FILE_OPEN), > m_size(size), > m_order(order), > m_type(SRV_NOT_RAW), > m_space_id(((ulint)(-1))), > m_flags(flags), > m_exists(), > m_is_valid(), > m_first_page_buf(), > m_first_page(), > m_last_os_error(), > m_file_info() > { > do { } while(0); > > } > > Datafile(const Datafile& file) > : > m_handle(file.m_handle), > m_open_flags(file.m_open_flags), > m_size(file.m_size), > m_order(file.m_order), > m_type(file.m_type), > m_space_id(file.m_space_id), > m_flags(file.m_flags), > m_exists(file.m_exists), > m_is_valid(file.m_is_valid), > m_first_page_buf(), > m_first_page(), > m_last_os_error(), > m_file_info() > { > m_name = mem_strdup(file.m_name); > do { } while(0); > > if (file.m_filepath != __null) { > m_filepath = mem_strdup(file.m_filepath); > do { if (__builtin_expect(!(ulint) (m_filepath != __null), (0))) { ut_dbg_assertion_failed("m_filepath != NULL", "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h", 116); } } while (0); > set_filename(); > } else { > m_filepath = __null; > m_filename = __null; > } > } > > virtual ~Datafile() > { > shutdown(); > } > > Datafile& operator=(const Datafile& file) > { > do { if (__builtin_expect(!(ulint) (this != &file), (0))) { ut_dbg_assertion_failed("this != &file", "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h", 131); } } while (0); > > do { } while(0); > m_name = mem_strdup(file.m_name); > do { if (__builtin_expect(!(ulint) (m_name != __null), (0))) { ut_dbg_assertion_failed("m_name != NULL", "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h", 135); } } while (0); > > m_size = file.m_size; > m_order = file.m_order; > m_type = file.m_type; > > do { if (__builtin_expect(!(ulint) (m_handle == OS_FILE_CLOSED), (0))) { ut_dbg_assertion_failed("m_handle == OS_FILE_CLOSED", "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h", 141); } } while (0); > m_handle = file.m_handle; > > m_exists = file.m_exists; > m_is_valid = file.m_is_valid; > m_open_flags = file.m_open_flags; > m_space_id = file.m_space_id; > m_flags = file.m_flags; > m_last_os_error = 0; > > if (m_filepath != __null) { > ::free(m_filepath); > m_filepath = __null; > m_filename = __null; > } > > if (file.m_filepath != __null) { > m_filepath = mem_strdup(file.m_filepath); > do { if (__builtin_expect(!(ulint) (m_filepath != __null), (0))) { ut_dbg_assertion_failed("m_filepath != NULL", "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h", 159); } } while (0); > set_filename(); > } > > > > m_first_page_buf = __null; > m_first_page = __null; > > return(*this); > } > > > > > void init(const char* name, ulint flags); > > > virtual void shutdown(); > > > > > > virtual dberr_t open_read_only(bool strict); > > > > > > > virtual dberr_t open_read_write(bool read_only_mode) > __attribute__((warn_unused_result)); > > > void init_file_info(); > > > > dberr_t close(); ># 207 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" > void make_filepath( > const char* dirpath, > const char* filename, > ib_extention ext); > > > void set_filepath(const char* filepath); > > > > > > > void set_name(const char* name); ># 229 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" > dberr_t validate_to_dd(ulint space_id, ulint flags) > __attribute__((warn_unused_result)); ># 240 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" > dberr_t validate_for_recovery() > __attribute__((warn_unused_result)); ># 251 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" > dberr_t validate_first_page(lsn_t* flush_lsn) > __attribute__((warn_unused_result)); > > > > const char* name() const > { > return(m_name); > } > > > > const char* filepath() const > { > return(m_filepath); > } > > > > pfs_os_file_t handle() const > { > return(m_handle); > } > > > > ulint order() const > { > return(m_order); > } > > > > ulint space_id() const > { > return(m_space_id); > } > > > > ulint flags() const > { > return(m_flags); > } > > > > bool is_open() const > { > return(m_handle != OS_FILE_CLOSED); > } > > > > bool is_valid() const > { > return(m_is_valid); > } > > > > ulint last_os_error() const > { > return(m_last_os_error); > } > > > > bool is_empty_file() const > { > > > > > > > > return (m_file_info.st_size == 0); > > } > > > > bool exists() const { return m_exists; } > > > > > > > > bool same_filepath_as(const char* other) const; > > > > > bool same_as(const Datafile& other) const; > > > > > const byte* get_first_page() const { return(m_first_page); } > >private: > > void free_filepath(); > > > > void set_filename() > { > if (m_filepath == __null) { > return; > } > > char* last_slash = strrchr(m_filepath, '/'); > > m_filename = last_slash ? last_slash + 1 : m_filepath; > } > > > > > > dberr_t open_or_create(bool read_only_mode) > __attribute__((warn_unused_result)); > > > > > > > dberr_t read_first_page(bool read_only_mode) > __attribute__((warn_unused_result)); > > > void free_first_page(); > > > > void set_open_flags(os_file_create_t open_flags) > { > m_open_flags = open_flags; > }; > > > > bool is_raw_device() > { > return(m_type != SRV_NOT_RAW); > } > > > > > > > > char* m_name; > >protected: > > char* m_filepath; > >private: > > > > > dberr_t find_space_id(); > > > > > bool restore_from_doublewrite(); > > > char* m_filename; > > > pfs_os_file_t m_handle; > > > os_file_create_t m_open_flags; > > > ulint m_size; > > > ulint m_order; > > > device_t m_type; > > > > > ulint m_space_id; > > > > > ulint m_flags; > > > bool m_exists; > > > bool m_is_valid; > > > byte* m_first_page_buf; > > > byte* m_first_page; > >protected: > > ulint m_last_os_error; > >public: > > > > > > > struct stat m_file_info; > >}; > > > >class RemoteDatafile : public Datafile >{ >private: > > char* m_link_filepath; > >public: > > RemoteDatafile() > : > m_link_filepath() > { > > } > > RemoteDatafile(const char* name, ulint size, ulint order) > : > m_link_filepath() > { > > } > > ~RemoteDatafile() > { > shutdown(); > } > > > void shutdown(); > > > > const char* link_filepath() const > { > return(m_link_filepath); > } > > > > > > void set_link_filepath(const char* path); > > > > > > dberr_t open_link_file(); > > > void delete_link_file(void); > > > > > > dberr_t open_read_only(bool strict); > > > > > > > > dberr_t open_read_write(bool read_only_mode) > __attribute__((warn_unused_result)); ># 562 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" > static dberr_t create_link_file( > const char* name, > const char* filepath); > > > > static void delete_link_file(const char* name); ># 577 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0file.h" > static char* read_link_file( > const char* link_filepath); >}; ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0space.h" 2 > > > > > > > >class Tablespace { > >public: > typedef std::vector<Datafile, ut_allocator<Datafile> > files_t; > > > files_t m_files; > > typedef files_t::iterator iterator; > > typedef files_t::const_iterator const_iterator; > > Tablespace() > : > m_files(), > m_name(), > m_space_id(((ulint)(-1))), > m_path(), > m_flags(), > m_ignore_read_only(false) > { > > } > > virtual ~Tablespace() > { > shutdown(); > do { } while(0); > do { } while(0); > } > > > Tablespace(const Tablespace&); > Tablespace& operator=(const Tablespace&); > > > const_iterator begin() const { return m_files.begin(); } > > const_iterator end() const { return m_files.end(); } > > iterator begin() { return m_files.begin(); } > > iterator end() { return m_files.end(); } > > void set_name(const char* name) { m_name = name; } > const char* name() const { return m_name; } > > > > > void set_path(const char* path, size_t len) > { > do { } while(0); > m_path = mem_strdupl(path, len); > do { } while(0); > > os_normalize_path(m_path); > } > > > > void set_path(const char* path) > { > set_path(path, strlen(path)); > } > > > > const char* path() const > { > return(m_path); > } > > > > void set_space_id(ulint space_id) > { > do { } while(0); > m_space_id = space_id; > } > > > > ulint space_id() const > { > return(m_space_id); > } > > > > void set_flags(ulint fsp_flags) > { > do { } while(0); > m_flags = fsp_flags; > } > > > > ulint flags() const > { > return(m_flags); > } > > > > fil_encryption_t encryption_mode() const > { > return (m_mode); > } > > > > uint32_t key_id() const > { > return (m_key_id); > } > > > > void set_ignore_read_only(bool read_only_status) > { > m_ignore_read_only = read_only_status; > } > > > void shutdown(); > > > ulint get_sum_of_sizes() const > { > ulint sum = 0; > > for (const_iterator it = begin(); it != end(); ++it) { > sum += it->m_size; > } > > return(sum); > } > > > > > dberr_t open_or_create(bool is_temp) > __attribute__((warn_unused_result)); > > > void delete_files(); > > > > > bool intersection(const Tablespace* other_space); ># 199 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0space.h" > dberr_t add_datafile( > const char* datafile_path); > > > > Datafile* first_datafile() > { > do { if (__builtin_expect(!(ulint) (!m_files.empty()), (0))) { ut_dbg_assertion_failed("!m_files.empty()", "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0space.h", 206); } } while (0); > return(&m_files.front()); > } >private: > > > > bool find(const char* filename) const; > > > > void file_found(Datafile& file); > > > > > const char* m_name; > > > ulint m_space_id; > > > char* m_path; > > > ulint m_flags; > > > fil_encryption_t m_mode; > uint32_t m_key_id; > >protected: > > bool m_ignore_read_only; >}; ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0sysspace.h" 2 > > > >extern ulong sys_tablespace_auto_extend_increment; ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/fsp0sysspace.h" >class SysTablespace : public Tablespace >{ >public: > > SysTablespace() > : > m_auto_extend_last_file(), > m_last_file_size_max(), > m_created_new_raw(), > m_is_tablespace_full(false), > m_sanity_checks_done(false) > { > > } > > ~SysTablespace() > { > shutdown(); > } > > > > void set_tablespace_full_status(bool is_full) > { > m_is_tablespace_full = is_full; > } > > > > bool get_tablespace_full_status() > { > return(m_is_tablespace_full); > } > > > > void set_sanity_check_status(bool status) > { > m_sanity_checks_done = status; > } > > > > bool get_sanity_check_status() > { > return(m_sanity_checks_done); > } > > > > > > bool parse_params(const char* filepath, bool supports_raw); > > > > > > > > dberr_t check_file_spec( > bool* create_new_db, > ulint min_expected_tablespace_size); > > > void shutdown(); > > > void normalize(); > > > > bool created_new_raw() const > { > return(m_created_new_raw); > } > > > > ulint can_auto_extend_last_file() const > { > return(m_auto_extend_last_file); > } > > > > void set_last_file_size(ulint size) > { > do { } while(0); > m_files.back().m_size = size; > } > > > > ulint last_file_size() const > { > do { } while(0); > return(m_files.back().m_size); > } > > > > ulint get_autoextend_increment() const > { > return(sys_tablespace_auto_extend_increment > * ((1024 * 1024) / ((ulint) srv_page_size))); > } > > > > ulint get_increment() const; > > > > > > > > dberr_t open_or_create( > bool is_temp, > bool create_new_db, > ulint* sum_new_sizes, > lsn_t* flush_lsn) > __attribute__((warn_unused_result)); > >private: > > > > dberr_t read_lsn_and_check_flags(lsn_t* flushed_lsn); > > > > bool is_valid_size() const > { > return(m_last_file_size_max >= last_file_size()); > } > > > > bool has_raw_device(); > > > > > > dberr_t file_not_found(Datafile& file, bool* create_new_db); > > > > > bool file_found(Datafile& file); > > > > > dberr_t create(Datafile& file); > > > > > dberr_t create_file(Datafile& file); > > > > > dberr_t open_file(Datafile& file); > > > > > dberr_t set_size(Datafile& file); > > > > > > > static char* parse_units(char* ptr, ulint* megs); > >private: > enum file_status_t { > FILE_STATUS_VOID = 0, > FILE_STATUS_RW_PERMISSION_ERROR, > FILE_STATUS_READ_WRITE_ERROR, > FILE_STATUS_NOT_REGULAR_FILE_ERROR > }; > > > > > dberr_t check_size(Datafile& file); > > > > > > dberr_t check_file_status( > const Datafile& file, > file_status_t& reason); > > > > > bool m_auto_extend_last_file; > > > > ulint m_last_file_size_max; > > > > > bool m_created_new_raw; > > > bool m_is_tablespace_full; > > > bool m_sanity_checks_done; >}; > > > > >extern SysTablespace srv_sys_space; > > >extern SysTablespace srv_tmp_space; > > > > >static inline >bool >is_system_tablespace(ulint id) >{ > return(id == TRX_SYS_SPACE || id == 0xFFFFFFFEU); >} > > > >static inline >bool >is_predefined_tablespace( > ulint id) >{ > do { } while(0); > do { } while(0); > return(id == TRX_SYS_SPACE > || id == 0xFFFFFFFEU > || srv_is_undo_tablespace(id)); >} ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" 2 > > > > >static inline >ulint >dict_col_get_mbminlen( > > const dict_col_t* col) >{ > return col->mbminlen; >} > > > >static inline >ulint >dict_col_get_mbmaxlen( > > const dict_col_t* col) >{ > return col->mbmaxlen; >} > > >static inline >void >dict_col_copy_type( > > const dict_col_t* col, > dtype_t* type) >{ > do { } while(0); > do { } while(0); > > type->mtype = col->mtype; > type->prtype = col->prtype; > type->len = col->len; > type->mbminlen = col->mbminlen; > type->mbmaxlen = col->mbmaxlen; >} ># 94 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_col_get_min_size( > > const dict_col_t* col) >{ > return(dtype_get_min_size_low(col->mtype, col->prtype, col->len, > col->mbminlen, col->mbmaxlen)); >} > > > >static inline >ulint >dict_col_get_max_size( > > const dict_col_t* col) >{ > return(dtype_get_max_size_low(col->mtype, col->len)); >} > > > >static inline >ulint >dict_col_get_fixed_size( > > const dict_col_t* col, > ulint comp) >{ > return(dtype_get_fixed_size_low(col->mtype, col->prtype, col->len, > col->mbminlen, col->mbmaxlen, comp)); >} > > > > >static inline >ulint >dict_col_get_sql_null_size( > > const dict_col_t* col, > ulint comp) >{ > return(dict_col_get_fixed_size(col, comp)); >} > > > > >static inline >ulint >dict_col_get_no( > > const dict_col_t* col) >{ > return(col->ind); >} > > > >static inline >ulint >dict_col_get_clust_pos( > > const dict_col_t* col, > const dict_index_t* clust_index) >{ > ulint i; > > do { } while(0); > > for (i = 0; i < clust_index->n_def; i++) { > const dict_field_t* field = &clust_index->fields[i]; > > if (!field->prefix_len && field->col == col) { > return(i); > } > } > > return(((ulint)(-1))); >} > > > > > >static inline >ulint >dict_col_get_index_pos( > const dict_col_t* col, > const dict_index_t* index) >{ > ulint i; > > for (i = 0; i < index->n_def; i++) { > const dict_field_t* field = &index->fields[i]; > > if (!field->prefix_len && field->col == col) { > return(i); > } > } > > return(((ulint)(-1))); >} ># 246 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_index_is_clust( > > const dict_index_t* index) >{ > do { } while(0); > return(index->type & 1); >} > > > > > >static inline >bool >dict_index_is_auto_gen_clust( > const dict_index_t* index) >{ > return(index->type == 1); >} > > > > >static inline >ulint >dict_index_is_unique( > > const dict_index_t* index) >{ > do { } while(0); > return(index->type & 2); >} > > > > >static inline >ulint >dict_index_is_spatial( > > const dict_index_t* index) >{ > do { } while(0); > return(index->type & 64); >} > > > > >static inline >ulint >dict_index_is_ibuf( > > const dict_index_t* index) >{ > do { } while(0); > return(index->type & 8); >} > > > > >static inline >ulint >dict_index_is_sec_or_ibuf( > > const dict_index_t* index) >{ > do { } while(0); > return((index->type & (1 | 8)) != 1); >} > > > > > > >static inline >ulint >dict_table_get_n_user_cols( > > const dict_table_t* table) >{ > do { } while(0); > return(table->n_cols - 3); >} > > > > > >static inline >ulint >dict_table_get_n_cols( > > const dict_table_t* table) >{ > do { } while(0); > return(table->n_cols); >} > > > > >static inline >ulint >dict_table_get_n_v_cols( > const dict_table_t* table) >{ > do { } while(0); > do { } while(0); > > return(table->n_v_cols); >} > > > > >static inline >bool >dict_table_has_indexed_v_cols( > const dict_table_t* table) >{ > > for (ulint i = 0; i < table->n_v_cols; i++) { > const dict_v_col_t* col = (&(table)->v_cols[i]); > if (col->m_col.ord_part) { > return(true); > } > } > > return(false); >} > > > > >static inline >ib_uint64_t >dict_table_get_n_rows( > > const dict_table_t* table) >{ > do { } while(0); > > return(table->stat_n_rows); >} > > > > > >static inline >void >dict_table_n_rows_inc( > > dict_table_t* table) >{ > if (table->stat_initialized) { > ib_uint64_t n_rows = table->stat_n_rows; > if (n_rows < 0xFFFFFFFFFFFFFFFFULL) { > table->stat_n_rows = n_rows + 1; > } > } >} > > > > > >static inline >void >dict_table_n_rows_dec( > > dict_table_t* table) >{ > if (table->stat_initialized) { > ib_uint64_t n_rows = table->stat_n_rows; > if (n_rows > 0) { > table->stat_n_rows = n_rows - 1; > } > } >} ># 493 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_table_get_sys_col_no( > > const dict_table_t* table, > ulint sys) >{ > do { } while(0); > do { } while(0); > return table->n_cols + (sys - 3); >} > > > > >static inline >ulint >dict_table_is_comp( > > const dict_table_t* table) >{ > do { } while(0); > > > > > > return(table->flags & 1); >} > > > >static inline >ulint >dict_table_has_fts_index( > > > dict_table_t* table) >{ > return((table->flags2 & (4U))); >} > > > > >inline >bool >dict_tf_is_valid_not_redundant(ulint flags) >{ > const bool atomic_blobs = ((flags & ((~(~0U << 1)) << ((0 + 1) + 4))) >> ((0 + 1) + 4)); > > ulint zip_ssize = ((flags & ((~(~0U << 4)) << (0 + 1))) >> (0 + 1)); > > if (!zip_ssize) { > > } else if (!atomic_blobs) { > > > return(false); > } else if (zip_ssize > (14 - 10 + 1) > || zip_ssize > srv_page_size_shift > || srv_page_size_shift > 14) { > > > > return(false); > } > > switch (((flags & ((~(~0U << 4)) << (((((0 + 1) + 4) + 1) + 1) + 1))) >> (((((0 + 1) + 4) + 1) + 1) + 1))) { > case 0: > > return(!((flags & ((~(~0U << 1)) << ((((0 + 1) + 4) + 1) + 1))) >> ((((0 + 1) + 4) + 1) + 1))); > case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: > > > > > return(!zip_ssize && ((flags & ((~(~0U << 1)) << ((((0 + 1) + 4) + 1) + 1))) >> ((((0 + 1) + 4) + 1) + 1))); > default: > > return(false); > } >} > > > > >static inline >bool >dict_tf_is_valid( > ulint flags) >{ > do { } while(0); > > > flags &= ~((~(~0U << 1)) << (((0 + 1) + 4) + 1)); > if (!(flags & 1)) { > > > > > return(flags == 0); > } > > return(dict_tf_is_valid_not_redundant(flags)); >} > > > > > > >static inline >bool >dict_tf2_is_valid( > ulint flags, > ulint flags2) >{ > if (!dict_tf_is_valid(flags)) { > return(false); > } > > if ((flags2 & (~0U << 7)) != 0) { > return(false); > } > > return(true); >} > > > > > > >static inline >rec_format_t >dict_tf_get_rec_format( > > ulint flags) >{ > do { if (__builtin_expect(!(ulint) (dict_tf_is_valid(flags)), (0))) { ut_dbg_assertion_failed("dict_tf_is_valid(flags)", "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic", 633); } } while (0); > > if (!((flags & ((~(~0U << 1)) << 0)) >> 0)) { > return(REC_FORMAT_REDUNDANT); > } > > if (!((flags & ((~(~0U << 1)) << ((0 + 1) + 4))) >> ((0 + 1) + 4))) { > return(REC_FORMAT_COMPACT); > } > > if (((flags & ((~(~0U << 4)) << (0 + 1))) >> (0 + 1))) { > return(REC_FORMAT_COMPRESSED); > } > > return(REC_FORMAT_DYNAMIC); >} > > > > >static inline >ulint >dict_tf_get_format( > > ulint flags) >{ > if (((flags & ((~(~0U << 1)) << ((0 + 1) + 4))) >> ((0 + 1) + 4))) { > return(UNIV_FORMAT_B); > } > > return(UNIV_FORMAT_A); >} > > > > >static inline >ulint >dict_table_get_format( > > const dict_table_t* table) >{ > do { } while(0); > > return(dict_tf_get_format(table->flags)); >} ># 688 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >void >dict_tf_set( > > ulint* flags, > rec_format_t format, > ulint zip_ssize, > bool use_data_dir, > bool page_compressed, > ulint page_compression_level, > ulint not_used) >{ > *flags = use_data_dir ? 1 << (((0 + 1) + 4) + 1) : 0; > > switch (format) { > case REC_FORMAT_REDUNDANT: > do { } while(0); > > do { } while(0); > return; > case REC_FORMAT_COMPACT: > *flags |= 1; > do { } while(0); > break; > case REC_FORMAT_COMPRESSED: > *flags |= 1 > | (1 << ((0 + 1) + 4)) > | (zip_ssize << (0 + 1)); > break; > case REC_FORMAT_DYNAMIC: > *flags |= 1 > | (1 << ((0 + 1) + 4)); > do { } while(0); > break; > } > > if (page_compressed) { > *flags |= (1 << ((0 + 1) + 4)) > | (1 << ((((0 + 1) + 4) + 1) + 1)) > | (page_compression_level << (((((0 + 1) + 4) + 1) + 1) + 1)); > > do { } while(0); > do { } while(0); > do { } while(0); > } >} ># 747 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_tf_to_fsp_flags(ulint table_flags) >{ > ulint fsp_flags; > ulint page_compression_level = ((table_flags & ((~(~0U << 4)) << (((((0 + 1) + 4) + 1) + 1) + 1))) >> (((((0 + 1) + 4) + 1) + 1) + 1)) > ; > > do { } while(0) > ; > > do { } while(0) > ; > > > fsp_flags = ((table_flags & ((~(~0U << 1)) << ((0 + 1) + 4))) >> ((0 + 1) + 4)) ? 1 : 0; > > > fsp_flags |= table_flags > & (((~(~0U << 4)) << (0 + 1)) | ((~(~0U << 1)) << ((0 + 1) + 4))); > > fsp_flags |= ((((ulint) srv_page_size) == (1U << 14)) ? 0 : (srv_page_size_shift - 10 + 1) << (((0 + 1) + 4) + 1)); > > if (page_compression_level) { > fsp_flags |= ((~(~0U << 1)) << (((((0 + 1) + 4) + 1) + 4) + 6)); > } > > do { if (__builtin_expect(!(ulint) (fsp_flags_is_valid(fsp_flags, false)), (0))) { ut_dbg_assertion_failed("fsp_flags_is_valid(fsp_flags, false)", "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic", 774); } } while (0); > > if (((table_flags & ((~(~0U << 1)) << (((0 + 1) + 4) + 1))) >> (((0 + 1) + 4) + 1))) { > fsp_flags |= 1U << 27; > } > > fsp_flags |= page_compression_level << 28; > > return(fsp_flags); >} ># 795 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_tf_to_sys_tables_type( > > ulint flags) >{ > ulint type; > > do { if (__builtin_expect(!(ulint) (dict_tf_is_valid(flags)), (0))) { ut_dbg_assertion_failed("dict_tf_is_valid(flags)", "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic", 803); } } while (0); > > > type = 1; > > > > type |= flags & (((~(~0U << 4)) << (0 + 1)) > | ((~(~0U << 1)) << ((0 + 1) + 4)) > | ((~(~0U << 1)) << (((0 + 1) + 4) + 1)) > | ((~(~0U << 1)) << ((((0 + 1) + 4) + 1) + 1)) > | ((~(~0U << 4)) << (((((0 + 1) + 4) + 1) + 1) + 1))); > > return(type); >} > > > > > >static inline >const page_size_t >dict_tf_get_page_size( > ulint flags) >{ > const ulint zip_ssize = ((flags & ((~(~0U << 4)) << (0 + 1))) >> (0 + 1)); > > if (zip_ssize == 0) { > return(univ_page_size); > } > > const ulint zip_size = ((1U << 10) >> 1) << zip_ssize; > > do { } while(0); > > return(page_size_t(zip_size, univ_page_size.logical(), true)); >} > > > > > >static inline >const page_size_t >dict_table_page_size( > const dict_table_t* table) >{ > do { } while(0); > > return(dict_tf_get_page_size(table->flags)); >} > > > > > >static inline >void >dict_table_x_lock_indexes( > > dict_table_t* table) >{ > dict_index_t* index; > > do { } while(0); > > > for (index = ((table)->indexes).start; > index != __null; > index = (((index)->indexes).next)) { > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic", 873); > } >} > > > > > > >static inline >bool >dict_fts_index_syncing( > dict_table_t* table) >{ > dict_index_t* index; > > for (index = ((table)->indexes).start; > index != __null; > index = (((index)->indexes).next)) { > if (index->index_fts_syncing) { > return(true); > } > } > return(false); >} > > >static inline >void >dict_table_x_unlock_indexes( > > dict_table_t* table) >{ > dict_index_t* index; > > do { } while(0); > > for (index = ((table)->indexes).start; > index != __null; > index = (((index)->indexes).next)) { > rw_lock_x_unlock_func(dict_index_get_lock(index)); > } >} > > > > > >static inline >ulint >dict_index_get_n_fields( > > const dict_index_t* index) > > >{ > do { } while(0); > return(index->n_fields); >} > > > > > > > >static inline >ulint >dict_index_get_n_unique( > > const dict_index_t* index) > >{ > do { } while(0); > do { } while(0); > return(index->n_uniq); >} > > > > > > >static inline >ulint >dict_index_get_n_unique_in_tree( > > const dict_index_t* index) > >{ > do { } while(0); > do { } while(0); > > if (dict_index_is_clust(index)) { > > return(dict_index_get_n_unique(index)); > } > > return(dict_index_get_n_fields(index)); >} ># 981 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_index_get_n_unique_in_tree_nonleaf( > const dict_index_t* index) >{ > do { } while(0); > do { } while(0); > > if (dict_index_is_spatial(index)) { > > > > return(1); > } else { > return(dict_index_get_n_unique_in_tree(index)); > } >} > > > > > > > >static inline >ulint >dict_index_get_n_ordering_defined_by_user( > > const dict_index_t* index) > >{ > return(index->n_user_defined_cols); >} ># 1036 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >ulint >dict_index_get_sys_col_pos( > > const dict_index_t* index, > ulint type) >{ > do { } while(0); > do { } while(0); > > if (dict_index_is_clust(index)) { > > return(dict_col_get_clust_pos( > &(index->table)->cols[(index->table)->n_cols + (type) - 3], > index)); > } > > return(dict_index_get_nth_col_pos( > index, dict_table_get_sys_col_no(index->table, type), __null)); >} > > > > >static inline >const dict_col_t* >dict_field_get_col( > > const dict_field_t* field) >{ > return(field->col); >} > > > > >static inline >const dict_col_t* >dict_index_get_nth_col( > > const dict_index_t* index, > ulint pos) >{ > return(dict_field_get_col(((index)->fields + (pos)))); >} > > > > >static inline >ulint >dict_index_get_nth_col_no( > > const dict_index_t* index, > ulint pos) >{ > return(dict_col_get_no(dict_index_get_nth_col(index, pos))); >} > > > > > >static inline >ulint >dict_index_get_nth_col_pos( > > const dict_index_t* index, > ulint n, > ulint* prefix_col_pos) >{ > return(dict_index_get_nth_col_or_prefix_pos(index, n, false, false, > prefix_col_pos)); >} > > > > >static inline >ulint >dict_index_get_min_size( > > const dict_index_t* index) >{ > ulint n = dict_index_get_n_fields(index); > ulint size = 0; > > while (n--) { > size += dict_col_get_min_size(dict_index_get_nth_col(index, > n)); > } > > return(size); >} > > > > >static inline >ulint >dict_index_get_space( > > const dict_index_t* index) >{ > do { } while(0); > do { } while(0); > > return(index->space); >} > > > >static inline >void >dict_index_set_space( > > dict_index_t* index, > ulint space) >{ > do { } while(0); > do { } while(0); > > index->space = unsigned(space); >} > > > > >static inline >ulint >dict_index_get_page( > > const dict_index_t* index) >{ > do { } while(0); > > return(index->page); >} > > > > >static inline >rw_lock_t* >dict_index_get_lock( > > dict_index_t* index) >{ > do { } while(0); > > return(&(index->lock)); >} > > > > > > >static inline >ulint >dict_index_get_space_reserve(void) > >{ > return(((ulint) srv_page_size) / 16); >} > > > > >static inline >enum online_index_status >dict_index_get_online_status( > > const dict_index_t* index) >{ > enum online_index_status status; > > status = (enum online_index_status) index->online_status; ># 1232 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" > return(status); >} > > > >static inline >void >dict_index_set_online_status( > > dict_index_t* index, > enum online_index_status status) >{ > do { } while(0); > do { } while(0); ># 1260 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" > index->online_status = status; > do { } while(0); >} ># 1272 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >bool >dict_index_is_online_ddl( > > const dict_index_t* index) >{ ># 1294 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" > return(__builtin_expect(dict_index_get_online_status(index) != ONLINE_INDEX_COMPLETE, (0)) > ); >} > > > > >static inline >ulint >dict_table_is_fts_column( > > ib_vector_t* indexes, > ulint col_no, > bool is_virtual) > >{ > ulint i; > > for (i = 0; i < ib_vector_size(indexes); ++i) { > dict_index_t* index; > > index = (dict_index_t*) (*(void**) ib_vector_get(indexes, i)); > > if (dict_index_contains_col_or_prefix( > index, col_no, is_virtual)) { > > return(i); > } > } > > return(((ulint)(-1))); >} > > > > > > >static inline >ulint >dict_max_field_len_store_undo( > > dict_table_t* table, > const dict_col_t* col) > >{ > ulint prefix_len = 0; > > if (dict_table_get_format(table) >= UNIV_FORMAT_B) > { > prefix_len = col->max_prefix > ? col->max_prefix > : ((dict_table_get_format(table) < UNIV_FORMAT_B) ? (768 - 1) : 3072); > } > > return(prefix_len); >} > > > > > > >static inline >ulint >dict_max_v_field_len_store_undo( > dict_table_t* table, > ulint col_no) >{ > const dict_col_t* col > = &(&(table)->v_cols[col_no])->m_col; > ulint max_log_len; > > > > > > > if (dict_table_get_format(table) >= UNIV_FORMAT_B) { > if ((((col)->len) > 255 || (((col)->mtype) == 5 || ((col)->mtype) == 14)) && col->max_prefix > 0) { > max_log_len = col->max_prefix; > } else { > max_log_len = ((dict_table_get_format(table) < UNIV_FORMAT_B) ? (768 - 1) : 3072); > } > } else { > max_log_len = 768; > } > > return(max_log_len); >} > > > > >static inline >void >dict_table_prevent_eviction( > > dict_table_t* table) >{ > do { } while(0); > if (table->can_be_evicted) { > dict_table_move_from_lru_to_non_lru(table); > } >} > > > > >static inline >ulint >dict_table_is_corrupted( > > const dict_table_t* table) >{ > do { } while(0); > return(table->corrupted); >} > > > > >static inline >bool >dict_table_is_discarded( > > const dict_table_t* table) >{ > return((table->flags2 & (32U))); >} ># 1441 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.ic" >static inline >bool >dict_table_is_file_per_table( > const dict_table_t* table) >{ > return !is_system_tablespace(table->space); >} > > >inline >void >dict_table_t::acquire() >{ > do { } while(0); > __atomic_fetch_add((&n_ref_count), (1), (0)); >} > > > >inline >bool >dict_table_t::release() >{ > int32 n = __atomic_fetch_add((&n_ref_count), (-1), (0)) > ; > do { } while(0); > return n == 1; >} > > > > > > > >static inline >ulint >dict_table_encode_n_col( > ulint n_col, > ulint n_v_col) >{ > return(n_col + (n_v_col<<16)); >} > > > > > >static inline >void >dict_table_decode_n_col( > ulint encoded, > ulint* n_col, > ulint* n_v_col) >{ > > ulint num = encoded & ~0x80000000UL; > *n_v_col = num >> 16; > *n_col = num & 0xFFFF; >} > > > >void >dict_free_vc_templ( > dict_vcol_templ_t* vc_templ) >{ > ::delete[] vc_templ->default_rec; > vc_templ->default_rec = __null; > > if (vc_templ->vtempl != __null) { > do { } while(0); > for (ulint i = 0; i < vc_templ->n_col > + vc_templ->n_v_col; i++) { > if (vc_templ->vtempl[i] != __null) { > ::free(vc_templ->vtempl[i]); > } > } > ::free(vc_templ->vtempl); > vc_templ->vtempl = __null; > } >} > > > > >static inline >bool >dict_table_have_virtual_index( > dict_table_t* table) >{ > for (ulint col_no = 0; col_no < dict_table_get_n_v_cols(table); > col_no++) { > const dict_v_col_t* col > = (&(table)->v_cols[col_no]); > > if (col->m_col.ord_part) { > return(true); > } > } > > return(false); >} ># 1973 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0dict.h" 2 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.ic" 2 > > > >static inline >void >row_log_abort_sec( > > dict_index_t* index) >{ > do { } while(0); > > do { } while(0); > dict_index_set_online_status(index, ONLINE_INDEX_ABORTED); > row_log_free(index->online_log); >} > > > > > > >static inline >bool >row_log_online_op_try( > > dict_index_t* index, > const dtuple_t* tuple, > trx_id_t trx_id) > >{ > > do { } while(0) > > ; > > switch (dict_index_get_online_status(index)) { > case ONLINE_INDEX_COMPLETE: > > > > return(false); > case ONLINE_INDEX_CREATION: > > > row_log_online_op(index, tuple, trx_id); > break; > case ONLINE_INDEX_ABORTED: > case ONLINE_INDEX_ABORTED_DROPPED: > > > > break; > } > > return(true); >} ># 256 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" 2 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" 1 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >typedef enum { > IBUF_OP_INSERT = 0, > IBUF_OP_DELETE_MARK = 1, > IBUF_OP_DELETE = 2, > > > IBUF_OP_COUNT = 3 >} ibuf_op_t; > > > > >typedef enum { > IBUF_USE_NONE = 0, > IBUF_USE_INSERT, > IBUF_USE_DELETE_MARK, > IBUF_USE_INSERT_DELETE_MARK, > IBUF_USE_DELETE, > IBUF_USE_ALL, > > IBUF_USE_COUNT >} ibuf_use_t; > > >extern ibuf_use_t ibuf_use; > > >extern ibuf_t* ibuf; ># 93 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >dberr_t >ibuf_init_at_db_start(void); > > > >void >ibuf_max_size_update( > > ulint new_val); > > > > >void >ibuf_update_max_tablespace_id(void); > > > >static inline >void >ibuf_mtr_start( > > mtr_t* mtr) > __attribute__((nonnull)); > > >static inline >void >ibuf_mtr_commit( > > mtr_t* mtr) > __attribute__((nonnull)); > > >void >ibuf_bitmap_page_init( > > buf_block_t* block, > mtr_t* mtr); ># 141 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >void >ibuf_reset_free_bits( > > buf_block_t* block); ># 160 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >static inline >void >ibuf_update_free_bits_if_full( > > buf_block_t* block, > > > > > ulint max_ins_size, > > > ulint increase); ># 183 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >void >ibuf_update_free_bits_low( > > const buf_block_t* block, > ulint max_ins_size, > > > > > mtr_t* mtr); ># 201 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >void >ibuf_update_free_bits_zip( > > buf_block_t* block, > mtr_t* mtr); > > > > > > > >void >ibuf_update_free_bits_for_two_pages_low( > > buf_block_t* block1, > buf_block_t* block2, > mtr_t* mtr); > > > >static inline >ulint >ibuf_should_try( > > dict_index_t* index, > ulint ignore_sec_unique); ># 238 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >static inline >ulint >ibuf_inside( > > const mtr_t* mtr) > __attribute__((warn_unused_result)); > > > > > >static inline >ulint >ibuf_bitmap_page( > const page_id_t page_id, > const page_size_t& page_size); ># 267 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >ulint >ibuf_page_low( > const page_id_t page_id, > const page_size_t& page_size, > > > > const char* file, > unsigned line, > mtr_t* mtr) > __attribute__((warn_unused_result)); ># 306 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >void >ibuf_free_excess_pages(void); ># 320 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >ulint >ibuf_insert( > ibuf_op_t op, > const dtuple_t* entry, > dict_index_t* index, > const page_id_t page_id, > const page_size_t& page_size, > que_thr_t* thr); > > > > > > > >__attribute__((cold)) void ibuf_delete_recs(const page_id_t page_id); ># 349 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" >void >ibuf_merge_or_delete_for_page( > buf_block_t* block, > const page_id_t page_id, > const page_size_t* page_size, > ulint update_ibuf_bitmap); > > > > > > >void >ibuf_delete_for_discarded_space( > > ulint space); > > > > > > > >ulint >ibuf_merge_in_background( > bool full); > > > > >ulint >ibuf_merge_space( > > ulint space); > > > > >byte* >ibuf_parse_bitmap_init( > > byte* ptr, > byte* end_ptr, > buf_block_t* block, > mtr_t* mtr); > > > > >bool >ibuf_is_empty(void); > > > >void >ibuf_print( > > FILE* file); > > > > >ulint >ibuf_rec_get_counter( > > const rec_t* rec); > > >void >ibuf_close(void); > > > > > >dberr_t >ibuf_check_bitmap_on_import( > > const trx_t* trx, > ulint space_id) > __attribute__((nonnull, warn_unused_result)); > > > > >void >ibuf_set_bitmap_for_bulk_load( > buf_block_t* block, > bool reset); ># 450 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" 1 ># 26 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" 1 ># 76 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >static const offset_t REC_1BYTE_SQL_NULL_MASK= 0x80; > >static const offset_t REC_2BYTE_SQL_NULL_MASK= 0x8000; > > > >static const offset_t REC_2BYTE_EXTERN_MASK= 0x4000; > >static const size_t RECORD_OFFSET= 2; >static const size_t INDEX_OFFSET= > RECORD_OFFSET + sizeof(rec_t *) / sizeof(offset_t); > > >static const size_t REC_OFFS_HEADER_SIZE= > > > > > 2; > > > >static const size_t REC_OFFS_NORMAL_SIZE= 300; >static const size_t REC_OFFS_SMALL_SIZE= 18; >static const size_t REC_OFFS_SEC_INDEX_SIZE= > 16 + 16 + > 1; > > > > >enum field_type_t >{ > > STORED_IN_RECORD= 0 << 14, > > STORED_OFFPAGE= 1 << 14, > > SQL_NULL= 2 << 14 >}; > > >static const offset_t DATA_MASK= 0x3fff; > >static const offset_t TYPE_MASK= ~DATA_MASK; >inline field_type_t get_type(offset_t n) >{ > return static_cast<field_type_t>(n & TYPE_MASK); >} >inline void set_type(offset_t &n, field_type_t type) >{ > n= (n & DATA_MASK) | static_cast<offset_t>(type); >} >inline offset_t get_value(offset_t n) { return n & DATA_MASK; } >inline offset_t combine(offset_t value, field_type_t type) >{ > return get_value(value) | static_cast<offset_t>(type); >} > > >static const offset_t REC_OFFS_COMPACT= 1 << 15; > >static const offset_t REC_OFFS_EXTERNAL= 1 << 14; > > > > > >static inline >const rec_t* >rec_get_next_ptr_const( > > const rec_t* rec, > ulint comp) > __attribute__((warn_unused_result)); > > > > >static inline >rec_t* >rec_get_next_ptr( > > rec_t* rec, > ulint comp) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_get_next_offs( > > const rec_t* rec, > ulint comp) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_set_next_offs_old( > > rec_t* rec, > ulint next) > __attribute__((nonnull)); > > > >static inline >void >rec_set_next_offs_new( > > rec_t* rec, > ulint next) > __attribute__((nonnull)); > > > > >static inline >ulint >rec_get_n_fields_old( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_get_n_fields( > > const rec_t* rec, > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > > > > > >static inline >bool >rec_n_fields_is_sane( > dict_index_t* index, > const rec_t* rec, > const dtuple_t* entry) > __attribute__((warn_unused_result)); > > > > > >static inline >ulint >rec_get_n_owned_old( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > >static inline >void >rec_set_n_owned_old( > > rec_t* rec, > ulint n_owned) > __attribute__((nonnull)); > > > > >static inline >ulint >rec_get_n_owned_new( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > >static inline >void >rec_set_n_owned_new( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint n_owned) > __attribute__((nonnull(1))); > > > > >static inline >ulint >rec_get_info_bits( > > const rec_t* rec, > ulint comp) > __attribute__((warn_unused_result)); > > >static inline >void >rec_set_info_bits_old( > > rec_t* rec, > ulint bits) > __attribute__((nonnull)); > > >static inline >void >rec_set_info_bits_new( > > rec_t* rec, > ulint bits) > __attribute__((nonnull)); > > > >static inline >ulint >rec_get_status( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_set_status( > > rec_t* rec, > ulint bits) > __attribute__((nonnull)); > > > > > >static inline >ulint >rec_get_info_and_status_bits( > > const rec_t* rec, > ulint comp) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_set_info_and_status_bits( > > rec_t* rec, > ulint bits) > __attribute__((nonnull)); > > > > >static inline >ulint >rec_get_deleted_flag( > > const rec_t* rec, > ulint comp) > __attribute__((warn_unused_result)); > > >static inline >void >rec_set_deleted_flag_old( > > rec_t* rec, > ulint flag) > __attribute__((nonnull)); > > >static inline >void >rec_set_deleted_flag_new( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint flag) > __attribute__((nonnull(1))); > > > >static inline >ulint >rec_get_node_ptr_flag( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_get_heap_no_old( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_set_heap_no_old( > > rec_t* rec, > ulint heap_no) > __attribute__((nonnull)); > > > > >static inline >ulint >rec_get_heap_no_new( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_set_heap_no_new( > > rec_t* rec, > ulint heap_no) > __attribute__((nonnull)); > > > > >static inline >ulint >rec_get_1byte_offs_flag( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_set_1byte_offs_flag( > > rec_t* rec, > ulint flag) > __attribute__((nonnull)); > > > > > > >static inline >uint8_t >rec_1_get_field_end_info( > > const rec_t* rec, > ulint n) > __attribute__((warn_unused_result)); > > > > > > > >static inline >offset_t >rec_2_get_field_end_info( > > const rec_t* rec, > ulint n) > __attribute__((warn_unused_result)); > > > > > >static inline >ulint >rec_2_is_field_extern( > > const rec_t* rec, > ulint n) > __attribute__((warn_unused_result)); > > > > > >ulint >rec_get_n_extern_new( > > const rec_t* rec, > const dict_index_t* index, > ulint n) > __attribute__((nonnull, warn_unused_result)); ># 499 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >offset_t* >rec_get_offsets_func( > const rec_t* rec, > const dict_index_t* index, > offset_t* offsets, > > > > ulint n_fields, > > > > > mem_heap_t** heap) > > > > __attribute__((nonnull(1,2,5),warn_unused_result)); ># 530 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >void >rec_get_offsets_reverse( > > const byte* extra, > > > > const dict_index_t* index, > ulint node_ptr, > > offset_t* offsets) > > __attribute__((nonnull)); ># 576 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >ulint >rec_get_nth_field_offs_old( > > const rec_t* rec, > ulint n, > ulint* len) > > __attribute__((nonnull)); > > > > > > > >static inline >ulint >rec_get_nth_field_size( > > const rec_t* rec, > ulint n) > __attribute__((warn_unused_result)); > > > > >static inline >offset_t >rec_get_nth_field_offs( > > const offset_t* offsets, > ulint n, > ulint* len) > > __attribute__((nonnull)); > > > > > > >static inline >ulint >rec_offs_comp( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_offs_any_extern( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > >static inline >const byte* >rec_offs_any_null_extern( > > const rec_t* rec, > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > >static inline >ulint >rec_offs_nth_extern( > > const offset_t* offsets, > ulint n) > __attribute__((warn_unused_result)); > > > > >void >rec_offs_make_nth_extern( > offset_t* offsets, > const ulint n); > > > >static inline >ulint >rec_offs_nth_sql_null( > > const offset_t* offsets, > ulint n) > __attribute__((warn_unused_result)); > > > >static inline >ulint >rec_offs_nth_size( > > const offset_t* offsets, > ulint n) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_offs_n_extern( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > > > > >static inline >void >rec_set_nth_field( > > rec_t* rec, > const offset_t* offsets, > ulint n, > const void* data, > ulint len) > > > > > __attribute__((nonnull(1,2))); > > > > > > >static inline >ulint >rec_get_data_size_old( > > const rec_t* rec) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_offs_get_n_alloc( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > >static inline >void >rec_offs_set_n_alloc( > > offset_t*offsets, > > ulint n_alloc) > __attribute__((nonnull)); > > > > > >static inline >ulint >rec_offs_n_fields( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > > > > >static inline >ulint >rec_offs_data_size( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > > > >static inline >ulint >rec_offs_extra_size( > > const offset_t* offsets) > __attribute__((warn_unused_result)); > > > >static inline >ulint >rec_offs_size( > > const offset_t* offsets) > __attribute__((warn_unused_result)); ># 818 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >static inline >rec_t* >rec_copy( > void* buf, > const rec_t* rec, > const offset_t* offsets); > > > > > > > >ulint >rec_get_converted_size_temp( > const dict_index_t* index, > const dfield_t* fields, > ulint n_fields, > ulint* extra) > __attribute__((warn_unused_result, nonnull(1,2))); > > > > >void >rec_init_offsets_temp( > > const rec_t* rec, > const dict_index_t* index, > offset_t* offsets) > > __attribute__((nonnull)); > > > > >void >rec_convert_dtuple_to_temp( > > rec_t* rec, > const dict_index_t* index, > const dfield_t* fields, > ulint n_fields); > > > > > >rec_t* >rec_copy_prefix_to_buf( > > const rec_t* rec, > const dict_index_t* index, > ulint n_fields, > > byte** buf, > > > ulint* buf_size) > __attribute__((nonnull)); > > > > > > > >static inline >ulint >rec_fold( > const rec_t* rec, > const offset_t* offsets, > ulint n_fields, > ulint n_bytes, > index_id_t tree_id) > __attribute__((warn_unused_result)); > > > > >rec_t* >rec_convert_dtuple_to_rec( > > byte* buf, > > const dict_index_t* index, > const dtuple_t* dtuple, > ulint n_ext) > > __attribute__((warn_unused_result)); > > > > >static inline >ulint >rec_get_converted_extra_size( > > ulint data_size, > ulint n_fields, > ulint n_ext) > __attribute__((const)); > > > >ulint >rec_get_converted_size_comp_prefix( > > const dict_index_t* index, > const dfield_t* fields, > ulint n_fields, > ulint* extra) > __attribute__((warn_unused_result, nonnull(1,2))); > > > >ulint >rec_get_converted_size_comp( > > const dict_index_t* index, > > > > ulint status, > const dfield_t* fields, > ulint n_fields, > ulint* extra) > __attribute__((nonnull(1,3))); > > > > >static inline >ulint >rec_get_converted_size( > > dict_index_t* index, > const dtuple_t* dtuple, > ulint n_ext) > __attribute__((warn_unused_result, nonnull)); > > > > > > > >void >rec_copy_prefix_to_dtuple_func( > dtuple_t* tuple, > const rec_t* rec, > const dict_index_t* index, > > > > ulint n_fields, > mem_heap_t* heap) > __attribute__((nonnull)); ># 986 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >ulint >rec_validate( > > const rec_t* rec, > const offset_t* offsets) > __attribute__((nonnull)); > > >void >rec_print_old( > > FILE* file, > const rec_t* rec) > __attribute__((nonnull)); > > >void >rec_print_mbr_rec( > > FILE* file, > const rec_t* rec, > const offset_t* offsets) > __attribute__((nonnull)); > > >void >rec_print_new( > > FILE* file, > const rec_t* rec, > const offset_t* offsets) > __attribute__((nonnull)); > > >void >rec_print( > > FILE* file, > const rec_t* rec, > const dict_index_t* index) > __attribute__((nonnull)); > > > > > > >void >rec_print( > std::ostream& o, > const rec_t* rec, > ulint info, > const offset_t* offsets); > > >struct rec_index_print >{ > > rec_index_print(const rec_t* rec, const dict_index_t* index) : > m_rec(rec), m_index(index) > {} > > > const rec_t* m_rec; > > const dict_index_t* m_index; >}; > > > > > >std::ostream& >operator<<(std::ostream& o, const rec_index_print& r); > > >struct rec_offsets_print >{ > > rec_offsets_print(const rec_t* rec, const offset_t* offsets) : > m_rec(rec), m_offsets(offsets) > {} > > > const rec_t* m_rec; > > const offset_t* m_offsets; >}; > > > > > >std::ostream& >operator<<(std::ostream& o, const rec_offsets_print& r); ># 1167 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" >int wsrep_rec_get_foreign_key( > byte *buf, > ulint *buf_len, > const rec_t* rec, > dict_index_t* index_for, > dict_index_t* index_ref, > ulint new_protocol); > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.h" >typedef byte dict_hdr_t; > > > > >dict_hdr_t* >dict_hdr_get( > > mtr_t* mtr); > > >void >dict_hdr_get_new_id( > > table_id_t* table_id, > > index_id_t* index_id, > > ulint* space_id, > > const dict_table_t* table, > bool disable_redo); > > > > > >void >dict_hdr_flush_row_id(void); > > > > >static inline >row_id_t >dict_sys_get_new_row_id(void); > > > > >static inline >row_id_t >dict_sys_read_row_id( > > const byte* field); > > >static inline >void >dict_sys_write_row_id( > > byte* field, > row_id_t row_id); > > > > >dberr_t >dict_boot(void) > > __attribute__((warn_unused_result)); > > > > >dberr_t >dict_create(void) > > __attribute__((warn_unused_result)); > > > > >static inline >bool >dict_is_sys_table( > > table_id_t id) > __attribute__((warn_unused_result)); ># 156 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.h" >enum dict_col_sys_tables_enum { > DICT_COL__SYS_TABLES__NAME = 0, > DICT_COL__SYS_TABLES__ID = 1, > DICT_COL__SYS_TABLES__N_COLS = 2, > DICT_COL__SYS_TABLES__TYPE = 3, > DICT_COL__SYS_TABLES__MIX_ID = 4, > DICT_COL__SYS_TABLES__MIX_LEN = 5, > DICT_COL__SYS_TABLES__CLUSTER_ID = 6, > DICT_COL__SYS_TABLES__SPACE = 7, > DICT_NUM_COLS__SYS_TABLES = 8 >}; > >enum dict_fld_sys_tables_enum { > DICT_FLD__SYS_TABLES__NAME = 0, > DICT_FLD__SYS_TABLES__DB_TRX_ID = 1, > DICT_FLD__SYS_TABLES__DB_ROLL_PTR = 2, > DICT_FLD__SYS_TABLES__ID = 3, > DICT_FLD__SYS_TABLES__N_COLS = 4, > DICT_FLD__SYS_TABLES__TYPE = 5, > DICT_FLD__SYS_TABLES__MIX_ID = 6, > DICT_FLD__SYS_TABLES__MIX_LEN = 7, > DICT_FLD__SYS_TABLES__CLUSTER_ID = 8, > DICT_FLD__SYS_TABLES__SPACE = 9, > DICT_NUM_FIELDS__SYS_TABLES = 10 >}; > >enum dict_fld_sys_table_ids_enum { > DICT_FLD__SYS_TABLE_IDS__ID = 0, > DICT_FLD__SYS_TABLE_IDS__NAME = 1, > DICT_NUM_FIELDS__SYS_TABLE_IDS = 2 >}; > >enum dict_col_sys_columns_enum { > DICT_COL__SYS_COLUMNS__TABLE_ID = 0, > DICT_COL__SYS_COLUMNS__POS = 1, > DICT_COL__SYS_COLUMNS__NAME = 2, > DICT_COL__SYS_COLUMNS__MTYPE = 3, > DICT_COL__SYS_COLUMNS__PRTYPE = 4, > DICT_COL__SYS_COLUMNS__LEN = 5, > DICT_COL__SYS_COLUMNS__PREC = 6, > DICT_NUM_COLS__SYS_COLUMNS = 7 >}; > >enum dict_fld_sys_columns_enum { > DICT_FLD__SYS_COLUMNS__TABLE_ID = 0, > DICT_FLD__SYS_COLUMNS__POS = 1, > DICT_FLD__SYS_COLUMNS__DB_TRX_ID = 2, > DICT_FLD__SYS_COLUMNS__DB_ROLL_PTR = 3, > DICT_FLD__SYS_COLUMNS__NAME = 4, > DICT_FLD__SYS_COLUMNS__MTYPE = 5, > DICT_FLD__SYS_COLUMNS__PRTYPE = 6, > DICT_FLD__SYS_COLUMNS__LEN = 7, > DICT_FLD__SYS_COLUMNS__PREC = 8, > DICT_NUM_FIELDS__SYS_COLUMNS = 9 >}; > >enum dict_col_sys_indexes_enum { > DICT_COL__SYS_INDEXES__TABLE_ID = 0, > DICT_COL__SYS_INDEXES__ID = 1, > DICT_COL__SYS_INDEXES__NAME = 2, > DICT_COL__SYS_INDEXES__N_FIELDS = 3, > DICT_COL__SYS_INDEXES__TYPE = 4, > DICT_COL__SYS_INDEXES__SPACE = 5, > DICT_COL__SYS_INDEXES__PAGE_NO = 6, > DICT_COL__SYS_INDEXES__MERGE_THRESHOLD = 7, > DICT_NUM_COLS__SYS_INDEXES = 8 >}; > >enum dict_fld_sys_indexes_enum { > DICT_FLD__SYS_INDEXES__TABLE_ID = 0, > DICT_FLD__SYS_INDEXES__ID = 1, > DICT_FLD__SYS_INDEXES__DB_TRX_ID = 2, > DICT_FLD__SYS_INDEXES__DB_ROLL_PTR = 3, > DICT_FLD__SYS_INDEXES__NAME = 4, > DICT_FLD__SYS_INDEXES__N_FIELDS = 5, > DICT_FLD__SYS_INDEXES__TYPE = 6, > DICT_FLD__SYS_INDEXES__SPACE = 7, > DICT_FLD__SYS_INDEXES__PAGE_NO = 8, > DICT_FLD__SYS_INDEXES__MERGE_THRESHOLD = 9, > DICT_NUM_FIELDS__SYS_INDEXES = 10 >}; > >enum dict_col_sys_fields_enum { > DICT_COL__SYS_FIELDS__INDEX_ID = 0, > DICT_COL__SYS_FIELDS__POS = 1, > DICT_COL__SYS_FIELDS__COL_NAME = 2, > DICT_NUM_COLS__SYS_FIELDS = 3 >}; > >enum dict_fld_sys_fields_enum { > DICT_FLD__SYS_FIELDS__INDEX_ID = 0, > DICT_FLD__SYS_FIELDS__POS = 1, > DICT_FLD__SYS_FIELDS__DB_TRX_ID = 2, > DICT_FLD__SYS_FIELDS__DB_ROLL_PTR = 3, > DICT_FLD__SYS_FIELDS__COL_NAME = 4, > DICT_NUM_FIELDS__SYS_FIELDS = 5 >}; > >enum dict_col_sys_foreign_enum { > DICT_COL__SYS_FOREIGN__ID = 0, > DICT_COL__SYS_FOREIGN__FOR_NAME = 1, > DICT_COL__SYS_FOREIGN__REF_NAME = 2, > DICT_COL__SYS_FOREIGN__N_COLS = 3, > DICT_NUM_COLS__SYS_FOREIGN = 4 >}; > >enum dict_fld_sys_foreign_enum { > DICT_FLD__SYS_FOREIGN__ID = 0, > DICT_FLD__SYS_FOREIGN__DB_TRX_ID = 1, > DICT_FLD__SYS_FOREIGN__DB_ROLL_PTR = 2, > DICT_FLD__SYS_FOREIGN__FOR_NAME = 3, > DICT_FLD__SYS_FOREIGN__REF_NAME = 4, > DICT_FLD__SYS_FOREIGN__N_COLS = 5, > DICT_NUM_FIELDS__SYS_FOREIGN = 6 >}; > >enum dict_fld_sys_foreign_for_name_enum { > DICT_FLD__SYS_FOREIGN_FOR_NAME__NAME = 0, > DICT_FLD__SYS_FOREIGN_FOR_NAME__ID = 1, > DICT_NUM_FIELDS__SYS_FOREIGN_FOR_NAME = 2 >}; > >enum dict_col_sys_foreign_cols_enum { > DICT_COL__SYS_FOREIGN_COLS__ID = 0, > DICT_COL__SYS_FOREIGN_COLS__POS = 1, > DICT_COL__SYS_FOREIGN_COLS__FOR_COL_NAME = 2, > DICT_COL__SYS_FOREIGN_COLS__REF_COL_NAME = 3, > DICT_NUM_COLS__SYS_FOREIGN_COLS = 4 >}; > >enum dict_fld_sys_foreign_cols_enum { > DICT_FLD__SYS_FOREIGN_COLS__ID = 0, > DICT_FLD__SYS_FOREIGN_COLS__POS = 1, > DICT_FLD__SYS_FOREIGN_COLS__DB_TRX_ID = 2, > DICT_FLD__SYS_FOREIGN_COLS__DB_ROLL_PTR = 3, > DICT_FLD__SYS_FOREIGN_COLS__FOR_COL_NAME = 4, > DICT_FLD__SYS_FOREIGN_COLS__REF_COL_NAME = 5, > DICT_NUM_FIELDS__SYS_FOREIGN_COLS = 6 >}; > >enum dict_col_sys_tablespaces_enum { > DICT_COL__SYS_TABLESPACES__SPACE = 0, > DICT_COL__SYS_TABLESPACES__NAME = 1, > DICT_COL__SYS_TABLESPACES__FLAGS = 2, > DICT_NUM_COLS__SYS_TABLESPACES = 3 >}; > >enum dict_fld_sys_tablespaces_enum { > DICT_FLD__SYS_TABLESPACES__SPACE = 0, > DICT_FLD__SYS_TABLESPACES__DB_TRX_ID = 1, > DICT_FLD__SYS_TABLESPACES__DB_ROLL_PTR = 2, > DICT_FLD__SYS_TABLESPACES__NAME = 3, > DICT_FLD__SYS_TABLESPACES__FLAGS = 4, > DICT_NUM_FIELDS__SYS_TABLESPACES = 5 >}; > >enum dict_col_sys_datafiles_enum { > DICT_COL__SYS_DATAFILES__SPACE = 0, > DICT_COL__SYS_DATAFILES__PATH = 1, > DICT_NUM_COLS__SYS_DATAFILES = 2 >}; > >enum dict_fld_sys_datafiles_enum { > DICT_FLD__SYS_DATAFILES__SPACE = 0, > DICT_FLD__SYS_DATAFILES__DB_TRX_ID = 1, > DICT_FLD__SYS_DATAFILES__DB_ROLL_PTR = 2, > DICT_FLD__SYS_DATAFILES__PATH = 3, > DICT_NUM_FIELDS__SYS_DATAFILES = 4 >}; > > >enum dict_col_sys_virtual_enum { > DICT_COL__SYS_VIRTUAL__TABLE_ID = 0, > DICT_COL__SYS_VIRTUAL__POS = 1, > DICT_COL__SYS_VIRTUAL__BASE_POS = 2, > DICT_NUM_COLS__SYS_VIRTUAL = 3 >}; > >enum dict_fld_sys_virtual_enum { > DICT_FLD__SYS_VIRTUAL__TABLE_ID = 0, > DICT_FLD__SYS_VIRTUAL__POS = 1, > DICT_FLD__SYS_VIRTUAL__BASE_POS = 2, > DICT_FLD__SYS_VIRTUAL__DB_TRX_ID = 3, > DICT_FLD__SYS_VIRTUAL__DB_ROLL_PTR = 4, > DICT_NUM_FIELDS__SYS_VIRTUAL = 5 >}; ># 353 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.ic" >static inline >row_id_t >dict_sys_get_new_row_id(void) > >{ > row_id_t id; > > (&dict_sys->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.ic", 36); > > id = dict_sys->row_id; > > if (0 == (id % 256)) { > > dict_hdr_flush_row_id(); > } > > dict_sys->row_id++; > > (&dict_sys->mutex)->exit(); > > return(id); >} > > > > >static inline >row_id_t >dict_sys_read_row_id( > > const byte* field) >{ > > > > > return(mach_read_from_6(field)); >} > > > >static inline >void >dict_sys_write_row_id( > > byte* field, > row_id_t row_id) >{ > > > > > mach_write_to_6(field, row_id); >} > > > > >static inline >bool >dict_is_sys_table( > > table_id_t id) >{ > return(id < 10); >} ># 354 "/buildbot/mariadb-10.2.31/storage/innobase/include/dict0boot.h" 2 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" 2 ># 132 "/buildbot/mariadb-10.2.31/storage/innobase/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); > > > >static inline >ulint >rec_get_bit_field_1( > > const rec_t* rec, > ulint offs, > ulint mask, > ulint shift) >{ > do { } while(0); > > 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) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > mach_write_to_1(rec - offs, > (mach_read_from_1(rec - offs) & ~mask) > | (val << shift)); >} > > > >static inline >ulint >rec_get_bit_field_2( > > const rec_t* rec, > ulint offs, > ulint mask, > ulint shift) >{ > do { } while(0); > > 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) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > mach_write_to_2(rec - offs, > (mach_read_from_2(rec - offs) & ~mask) > | (val << shift)); >} > > > > > >static inline >const rec_t* >rec_get_next_ptr_const( > > const rec_t* rec, > ulint comp) >{ > ulint field_value; > > do { } while(0); > do { } while(0); > > field_value = mach_read_from_2(rec - 2); > > if (field_value == 0) { > > return(__null); > } > > if (comp) { ># 271 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" > do { } while(0) > > ; > > return((byte*) ut_align_down(rec, ((ulint) srv_page_size)) > + ut_align_offset(rec + field_value, ((ulint) srv_page_size))); > } else { > do { } while(0); > > return((byte*) ut_align_down(rec, ((ulint) srv_page_size)) > + field_value); > } >} > > > > > >static inline >rec_t* >rec_get_next_ptr( > > rec_t* rec, > ulint comp) >{ > return(const_cast<rec_t*>(rec_get_next_ptr_const(rec, comp))); >} > > > > > >static inline >ulint >rec_get_next_offs( > > const rec_t* rec, > ulint comp) >{ > ulint field_value; > > > > > > > > field_value = mach_read_from_2(rec - 2); > > if (comp) { ># 337 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" > if (field_value == 0) { > > return(0); > } > > > > do { } while(0) > > ; > > return(ut_align_offset(rec + field_value, ((ulint) srv_page_size))); > } else { > do { } while(0); > > return(field_value); > } >} > > > > >static inline >void >rec_set_next_offs_old( > > rec_t* rec, > ulint next) >{ > do { } while(0); > do { typedef char compile_time_assert[(0xFFFFUL == 0xFFFFUL) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(0 == 0) ? 1 : -1] __attribute__((unused)); } while(0); > mach_write_to_2(rec - 2, next); >} > > > > >static inline >void >rec_set_next_offs_new( > > rec_t* rec, > ulint next) >{ > ulint field_value; > > do { } while(0); > > if (!next) { > field_value = 0; > } else { > > > > > field_value = (ulint) > ((lint) next > - (lint) ut_align_offset(rec, ((ulint) srv_page_size))); > field_value &= 0xFFFFUL; > } > > mach_write_to_2(rec - 2, field_value); >} > > > > > >static inline >ulint >rec_get_n_fields_old( > > const rec_t* rec) >{ > ulint ret; > > do { } while(0); > > ret = rec_get_bit_field_2(rec, 4, > 0x7FEUL, > 1); > do { } while(0); > do { } while(0); > > return(ret); >} > > > > >static inline >void >rec_set_n_fields_old( > > rec_t* rec, > ulint n_fields) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > rec_set_bit_field_2(rec, n_fields, 4, > 0x7FEUL, 1); >} > > > > >static inline >ulint >rec_get_status( > > const rec_t* rec) >{ > ulint ret; > > do { } while(0); > > ret = rec_get_bit_field_1(rec, 3, > 0x7UL, 0); > do { } while(0); > > return(ret); >} > > > > > >static inline >ulint >rec_get_n_fields( > > const rec_t* rec, > const dict_index_t* index) >{ > do { } while(0); > do { } while(0); > > if (!dict_table_is_comp(index->table)) { > 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: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 490); > return(((ulint)(-1))); > } >} > > > > > > > >static inline >bool >rec_n_fields_is_sane( > dict_index_t* index, > const rec_t* rec, > const dtuple_t* entry) >{ > return(rec_get_n_fields(rec, index) > == dtuple_get_n_fields(entry) > > > || (index->table->id == 3 > && rec_get_n_fields(rec, index) > == dtuple_get_n_fields(entry) - 1)); >} > > > > > >static inline >ulint >rec_get_n_owned_old( > > const rec_t* rec) >{ > return(rec_get_bit_field_1(rec, 6, > 0xFUL, 0)); >} > > > >static inline >void >rec_set_n_owned_old( > > rec_t* rec, > ulint n_owned) >{ > rec_set_bit_field_1(rec, n_owned, 6, > 0xFUL, 0); >} > > > > > >static inline >ulint >rec_get_n_owned_new( > > const rec_t* rec) >{ > return(rec_get_bit_field_1(rec, 5, > 0xFUL, 0)); >} > > > >static inline >void >rec_set_n_owned_new( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint n_owned) >{ > rec_set_bit_field_1(rec, n_owned, 5, > 0xFUL, 0); > if (page_zip && rec_get_status(rec) != 3) { > page_zip_rec_set_owned(page_zip, rec, n_owned); > } >} ># 591 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" >static inline >ulint >rec_get_info_bits( > > const rec_t* rec, > ulint comp) >{ > const ulint val = rec_get_bit_field_1( > rec, comp ? 5 : 6, > 0xF0UL, 0); > do { } while(0); > return(val); >} > > > >static inline >void >rec_set_info_bits_old( > > rec_t* rec, > ulint bits) >{ > do { } while(0); > rec_set_bit_field_1(rec, bits, 6, > 0xF0UL, 0); >} > > >static inline >void >rec_set_info_bits_new( > > rec_t* rec, > ulint bits) >{ > do { } while(0); > rec_set_bit_field_1(rec, bits, 5, > 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( > > const rec_t* rec, > ulint comp) >{ > ulint bits; > > > > > if (comp) { > bits = rec_get_info_bits(rec, (1)) | rec_get_status(rec); > } else { > bits = rec_get_info_bits(rec, (0)); > do { } while(0); > } > return(bits); >} > > > >static inline >void >rec_set_info_and_status_bits( > > rec_t* rec, > ulint bits) >{ > > > > > rec_set_status(rec, bits & 0x7UL); > rec_set_info_bits_new(rec, bits & ~0x7UL); >} > > > > >static inline >ulint >rec_get_deleted_flag( > > const rec_t* rec, > ulint comp) >{ > if (comp) { > return(rec_get_bit_field_1(rec, 5, > 0x20UL, > 0)); > } else { > return(rec_get_bit_field_1(rec, 6, > 0x20UL, > 0)); > } >} > > > >static inline >void >rec_set_deleted_flag_old( > > rec_t* rec, > ulint flag) >{ > ulint val; > > val = rec_get_info_bits(rec, (0)); > > if (flag) { > val |= 0x20UL; > } else { > val &= ~0x20UL; > } > > rec_set_info_bits_old(rec, val); >} > > > >static inline >void >rec_set_deleted_flag_new( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint flag) >{ > ulint val; > > val = rec_get_info_bits(rec, (1)); > > if (flag) { > val |= 0x20UL; > } else { > val &= ~0x20UL; > } > > rec_set_info_bits_new(rec, val); > > if (page_zip) { > page_zip_rec_set_deleted(page_zip, rec, flag); > } >} > > > > >static inline >ulint >rec_get_node_ptr_flag( > > const rec_t* rec) >{ > return(1 == rec_get_status(rec)); >} > > > > > >static inline >ulint >rec_get_heap_no_old( > > const rec_t* rec) >{ > return(rec_get_bit_field_2(rec, 5, > 0xFFF8UL, 3)); >} > > > > >static inline >void >rec_set_heap_no_old( > > rec_t* rec, > ulint heap_no) >{ > rec_set_bit_field_2(rec, heap_no, 5, > 0xFFF8UL, 3); >} > > > > > >static inline >ulint >rec_get_heap_no_new( > > const rec_t* rec) >{ > return(rec_get_bit_field_2(rec, 4, > 0xFFF8UL, 3)); >} > > > > >static inline >void >rec_set_heap_no_new( > > rec_t* rec, > ulint heap_no) >{ > rec_set_bit_field_2(rec, heap_no, 4, > 0xFFF8UL, 3); >} > > > > > >static inline >ulint >rec_get_1byte_offs_flag( > > const 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) >{ > > > > do { } while(0); > > rec_set_bit_field_1(rec, flag, 3, 0x1UL, > 0); >} > > > > > > >static inline >uint8_t >rec_1_get_field_end_info( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > return(mach_read_from_1(rec - (6 + n + 1))); >} > > > > > > > >static inline >offset_t >rec_2_get_field_end_info( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > return(mach_read_from_2(rec - (6 + 2 * n + 2))); >} > > > > > >static inline >ulint >rec_2_is_field_extern( > > const rec_t* rec, > ulint n) >{ > return(rec_2_get_field_end_info(rec, n) & REC_2BYTE_EXTERN_MASK); >} ># 921 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" >static inline >ulint >rec_offs_get_n_alloc( > > const offset_t* offsets) >{ > ulint n_alloc; > do { } while(0); > n_alloc = offsets[0]; > do { } while(0); > do {} while(0); > return(n_alloc); >} > > > > >static inline >void >rec_offs_set_n_alloc( > > offset_t*offsets, > > ulint n_alloc) >{ > do { } while(0); > ((void) (offsets), (void) (n_alloc * sizeof *offsets)); > offsets[0] = static_cast<offset_t>(n_alloc); >} > > > > >static inline >ulint >rec_offs_n_fields( > > const offset_t* offsets) >{ > ulint n_fields; > do { } while(0); > n_fields = offsets[1]; > do { } while(0); > do { } while(0); > do { } while(0) > ; > return(n_fields); >} > > > > >static inline >ulint >rec_offs_validate( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets) > >{ > ulint i = rec_offs_n_fields(offsets); > ulint last = ((ulint)(-2)); > bool comp = (offsets + REC_OFFS_HEADER_SIZE)[0] & REC_OFFS_COMPACT; > > if (rec) { > do { } while(0); > 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", "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 989); } } while (0); > } > } > if (index) { > ulint max_n_fields; > do { } while(0); > max_n_fields = std::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: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 1011); > } > } > > do { if (__builtin_expect(!(ulint) (!comp || index->n_def), (0))) { ut_dbg_assertion_failed("!comp || index->n_def", "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 1015); } } 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", "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 1016); } } while (0); > } > while (i--) { > offset_t curr = get_value((offsets + REC_OFFS_HEADER_SIZE)[1 + i]); > do { if (__builtin_expect(!(ulint) (curr <= last), (0))) { ut_dbg_assertion_failed("curr <= last", "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 1020); } } while (0); > last = curr; > } > return((1)); >} ># 1051 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" >static inline >offset_t >rec_get_nth_field_offs( > > const offset_t* offsets, > ulint n, > ulint* len) > >{ > do { } while(0); > > offset_t offs = n == 0 ? 0 : get_value((offsets + REC_OFFS_HEADER_SIZE)[n]); > offset_t next_offs = (offsets + REC_OFFS_HEADER_SIZE)[1 + n]; > > if (get_type(next_offs) == SQL_NULL) { > *len = 0xFFFFFFFF; > } else { > > *len = get_value(next_offs) - offs; > } > > return(offs); >} > > > > > >static inline >ulint >rec_offs_comp( > > const offset_t* offsets) >{ > do { } while(0); > return(*(offsets + REC_OFFS_HEADER_SIZE) & REC_OFFS_COMPACT); >} > > > > > >static inline >ulint >rec_offs_any_extern( > > const offset_t* offsets) >{ > do { } while(0); > return(*(offsets + REC_OFFS_HEADER_SIZE) & REC_OFFS_EXTERNAL); >} > > > > >static inline >const byte* >rec_offs_any_null_extern( > > const rec_t* rec, > const offset_t* offsets) >{ > ulint i; > do { } while(0); > > if (!rec_offs_any_extern(offsets)) { > return(__null); > } > > for (i = 0; i < rec_offs_n_fields(offsets); i++) { > if (rec_offs_nth_extern(offsets, i)) { > ulint len; > const byte* field > = ((rec) + rec_get_nth_field_offs(offsets, i, &len)); > > do { if (__builtin_expect(!(ulint) (len >= 20), (0))) { ut_dbg_assertion_failed("len >= BTR_EXTERN_FIELD_REF_SIZE", "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 1126); } } while (0); > if (!memcmp(field + len > - 20, > field_ref_zero, > 20)) { > return(field); > } > } > } > > return(__null); >} > > > > >static inline >ulint >rec_offs_nth_extern( > > const offset_t* offsets, > ulint n) >{ > do { } while(0); > do { } while(0); > return get_type((offsets + REC_OFFS_HEADER_SIZE)[1 + n]) == STORED_OFFPAGE; >} > > > > >static inline >ulint >rec_offs_nth_sql_null( > > const offset_t* offsets, > ulint n) >{ > do { } while(0); > do { } while(0); > return get_type((offsets + REC_OFFS_HEADER_SIZE)[1 + n]) == SQL_NULL; >} > > > > >static inline >ulint >rec_offs_nth_size( > > const offset_t* offsets, > ulint n) >{ > do { } while(0); > do { } while(0); > if (!n) { > return get_value((offsets + REC_OFFS_HEADER_SIZE)[1 + n]); > } > return get_value(((offsets + REC_OFFS_HEADER_SIZE)[1 + n])) > - get_value((offsets + REC_OFFS_HEADER_SIZE)[n]); >} > > > > >static inline >ulint >rec_offs_n_extern( > > const offset_t* offsets) >{ > ulint n = 0; > > if (rec_offs_any_extern(offsets)) { > ulint i; > > for (i = rec_offs_n_fields(offsets); i--; ) { > if (rec_offs_nth_extern(offsets, i)) { > n++; > } > } > } > > return(n); >} ># 1219 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" >static inline >ulint >rec_1_get_prev_field_end_info( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > return(mach_read_from_1(rec - (6 + n))); >} > > > > > > >static inline >ulint >rec_2_get_prev_field_end_info( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > 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) >{ > do { } while(0); > do { } while(0); > > 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) >{ > do { } while(0); > do { } while(0); > > mach_write_to_2(rec - (6 + 2 * n + 2), info); >} > > > > > >static inline >ulint >rec_1_get_field_start_offs( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > if (n == 0) { > > return(0); > } > > return(rec_1_get_prev_field_end_info(rec, n) > & ~REC_1BYTE_SQL_NULL_MASK); >} > > > > > >static inline >ulint >rec_2_get_field_start_offs( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > if (n == 0) { > > return(0); > } > > return(rec_2_get_prev_field_end_info(rec, n) > & ~(REC_2BYTE_SQL_NULL_MASK | REC_2BYTE_EXTERN_MASK)); >} > > > > > > > >static inline >ulint >rec_get_field_start_offs( > > const rec_t* rec, > ulint n) >{ > do { } while(0); > do { } while(0); > > 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( > > const 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); > > do { } while(0); > > return(next_os - os); >} > > > > > > > >static inline >void >rec_set_nth_field( > > rec_t* rec, > const offset_t* offsets, > ulint n, > const void* data, > > ulint len) >{ > byte* data2; > ulint len2; > > do { } while(0); > > if (len == 0xFFFFFFFF) { > 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)", "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic", 1406); } } while (0); > rec_set_nth_field_sql_null(rec, n); > } > > return; > } > > data2 = ((rec) + rec_get_nth_field_offs(offsets, n, &len2)); > if (len2 == 0xFFFFFFFF) { > do { } while(0); > rec_set_nth_field_null_bit(rec, n, (0)); > do { } while(0); > } else { > do { } while(0); > } > > ut_memcpy(data2, data, len); >} > > > > > > > >static inline >ulint >rec_get_data_size_old( > > const rec_t* rec) >{ > do { } while(0); > > return(rec_get_field_start_offs(rec, rec_get_n_fields_old(rec))); >} > > > >static inline >void >rec_offs_set_n_fields( > > offset_t* offsets, > > ulint n_fields) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0) > ; > offsets[1] = static_cast<offset_t>(n_fields); >} > > > > > > > >static inline >ulint >rec_offs_data_size( > > const offset_t* offsets) >{ > ulint size; > > do { } while(0); > size = get_value((offsets + REC_OFFS_HEADER_SIZE)[rec_offs_n_fields(offsets)]); > do { } while(0); > return(size); >} > > > > > > >static inline >ulint >rec_offs_extra_size( > > const offset_t* offsets) >{ > ulint size; > do { } while(0); > size = *(offsets + REC_OFFS_HEADER_SIZE) & ~(REC_OFFS_COMPACT | REC_OFFS_EXTERNAL); > do { } while(0); > return(size); >} > > > > >static inline >ulint >rec_offs_size( > > const offset_t* offsets) >{ > return(rec_offs_data_size(offsets) + rec_offs_extra_size(offsets)); >} ># 1545 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" >static inline >rec_t* >rec_copy( > void* buf, > const rec_t* rec, > const offset_t* offsets) >{ > ulint extra_len; > ulint data_len; > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > 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((byte*) buf + extra_len); >} > > > > > >static inline >ulint >rec_get_converted_extra_size( > > ulint data_size, > ulint n_fields, > ulint n_ext) >{ > if (!n_ext && data_size <= 0x7FUL) { > > return(6 + n_fields); > } > > return(6 + 2 * n_fields); >} > > > > > >static inline >ulint >rec_get_converted_size( > > dict_index_t* index, > const dtuple_t* dtuple, > ulint n_ext) >{ > ulint data_size; > ulint extra_size; > > do { } while(0); > > do { } while(0) ># 1617 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" > ; > > if (dict_table_is_comp(index->table)) { > return(rec_get_converted_size_comp(index, > dtuple_get_info_bits(dtuple) > & 0x7UL, > dtuple->fields, > dtuple->n_fields, __null)); > } > > data_size = dtuple_get_data_size(dtuple, 0); > > extra_size = rec_get_converted_extra_size( > data_size, dtuple_get_n_fields(dtuple), n_ext); ># 1667 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" > return(data_size + extra_size); >} ># 1677 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.ic" >static inline >ulint >rec_fold( > const rec_t* rec, > const offset_t* offsets, > ulint n_fields, > ulint n_bytes, > index_id_t tree_id) >{ > ulint i; > const byte* data; > ulint len; > ulint fold; > ulint n_fields_rec; > > do { } while(0); > do { } while(0); > do { } while(0); > > n_fields_rec = rec_offs_n_fields(offsets); > do { } while(0); > do { } while(0); > > if (n_fields > n_fields_rec) { > n_fields = n_fields_rec; > } > > if (n_fields == n_fields_rec) { > n_bytes = 0; > } > > fold = ut_fold_ull(tree_id); > > for (i = 0; i < n_fields; i++) { > data = ((rec) + rec_get_nth_field_offs(offsets, i, &len)); > > if (len != 0xFFFFFFFF) { > fold = ut_fold_ulint_pair(fold, > ut_fold_binary(data, len)); > } > } > > if (n_bytes > 0) { > data = ((rec) + rec_get_nth_field_offs(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); >} ># 1177 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0rec.h" 2 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" 2 ># 52 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >typedef byte page_header_t; ># 147 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >typedef byte page_dir_slot_t; >typedef page_dir_slot_t page_dir_t; ># 168 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >extern my_bool srv_immediate_scrub_data_uncompressed; > > > > > >__attribute__((const)) >inline >ib_page_t* >page_align(const void* ptr) >{ > return(static_cast<ib_page_t*>(ut_align_down(ptr, srv_page_size))); >} > > > > >__attribute__((const)) >inline >ulint >page_offset(const void* ptr) >{ > return(ut_align_offset(ptr, srv_page_size)); >} > > > > > >inline >byte >page_is_comp(const ib_page_t* page) >{ > do { } while(0); > return(page[38U + 4] & 0x80); >} > > > > >inline >bool >page_is_empty(const ib_page_t* page) >{ > do { } while(0); > return !*reinterpret_cast<const uint16_t*>(38U + 16 > + page); >} > > > > >inline >bool >page_has_garbage(const ib_page_t* page) >{ > do { } while(0); > return *reinterpret_cast<const uint16_t*>(38U + 8 > + page); >} > > > > >inline >bool >page_is_leaf(const ib_page_t* page) >{ > do { } while(0); > return !*reinterpret_cast<const uint16_t*>(38U + 26 > + page); >} > > > > > > >inline >byte >page_rec_is_comp(const byte* rec) >{ > return(page_is_comp(page_align(rec))); >} > > > > >inline >unsigned >page_get_infimum_offset(const ib_page_t* page) >{ > do { } while(0); > return page_is_comp(page) ? ((38U + 36 + 2 * 10) + 5) : ((38U + 36 + 2 * 10) + 1 + 6); >} > > > > >inline >unsigned >page_get_supremum_offset(const ib_page_t* page) >{ > do { } while(0); > return page_is_comp(page) ? ((38U + 36 + 2 * 10) + 2 * 5 + 8) : ((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8); >} > > > > > >inline >bool >page_rec_is_user_rec_low(ulint offset) >{ > do { typedef char compile_time_assert[(((38U + 36 + 2 * 10) + 1 + 6) >= ((38U + 36 + 2 * 10) + 5)) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8) >= ((38U + 36 + 2 * 10) + 2 * 5 + 8)) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(((38U + 36 + 2 * 10) + 5) < ((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8)) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(((38U + 36 + 2 * 10) + 1 + 6) < ((38U + 36 + 2 * 10) + 2 * 5 + 8)) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(((38U + 36 + 2 * 10) + 2 * 5 + 8) < (((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9)) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8) < (((38U + 36 + 2 * 10) + 2 * 5 + 8) + 8)) ? 1 : -1] __attribute__((unused)); } while(0); > do { } while(0); > do { } while(0); > > return(offset != ((38U + 36 + 2 * 10) + 2 * 5 + 8) > && offset != ((38U + 36 + 2 * 10) + 5) > && offset != ((38U + 36 + 2 * 10) + 1 + 6) > && offset != ((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8)); >} > > > > >inline >bool >page_rec_is_supremum_low(ulint offset) >{ > do { } while(0); > do { } while(0); > return(offset == ((38U + 36 + 2 * 10) + 2 * 5 + 8) || offset == ((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8)); >} > > > > >inline >bool >page_rec_is_infimum_low(ulint offset) >{ > do { } while(0); > do { } while(0); > return(offset == ((38U + 36 + 2 * 10) + 5) || offset == ((38U + 36 + 2 * 10) + 1 + 6)); >} > > > > >inline >bool >page_rec_is_leaf(const ib_page_t* rec) >{ > const ib_page_t* page = page_align(rec); > do { } while(0); > bool leaf = page_is_leaf(page); > do { } while(0) > > ; > return leaf; >} > > > > >inline >bool >page_rec_is_user_rec(const rec_t* rec); > > > > >inline >bool >page_rec_is_supremum(const rec_t* rec); > > > > >inline >bool >page_rec_is_infimum(const rec_t* rec); > > > >static inline >trx_id_t >page_get_max_trx_id( > > const ib_page_t* page); > > >void >page_set_max_trx_id( > > buf_block_t* block, > page_zip_des_t* page_zip, > trx_id_t trx_id, > mtr_t* mtr); > > > >static inline >void >page_update_max_trx_id( > > buf_block_t* block, > page_zip_des_t* page_zip, > > trx_id_t trx_id, > mtr_t* mtr); ># 396 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >void >page_set_autoinc( > buf_block_t* block, > const dict_index_t* index __attribute__((unused)), > ib_uint64_t autoinc, > mtr_t* mtr, > bool reset) > __attribute__((nonnull)); > > > > >__attribute__((nonnull, warn_unused_result)) >static inline >ib_uint64_t >page_get_autoinc(const ib_page_t* page); > > > > >static inline >node_seq_t >page_get_ssn_id( > > const ib_page_t* page); > > >static inline >void >page_set_ssn_id( > > buf_block_t* block, > page_zip_des_t* page_zip, > > node_seq_t ssn_id, > mtr_t* mtr); > > > > >static inline >uint16_t >page_header_get_field( > > const ib_page_t* page, > ulint field); > > > > >static inline >void >page_header_set_field( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint field, > ulint val); > > > >static inline >uint16_t >page_header_get_offs( > > const ib_page_t* page, > ulint field) > __attribute__((warn_unused_result)); ># 473 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >static inline >void >page_header_set_ptr( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint field, > const byte* ptr); > > > > >static inline >void >page_header_reset_last_insert( > > ib_page_t* page, > page_zip_des_t* page_zip, > > mtr_t* mtr); > > > > > > > >const rec_t* >page_rec_get_nth_const( > > const ib_page_t* page, > ulint nth) > __attribute__((nonnull, warn_unused_result)); > > > > >static inline >rec_t* >page_rec_get_nth( > > ib_page_t* page, > ulint nth) > __attribute__((nonnull, warn_unused_result)); > > > > > > >static inline >rec_t* >page_get_middle_rec( > > ib_page_t* page) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >ulint >page_get_page_no( > > const ib_page_t* page); > > > > >static inline >ulint >page_get_space_id( > > const ib_page_t* page); > > > > > >static inline >uint16_t >page_get_n_recs( > > const ib_page_t* page); > > > > > > >ulint >page_rec_get_n_recs_before( > > const rec_t* rec); > > > >static inline >uint16_t >page_dir_get_n_heap( > > const ib_page_t* page); > > >static inline >void >page_dir_set_n_heap( > > ib_page_t* page, > page_zip_des_t* page_zip, > > > > > ulint n_heap); > > > >static inline >uint16_t >page_dir_get_n_slots( > > const ib_page_t* page); > > >static inline >void >page_dir_set_n_slots( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint n_slots); ># 624 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >static inline >ulint >page_rec_check( > > const rec_t* rec); > > > >static inline >const rec_t* >page_dir_slot_get_rec( > > const 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( > > const page_dir_slot_t* slot); > > >static inline >void >page_dir_slot_set_n_owned( > > page_dir_slot_t*slot, > page_zip_des_t* page_zip, > ulint n); > > > > > >static inline >ulint >page_dir_calc_reserved_space( > > ulint n_recs); > > > >ulint >page_dir_find_owner_slot( > > const rec_t* rec); > > > > >static inline >ulint >page_rec_get_heap_no( > > const rec_t* rec); > > > > >inline bool page_has_siblings(const ib_page_t* page) >{ > do { typedef char compile_time_assert[(!(8 % 8)) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(12 == 8 + 4) ? 1 : -1] __attribute__((unused)); } while(0); > do { typedef char compile_time_assert[(0xFFFFFFFF == 0xffffffff) ? 1 : -1] __attribute__((unused)); } while(0); > return *reinterpret_cast<const uint64_t*>(page + 8) > != ~uint64_t(0); >} > > > > >inline bool page_has_prev(const ib_page_t* page) >{ > return *reinterpret_cast<const uint32_t*>(page + 8) > != 0xFFFFFFFF; >} > > > > >inline bool page_has_next(const ib_page_t* page) >{ > return *reinterpret_cast<const uint32_t*>(page + 12) > != 0xFFFFFFFF; >} > > > > >static inline >const rec_t* >page_rec_get_next_low( > > const rec_t* rec, > ulint comp); > > > >static inline >rec_t* >page_rec_get_next( > > rec_t* rec); > > > >static inline >const rec_t* >page_rec_get_next_const( > > const rec_t* rec); > > > > > >static inline >const rec_t* >page_rec_get_next_non_del_marked( > > const rec_t* rec); > > >static inline >void >page_rec_set_next( > > rec_t* rec, > > const rec_t* next); > > > > >static inline >const rec_t* >page_rec_get_prev_const( > > const rec_t* rec); > > > > >static inline >rec_t* >page_rec_get_prev( > > rec_t* rec); > > > > > >static inline >bool >page_rec_is_first( > > const rec_t* rec, > const ib_page_t* page) > __attribute__((warn_unused_result)); > > > > >static inline >bool >page_rec_is_second( > > const rec_t* rec, > const ib_page_t* page) > __attribute__((warn_unused_result)); > > > > >static inline >bool >page_rec_is_last( > > const rec_t* rec, > const ib_page_t* page) > __attribute__((warn_unused_result)); > > > > >static inline >bool >page_rec_is_second_last( > > const rec_t* rec, > const ib_page_t* page) > __attribute__((warn_unused_result)); > > > > >static inline >rec_t* >page_rec_find_owner_rec( > > rec_t* rec); > > > > > >static inline >ulint >page_get_max_insert_size( > > const ib_page_t* page, > ulint n_recs); > > > > >static inline >ulint >page_get_max_insert_size_after_reorganize( > > const ib_page_t* page, > ulint n_recs); > > > >static inline >ulint >page_get_free_space_of_empty( > > ulint comp) > __attribute__((const)); > > > > >static inline >ulint >page_rec_get_base_extra_size( > > const rec_t* rec); > > > > >static inline >uint16_t >page_get_data_size( > > const ib_page_t* page); > > > >static inline >void >page_mem_alloc_free( > > ib_page_t* page, > page_zip_des_t* page_zip, > > > rec_t* next_rec, > > ulint need); > > > >byte* >page_mem_alloc_heap( > > ib_page_t* page, > page_zip_des_t* page_zip, > > > ulint need, > ulint* heap_no); > > > > >static inline >void >page_mem_free( > > ib_page_t* page, > page_zip_des_t* page_zip, > > rec_t* rec, > > const dict_index_t* index, > const offset_t* offsets); > > > > >ib_page_t* >page_create( > > buf_block_t* block, > > mtr_t* mtr, > ulint comp, > bool is_rtree); > > > >ib_page_t* >page_create_zip( > > buf_block_t* block, > > dict_index_t* index, > > > > ulint level, > > trx_id_t max_trx_id, > const redo_page_compress_t* page_comp_info, > > > > mtr_t* mtr); > > > >void >page_create_empty( > > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull(1,2))); ># 974 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >void >page_copy_rec_list_end_no_locks( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* rec, > dict_index_t* index, > mtr_t* mtr); ># 994 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >rec_t* >page_copy_rec_list_end( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* rec, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); ># 1015 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >rec_t* >page_copy_rec_list_start( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* rec, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); > > > >void >page_delete_rec_list_end( > > rec_t* rec, > buf_block_t* block, > dict_index_t* index, > ulint n_recs, > > ulint size, > > > mtr_t* mtr) > __attribute__((nonnull)); > > > >void >page_delete_rec_list_start( > > rec_t* rec, > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); ># 1062 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >ulint >page_move_rec_list_end( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* split_rec, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull(1, 2, 4, 5))); ># 1081 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >ulint >page_move_rec_list_start( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* split_rec, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull(1, 2, 4, 5))); > > >void >page_dir_split_slot( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint slot_no) > __attribute__((nonnull(1))); > > > > > >void >page_dir_balance_slot( > > ib_page_t* page, > page_zip_des_t* page_zip, > ulint slot_no) > __attribute__((nonnull(1))); > > > >byte* >page_parse_delete_rec_list( > > mlog_id_t type, > > > > byte* ptr, > byte* end_ptr, > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr); > > > > >void >page_parse_create( > buf_block_t* block, > ulint comp, > bool is_rtree); > > > > >void >page_rec_print( > > const rec_t* rec, > const offset_t* offsets); ># 1187 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >ulint >page_rec_validate( > > const rec_t* rec, > const offset_t* offsets); ># 1207 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" >ulint >page_simple_validate_old( > > const ib_page_t* page); > > > > > >ulint >page_simple_validate_new( > > const ib_page_t* page); > > > >ulint >page_validate( > > const ib_page_t* page, > dict_index_t* index); > > > > >const rec_t* >page_find_rec_with_heap_no( > > const ib_page_t* page, > ulint heap_no); > > > > >const rec_t* >page_find_rec_max_not_deleted( > const ib_page_t* page); ># 1252 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >ulint >cmp_cols_are_equal( > > const dict_col_t* col1, > const dict_col_t* col2, > ulint check_charsets); ># 56 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_data_data( > ulint mtype, > ulint prtype, > const byte* data1, > ulint len1, > const byte* data2, > ulint len2) > __attribute__((warn_unused_result)); ># 73 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >static inline >int >cmp_dfield_dfield( > > const dfield_t* dfield1, > const dfield_t* dfield2); ># 87 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_dtuple_rec_with_gis( > > const dtuple_t* dtuple, > const rec_t* rec, > const offset_t* offsets, > page_cur_mode_t mode) > __attribute__((nonnull)); ># 104 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_dtuple_rec_with_gis_internal( > const dtuple_t* dtuple, > const rec_t* rec, > const offset_t* offsets); ># 120 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_dtuple_rec_with_match_low( > const dtuple_t* dtuple, > const rec_t* rec, > const offset_t* offsets, > ulint n_cmp, > ulint* matched_fields) > __attribute__((nonnull)); ># 143 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_dtuple_rec_with_match_bytes( > const dtuple_t* dtuple, > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets, > ulint* matched_fields, > ulint* matched_bytes) > __attribute__((warn_unused_result)); ># 161 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_dtuple_rec( > const dtuple_t* dtuple, > const rec_t* rec, > const offset_t* offsets); > > > > >ulint >cmp_dtuple_is_prefix_of_rec( > > const dtuple_t* dtuple, > const rec_t* rec, > const offset_t* offsets); > > > > > >int >cmp_rec_rec_simple( > > const rec_t* rec1, > const rec_t* rec2, > const offset_t* offsets1, > const offset_t* offsets2, > const dict_index_t* index, > struct TABLE* table) > > > __attribute__((nonnull(1,2,3,4), warn_unused_result)); ># 208 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >int >cmp_rec_rec_with_match( > const rec_t* rec1, > const rec_t* rec2, > const offset_t* offsets1, > const offset_t* offsets2, > const dict_index_t* index, > bool nulls_unequal, > ulint* matched_fields); ># 229 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >static inline >int >cmp_rec_rec( > const rec_t* rec1, > const rec_t* rec2, > const offset_t* offsets1, > const offset_t* offsets2, > const dict_index_t* index, > ulint* matched_fields = __null); ># 246 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" >static inline >int >cmp_dfield_dfield_like_prefix( > const dfield_t* dfield1, > const dfield_t* dfield2); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" 1 ># 26 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" ># 1 "/buildbot/mariadb-10.2.31/include/mysql_com.h" 1 ># 105 "/buildbot/mariadb-10.2.31/include/mysql_com.h" >enum enum_server_command >{ > COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST, > COM_CREATE_DB, COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS, > COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING, > COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP, > COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE, > COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE, > COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON, > COM_UNIMPLEMENTED, > COM_RESET_CONNECTION, > > COM_MDB_GAP_BEG, > COM_MDB_GAP_END=249, > COM_STMT_BULK_EXECUTE=250, > COM_SLAVE_WORKER=251, > COM_SLAVE_IO=252, > COM_SLAVE_SQL=253, > COM_MULTI=254, > > COM_END=255 >}; > > > > > >enum enum_indicator_type >{ > STMT_INDICATOR_NONE= 0, > STMT_INDICATOR_NULL, > STMT_INDICATOR_DEFAULT, > STMT_INDICATOR_IGNORE >}; ># 418 "/buildbot/mariadb-10.2.31/include/mysql_com.h" >struct st_vio; >typedef struct st_vio Vio; ># 429 "/buildbot/mariadb-10.2.31/include/mysql_com.h" >typedef struct st_net { > > Vio *vio; > unsigned char *buff,*buff_end,*write_pos,*read_pos; > my_socket fd; > > > > > > unsigned long remain_in_buf,length, buf_length, where_b; > unsigned long max_packet,max_packet_size; > unsigned int pkt_nr,compress_pkt_nr; > unsigned int write_timeout, read_timeout, retry_count; > int fcntl; > unsigned int *return_status; > unsigned char reading_or_writing; > char save_char; > char net_skip_rest_factor; > my_bool thread_specific_malloc; > unsigned char compress; > my_bool unused3; > > > > > > void *thd; > unsigned int last_errno; > unsigned char error; > my_bool unused4; > my_bool unused5; > > char last_error[512]; > > char sqlstate[5 +1]; > void *extension; >} NET; > > > > >enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, > MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG, > MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE, > MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP, > MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24, > MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, > MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR, > MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR, > MYSQL_TYPE_BIT, > > > > > > > MYSQL_TYPE_TIMESTAMP2, > MYSQL_TYPE_DATETIME2, > MYSQL_TYPE_TIME2, > > MYSQL_TYPE_NEWDECIMAL=246, > MYSQL_TYPE_ENUM=247, > MYSQL_TYPE_SET=248, > MYSQL_TYPE_TINY_BLOB=249, > MYSQL_TYPE_MEDIUM_BLOB=250, > MYSQL_TYPE_LONG_BLOB=251, > MYSQL_TYPE_BLOB=252, > MYSQL_TYPE_VAR_STRING=253, > MYSQL_TYPE_STRING=254, > MYSQL_TYPE_GEOMETRY=255 > >}; ># 543 "/buildbot/mariadb-10.2.31/include/mysql_com.h" >enum mysql_enum_shutdown_level { > > > > > > SHUTDOWN_DEFAULT = 0, > > SHUTDOWN_WAIT_CONNECTIONS= (unsigned char)(1 << 0), > > SHUTDOWN_WAIT_TRANSACTIONS= (unsigned char)(1 << 1), > > SHUTDOWN_WAIT_UPDATES= (unsigned char)(1 << 3), > > SHUTDOWN_WAIT_ALL_BUFFERS= ((unsigned char)(1 << 3) << 1), > > SHUTDOWN_WAIT_CRITICAL_BUFFERS= ((unsigned char)(1 << 3) << 1) + 1 >}; > >enum enum_cursor_type >{ > CURSOR_TYPE_NO_CURSOR= 0, > CURSOR_TYPE_READ_ONLY= 1, > CURSOR_TYPE_FOR_UPDATE= 2, > CURSOR_TYPE_SCROLLABLE= 4 >}; > > > >enum enum_mysql_set_option >{ > MYSQL_OPTION_MULTI_STATEMENTS_ON, > MYSQL_OPTION_MULTI_STATEMENTS_OFF >}; > > > > > >enum enum_session_state_type >{ > SESSION_TRACK_SYSTEM_VARIABLES, > SESSION_TRACK_SCHEMA, > SESSION_TRACK_STATE_CHANGE, > SESSION_TRACK_GTIDS, > SESSION_TRACK_TRANSACTION_CHARACTERISTICS, > SESSION_TRACK_TRANSACTION_STATE, > SESSION_TRACK_always_at_the_end >}; ># 601 "/buildbot/mariadb-10.2.31/include/mysql_com.h" >extern "C" { > > >my_bool my_net_init(NET *net, Vio* vio, void *thd, unsigned int my_flags); >void my_net_local_init(NET *net); >void net_end(NET *net); >void net_clear(NET *net, my_bool clear_buffer); >my_bool net_realloc(NET *net, size_t length); >my_bool net_flush(NET *net); >my_bool my_net_write(NET *net,const unsigned char *packet, size_t len); >my_bool net_write_command(NET *net,unsigned char command, > const unsigned char *header, size_t head_len, > const unsigned char *packet, size_t len); >int net_real_write(NET *net,const unsigned char *packet, size_t len); >unsigned long my_net_read_packet(NET *net, my_bool read_from_server); >unsigned long my_net_read_packet_reallen(NET *net, my_bool read_from_server, > unsigned long* reallen); > > > >void my_net_set_write_timeout(NET *net, uint timeout); >void my_net_set_read_timeout(NET *net, uint timeout); > > >struct sockaddr; >int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen, > unsigned int timeout); >struct my_rnd_struct; > > >} > > > > >enum Item_result >{ > STRING_RESULT=0, REAL_RESULT, INT_RESULT, ROW_RESULT, DECIMAL_RESULT, > TIME_RESULT >}; > >typedef struct st_udf_args >{ > unsigned int arg_count; > enum Item_result *arg_type; > char **args; > unsigned long *lengths; > char *maybe_null; > char **attributes; > unsigned long *attribute_lengths; > void *extension; >} UDF_ARGS; > > > >typedef struct st_udf_init >{ > my_bool maybe_null; > unsigned int decimals; > unsigned long max_length; > char *ptr; > my_bool const_item; > void *extension; >} UDF_INIT; ># 677 "/buildbot/mariadb-10.2.31/include/mysql_com.h" >extern "C" { > > > > > > > >void create_random_string(char *to, unsigned int length, > struct my_rnd_struct *rand_st); > >void hash_password(unsigned long *to, const char *password, unsigned int password_len); >void make_scrambled_password_323(char *to, const char *password); >void scramble_323(char *to, const char *message, const char *password); >my_bool check_scramble_323(const unsigned char *reply, const char *message, > unsigned long *salt); >void get_salt_from_password_323(unsigned long *res, const char *password); >void make_scrambled_password(char *to, const char *password); >void scramble(char *to, const char *message, const char *password); >my_bool check_scramble(const unsigned char *reply, const char *message, > const unsigned char *hash_stage2); >void get_salt_from_password(unsigned char *res, const char *password); >char *octet2hex(char *to, const char *str, unsigned int len); > > > >char *get_tty_password(const char *opt_message); >void get_tty_password_buff(const char *opt_message, char *to, size_t length); >const char *mysql_errno_to_sqlstate(unsigned int mysql_errno); > > > >my_bool my_thread_init(void); >void my_thread_end(void); > > ># 1 "/buildbot/mariadb-10.2.31/include/pack.h" 1 ># 17 "/buildbot/mariadb-10.2.31/include/pack.h" >extern "C" { > > >ulong net_field_length(uchar **packet); >my_ulonglong net_field_length_ll(uchar **packet); >my_ulonglong safe_net_field_length_ll(uchar **packet, size_t packet_len); >uchar *net_store_length(uchar *pkg, ulonglong length); >uchar *safe_net_store_length(uchar *pkg, size_t pkg_len, ulonglong length); >unsigned int net_length_size(ulonglong num); > > >} ># 714 "/buildbot/mariadb-10.2.31/include/mysql_com.h" 2 > > > >} ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" >static inline >int >cmp_dfield_dfield( > const dfield_t* dfield1, > const dfield_t* dfield2) >{ > const dtype_t* type; > > do { } while(0); > > type = dfield_get_type(dfield1); > > return(cmp_data_data(type->mtype, type->prtype, > (const byte*) dfield_get_data(dfield1), > dfield_get_len(dfield1), > (const byte*) dfield_get_data(dfield2), > dfield_get_len(dfield2))); >} ># 66 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" >static inline >int >cmp_rec_rec( > const rec_t* rec1, > const rec_t* rec2, > const offset_t* offsets1, > const offset_t* offsets2, > const dict_index_t* index, > ulint* matched_fields) >{ > ulint match_f; > int ret; > > ret = cmp_rec_rec_with_match( > rec1, rec2, offsets1, offsets2, index, false, &match_f); > > if (matched_fields != __null) { > *matched_fields = match_f; > } > > return(ret); >} ># 96 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" >static inline >int >cmp_dfield_dfield_like_prefix( > const dfield_t* dfield1, > const dfield_t* dfield2) >{ > const dtype_t* type; > > do { } while(0); > do { } while(0); > > type = dfield_get_type(dfield1); ># 125 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.ic" > uint cs_num = (uint) dtype_get_charset_coll(type->prtype); > > if (CHARSET_INFO* cs = get_charset(cs_num, (myf) (16U))) { > return(cs->coll->strnncoll( > cs, > static_cast<const uchar*>( > dfield_get_data(dfield1)), > dfield_get_len(dfield1), > static_cast<const uchar*>( > dfield_get_data(dfield2)), > dfield_get_len(dfield2), > 1)); > } > > ib::fatal() << "Unable to find charset-collation " << cs_num; > return(0); >} ># 253 "/buildbot/mariadb-10.2.31/storage/innobase/include/rem0cmp.h" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" 1 ># 59 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" >extern uint page_zip_level; ># 81 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" >extern my_bool page_zip_log_pages; > > > > >static inline >ulint >page_zip_get_size( > > const page_zip_des_t* page_zip) > __attribute__((warn_unused_result)); > > >static inline >void >page_zip_set_size( > > page_zip_des_t* page_zip, > ulint size); ># 108 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" >static inline >ulint >page_zip_rec_needs_ext( > ulint rec_size, > ulint comp, > ulint n_fields, > const page_size_t& page_size) > __attribute__((warn_unused_result)); > > > > >ulint >page_zip_empty_size( > > ulint n_fields, > ulint zip_size) > __attribute__((const)); > > > > > >bool >page_zip_is_too_big( > const dict_index_t* index, > const dtuple_t* entry); > > > >static inline >void >page_zip_des_init( > > page_zip_des_t* page_zip); > > > > >void >page_zip_set_alloc( > > void* stream, > mem_heap_t* heap); > > > > > >ulint >page_zip_compress( > > page_zip_des_t* page_zip, > > > const ib_page_t* page, > dict_index_t* index, > > ulint level, > const redo_page_compress_t* page_comp_info, > > > > mtr_t* mtr); > > > > > >ulint >page_zip_fields_encode( > > ulint n, > > const dict_index_t* index, > > ulint trx_id_pos, > > > > byte* buf); > > > > > > >ulint >page_zip_decompress( > > page_zip_des_t* page_zip, > > ib_page_t* page, > ulint all) > > > > __attribute__((nonnull(1,2))); ># 247 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" >static inline >lint >page_zip_max_ins_size( > > const page_zip_des_t* page_zip, > ulint is_clust) > __attribute__((warn_unused_result)); > > > > >static inline >ulint >page_zip_available( > > const page_zip_des_t* page_zip, > ulint is_clust, > ulint length, > ulint create) > > __attribute__((warn_unused_result)); > > > > >static inline >void >page_zip_write_header( > > page_zip_des_t* page_zip, > const byte* str, > ulint length, > mtr_t* mtr) > __attribute__((nonnull(1,2))); > > > > >void >page_zip_write_rec( > > page_zip_des_t* page_zip, > const byte* rec, > dict_index_t* index, > const offset_t* offsets, > ulint create) > __attribute__((nonnull)); > > > > >byte* >page_zip_parse_write_blob_ptr( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip); > > > > >void >page_zip_write_blob_ptr( > > page_zip_des_t* page_zip, > const byte* rec, > > dict_index_t* index, > const offset_t* offsets, > ulint n, > mtr_t* mtr); > > > > > >byte* >page_zip_parse_write_node_ptr( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip); > > > >void >page_zip_write_node_ptr( > > page_zip_des_t* page_zip, > byte* rec, > ulint size, > ulint ptr, > mtr_t* mtr); > > > >void >page_zip_write_trx_id_and_roll_ptr( > > page_zip_des_t* page_zip, > byte* rec, > const offset_t* offsets, > ulint trx_id_col, > trx_id_t trx_id, > roll_ptr_t roll_ptr) > __attribute__((nonnull)); > > > > >void >page_zip_rec_set_deleted( > > page_zip_des_t* page_zip, > const byte* rec, > ulint flag) > __attribute__((nonnull)); > > > > >void >page_zip_rec_set_owned( > > page_zip_des_t* page_zip, > const byte* rec, > ulint flag) > __attribute__((nonnull)); > > > >void >page_zip_dir_insert( > > page_zip_des_t* page_zip, > const byte* prev_rec, > const byte* free_rec, > > byte* rec); > > > > >void >page_zip_dir_delete( > > page_zip_des_t* page_zip, > byte* rec, > const dict_index_t* index, > const offset_t* offsets, > const byte* free) > > __attribute__((nonnull(1,2,3,4))); > > > >void >page_zip_dir_add_slot( > > page_zip_des_t* page_zip, > ulint is_clustered) > > __attribute__((nonnull)); > > > > >byte* >page_zip_parse_write_header( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip); > > > > > > > >static inline >void >page_zip_write_header( > > page_zip_des_t* page_zip, > const byte* str, > ulint length, > mtr_t* mtr) > __attribute__((nonnull(1,2))); ># 451 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" >ulint >page_zip_reorganize( > > buf_block_t* block, > > > > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); > > > > > > >void >page_zip_copy_recs( > > page_zip_des_t* page_zip, > > > ib_page_t* page, > const page_zip_des_t* src_zip, > const ib_page_t* src, > dict_index_t* index, > mtr_t* mtr); > > > > > > > >byte* page_zip_parse_compress(const byte* ptr, const byte* end_ptr, > buf_block_t* block); ># 495 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" >uint32_t >page_zip_calc_checksum( > const void* data, > ulint size, > srv_checksum_algorithm_t algo > > > > >); > > > > > >ulint >page_zip_verify_checksum( > > const void* data, > ulint size); > > > > >static inline >void >page_zip_compress_write_log_no_data( > > ulint level, > const ib_page_t* page, > dict_index_t* index, > mtr_t* mtr); > > > >static inline >byte* >page_zip_parse_compress_no_data( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip, > dict_index_t* index) > __attribute__((nonnull(1,2))); > > > > >static inline >void >page_zip_reset_stat_per_index(); > > > > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" 2 ># 108 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" >static inline >ulint >page_zip_get_size( > > const page_zip_des_t* page_zip) >{ > ulint size; > > if (!page_zip->ssize) { > return(0); > } > > size = ((1U << 10) >> 1) << page_zip->ssize; > > do { } while(0); > do { } while(0); > > return(size); >} > > >static inline >void >page_zip_set_size( > > page_zip_des_t* page_zip, > ulint size) >{ > if (size) { > unsigned ssize; > > do { } while(0); > > for (ssize = 1; size > (512U << ssize); ssize++) { > } > > page_zip->ssize = ssize; > } else { > page_zip->ssize = 0; > } > > do { } while(0); >} ># 159 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" >static inline >ulint >page_zip_rec_needs_ext( > ulint rec_size, > ulint comp, > ulint n_fields, > const page_size_t& page_size) >{ > > > > do { } while(0) > ; > do { } while(0); > > > if (comp ? rec_size >= (16384) : > rec_size >= (16383)) { > return((1)); > } > > > if (page_size.is_compressed()) { > do { } while(0); > > > > > > > return(rec_size - (5 - 2 - 1) > >= page_zip_empty_size(n_fields, page_size.physical()) > || rec_size >= page_get_free_space_of_empty((1)) / 2); > } > > return(rec_size >= page_get_free_space_of_empty(comp) / 2); >} ># 224 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" >static inline >ulint >page_zip_get_trailer_len( > > const page_zip_des_t* page_zip, > ulint is_clust) >{ > ulint uncompressed_size; > > do { } while(0); > do {} while(0); > > if (!page_is_leaf(page_zip->data)) { > uncompressed_size = 2 > + 4; > do { } while(0); > } else if (is_clust) { > uncompressed_size = 2 > + 6 + 7; > } else { > uncompressed_size = 2; > do { } while(0); > } > > return((page_dir_get_n_heap(page_zip->data) - 2) > * uncompressed_size > + page_zip->n_blobs * 20); >} > > > > > >static inline >lint >page_zip_max_ins_size( > > const page_zip_des_t* page_zip, > ulint is_clust) >{ > ulint trailer_len; > > trailer_len = page_zip_get_trailer_len(page_zip, is_clust); ># 275 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic" > trailer_len += 2; > > return(lint(page_zip_get_size(page_zip) > - trailer_len - page_zip->m_end > - (5 - 2))); >} > > > > >static inline >ulint >page_zip_available( > > const page_zip_des_t* page_zip, > ulint is_clust, > ulint length, > ulint create) > >{ > ulint trailer_len; > > do { } while(0); > > trailer_len = page_zip_get_trailer_len(page_zip, is_clust); > > > > length -= 5 - 2; > > if (create > 0) { > > > > > > > > trailer_len += 2; > } > > return(length + trailer_len + page_zip->m_end > < page_zip_get_size(page_zip)); >} > > > >static inline >void >page_zip_des_init( > > page_zip_des_t* page_zip) > >{ > memset(page_zip, 0, sizeof *page_zip); >} > > > >void >page_zip_write_header_log( > > const byte* data, > ulint length, > mtr_t* mtr); > > > > > > > >static inline >void >page_zip_write_header( > > page_zip_des_t* page_zip, > const byte* str, > ulint length, > mtr_t* mtr) >{ > ulint pos; > > do { } while(0); > do {} while(0); > > pos = page_offset(str); > > do { } while(0); > > memcpy(page_zip->data + pos, str, length); > > > > > if (mtr) { > page_zip_write_header_log(str, length, mtr); > } >} > > > >static inline >void >page_zip_compress_write_log_no_data( > > ulint level, > const ib_page_t* page, > dict_index_t* index, > mtr_t* mtr) >{ > byte* log_ptr = mlog_open_and_write_index( > mtr, page, index, MLOG_ZIP_PAGE_COMPRESS_NO_DATA, 1); > > if (log_ptr) { > mach_write_to_1(log_ptr, level); > mlog_close(mtr, log_ptr + 1); > } >} > > > > >static inline >byte* >page_zip_parse_compress_no_data( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip, > dict_index_t* index) >{ > ulint level; > if (end_ptr == ptr) { > return(__null); > } > > level = mach_read_from_1(ptr); > > > > > > if (page > && !page_zip_compress(page_zip, page, index, level, __null, __null)) { > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic", 421); > } > > return(ptr + 1); >} > > > > >static inline >void >page_zip_reset_stat_per_index() > >{ > (&page_zip_stat_per_index_mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.ic", 435); > > page_zip_stat_per_index.erase( > page_zip_stat_per_index.begin(), > page_zip_stat_per_index.end()); > > (&page_zip_stat_per_index_mutex)->exit(); >} ># 555 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0zip.h" 2 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" 2 ># 46 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" >static inline >trx_id_t >page_get_max_trx_id( > > const ib_page_t* page) >{ > do { } while(0); > > return(mach_read_from_8(page + 38U + 18)); >} > > > > >static inline >void >page_update_max_trx_id( > > buf_block_t* block, > page_zip_des_t* page_zip, > > trx_id_t trx_id, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > > > > > > do { } while(0); > do { } while(0); > > if (page_get_max_trx_id((block)->frame) < trx_id) { > > page_set_max_trx_id(block, page_zip, trx_id, mtr); > } >} > > > > >static inline >ib_uint64_t >page_get_autoinc(const ib_page_t* page) >{ > do { } while(0); > do { } while(0); > return(mach_read_from_8(38U + 18 + page)); >} > > > > >static inline >node_seq_t >page_get_ssn_id( > > const ib_page_t* page) >{ > do { } while(0); > > return(static_cast<node_seq_t>( > mach_read_from_8(page + 26))); >} > > > >static inline >void >page_set_ssn_id( > > buf_block_t* block, > page_zip_des_t* page_zip, > > node_seq_t ssn_id, > mtr_t* mtr) >{ > ib_page_t* page = (block)->frame; > > do { } while(0) > > ; > > if (page_zip) { > mach_write_to_8(page + 26, ssn_id); > page_zip_write_header(page_zip, > page + 26, > 8, mtr); > } else if (mtr) { > mlog_write_ull(page + 26, ssn_id, mtr); > } else { > mach_write_to_8(page + 26, ssn_id); > } >} > > > > > >static inline >uint16_t >page_header_get_field( > > const ib_page_t* page, > ulint field) >{ > do { } while(0); > do { } while(0); > > return(mach_read_from_2(page + 38U + field)); >} > > > > >static inline >void >page_header_set_field( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint field, > ulint val) >{ > do { } while(0); > do { } while(0); > > > > do { } while(0); > do { } while(0); > > mach_write_to_2(page + 38U + field, val); > if (page_zip) { > page_zip_write_header(page_zip, > page + 38U + field, 2, __null); > } >} > > > > >static inline >uint16_t >page_header_get_offs( > > const ib_page_t* page, > ulint field) >{ > do { } while(0) > > ; > > uint16_t offs = page_header_get_field(page, field); > > do { } while(0); > > return(offs); >} > > > >static inline >void >page_header_set_ptr( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint field, > const byte* ptr) >{ > ulint offs; > > do { } while(0); > do { } while(0) > > ; > > if (ptr == __null) { > offs = 0; > } else { > offs = ulint(ptr - page); > } > > do { } while(0); > > page_header_set_field(page, page_zip, field, offs); >} > > > > >static inline >void >page_header_reset_last_insert( > > ib_page_t* page, > page_zip_des_t* page_zip, > > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > if (page_zip) { > mach_write_to_2(page + (38U + 10), 0); > page_zip_write_header(page_zip, > page + (38U + 10), > 2, mtr); > } else { > mlog_write_ulint(page + (38U + 10), 0, > MLOG_2BYTES, mtr); > } >} > > > > >static inline >ulint >page_rec_get_heap_no( > > const rec_t* rec) >{ > if (page_rec_is_comp(rec)) { > return(rec_get_heap_no_new(rec)); > } else { > return(rec_get_heap_no_old(rec)); > } >} > > > > >inline >bool >page_rec_is_user_rec(const rec_t* rec) >{ > do { } while(0); > return(page_rec_is_user_rec_low(page_offset(rec))); >} > > > > >inline >bool >page_rec_is_supremum(const rec_t* rec) >{ > do { } while(0); > return(page_rec_is_supremum_low(page_offset(rec))); >} > > > > >inline >bool >page_rec_is_infimum(const rec_t* rec) >{ > do { } while(0); > return(page_rec_is_infimum_low(page_offset(rec))); >} > > > > >static inline >bool >page_rec_is_first( > > const rec_t* rec, > const ib_page_t* page) >{ > do { } while(0); > > return(page_rec_get_next_const(((page) + page_get_infimum_offset(page))) == rec); >} > > > > >static inline >bool >page_rec_is_second( > > const rec_t* rec, > const ib_page_t* page) >{ > do { } while(0); > > return(page_rec_get_next_const( > page_rec_get_next_const(((page) + page_get_infimum_offset(page)))) == rec); >} > > > > >static inline >bool >page_rec_is_last( > > const rec_t* rec, > const ib_page_t* page) >{ > do { } while(0); > > return(page_rec_get_next_const(rec) == ((page) + page_get_supremum_offset(page))); >} > > > > >static inline >bool >page_rec_is_second_last( > > const rec_t* rec, > const ib_page_t* page) >{ > do { } while(0); > do { } while(0); > > return(page_rec_get_next_const( > page_rec_get_next_const(rec)) == ((page) + page_get_supremum_offset(page))); >} > > > > > >static inline >rec_t* >page_rec_get_nth( > > ib_page_t* page, > ulint nth) >{ > return((rec_t*) page_rec_get_nth_const(page, nth)); >} > > > > > > >static inline >rec_t* >page_get_middle_rec( > > ib_page_t* page) >{ > ulint middle = (ulint(page_get_n_recs(page)) > + 2) / 2; > > return(page_rec_get_nth(page, middle)); >} > > > > > > >static inline >ulint >page_get_page_no( > > const ib_page_t* page) >{ > do { } while(0); > return(mach_read_from_4(page + 4)); >} > > > > > >static inline >ulint >page_get_space_id( > > const ib_page_t* page) >{ > do { } while(0); > return(mach_read_from_4(page + 34)); >} > > > > > > > >static inline >uint16_t >page_get_n_recs( > > const ib_page_t* page) >{ > return(page_header_get_field(page, 16)); >} > > > > > >static inline >uint16_t >page_dir_get_n_slots( > > const ib_page_t* page) >{ > return(page_header_get_field(page, 0)); >} > > >static inline >void >page_dir_set_n_slots( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint n_slots) >{ > page_header_set_field(page, page_zip, 0, n_slots); >} > > > > >static inline >uint16_t >page_dir_get_n_heap( > > const ib_page_t* page) >{ > return(page_header_get_field(page, 4) & 0x7fff); >} > > > >static inline >void >page_dir_set_n_heap( > > ib_page_t* page, > page_zip_des_t* page_zip, > > > > > ulint n_heap) >{ > do { } while(0); > do { } while(0) > ; > > page_header_set_field(page, page_zip, 4, n_heap > | (0x8000 > & page_header_get_field(page, 4))); >} ># 536 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" >static inline >ulint >page_rec_check( > > const rec_t* rec) >{ > const ib_page_t* page = page_align(rec); > > do { if (__builtin_expect(!(ulint) (rec), (0))) { ut_dbg_assertion_failed("rec", "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic", 544); } } while (0); > > do { if (__builtin_expect(!(ulint) (page_offset(rec) <= page_header_get_field(page, 2)), (0))) { ut_dbg_assertion_failed("page_offset(rec) <= page_header_get_field(page, PAGE_HEAP_TOP)", "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic", 546); } } while (0); > do { if (__builtin_expect(!(ulint) (page_offset(rec) >= (38U + 36 + 2 * 10)), (0))) { ut_dbg_assertion_failed("page_offset(rec) >= PAGE_DATA", "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic", 547); } } while (0); > > return((1)); >} > > > > >static inline >const rec_t* >page_dir_slot_get_rec( > > const page_dir_slot_t* slot) >{ > return(page_align(slot) + mach_read_from_2(slot)); >} > > > >static inline >void >page_dir_slot_set_rec( > > page_dir_slot_t* slot, > rec_t* rec) >{ > do { } while(0); > > mach_write_to_2(slot, page_offset(rec)); >} > > > > >static inline >ulint >page_dir_slot_get_n_owned( > > const page_dir_slot_t* slot) >{ > const rec_t* rec = page_dir_slot_get_rec(slot); > if (page_rec_is_comp(slot)) { > return(rec_get_n_owned_new(rec)); > } else { > return(rec_get_n_owned_old(rec)); > } >} > > > >static inline >void >page_dir_slot_set_n_owned( > > page_dir_slot_t*slot, > page_zip_des_t* page_zip, > ulint n) >{ > rec_t* rec = (rec_t*) page_dir_slot_get_rec(slot); > if (page_rec_is_comp(slot)) { > rec_set_n_owned_new(rec, page_zip, n); > } else { > do { } while(0); > rec_set_n_owned_old(rec, n); > } >} > > > > > >static inline >ulint >page_dir_calc_reserved_space( > > ulint n_recs) >{ > return((2 * n_recs + 4 - 1) > / 4); >} > > > > >static inline >const rec_t* >page_rec_get_next_low( > > const rec_t* rec, > ulint comp) >{ > ulint offs; > const ib_page_t* page; > > do { } while(0); > > page = page_align(rec); > > offs = rec_get_next_offs(rec, comp); > > if (offs >= srv_page_size) { > fprintf(stderr, > "InnoDB: Next record offset is nonsensical %lu" > " in record at offset %lu\n" > "InnoDB: rec address %p, space id %lu, page %lu\n", > (ulong) offs, (ulong) page_offset(rec), > (void*) rec, > (ulong) page_get_space_id(page), > (ulong) page_get_page_no(page)); > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic", 656); > } else if (offs == 0) { > > return(__null); > } > > do { } while(0) > > > ; > > return(page + offs); >} > > > > >static inline >rec_t* >page_rec_get_next( > > rec_t* rec) >{ > return((rec_t*) page_rec_get_next_low(rec, page_rec_is_comp(rec))); >} > > > > >static inline >const rec_t* >page_rec_get_next_const( > > const rec_t* rec) >{ > return(page_rec_get_next_low(rec, page_rec_is_comp(rec))); >} > > > > > > >static inline >const rec_t* >page_rec_get_next_non_del_marked( > > const rec_t* rec) >{ > const rec_t* r; > ulint page_is_compact = page_rec_is_comp(rec); > > for (r = page_rec_get_next_const(rec); > !page_rec_is_supremum(r) > && rec_get_deleted_flag(r, page_is_compact); > r = page_rec_get_next_const(r)) { > > } > > return(r); >} > > > >static inline >void >page_rec_set_next( > > rec_t* rec, > > const rec_t* next) > >{ > ulint offs; > > do { } while(0); > do { } while(0); > do { } while(0); > > do { } while(0); > do { } while(0); > > offs = next != __null ? page_offset(next) : 0; > > if (page_rec_is_comp(rec)) { > rec_set_next_offs_new(rec, offs); > } else { > rec_set_next_offs_old(rec, offs); > } >} > > > > >static inline >const rec_t* >page_rec_get_prev_const( > > const rec_t* rec) > >{ > const page_dir_slot_t* slot; > ulint slot_no; > const rec_t* rec2; > const rec_t* prev_rec = __null; > const ib_page_t* page; > > do { } while(0); > > page = page_align(rec); > > do { } while(0); > > slot_no = page_dir_find_owner_slot(rec); > > do { if (__builtin_expect(!(ulint) (slot_no != 0), (0))) { ut_dbg_assertion_failed("slot_no != 0", "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic", 771); } } while (0); > > slot = ((page) + (srv_page_size - 8 - (slot_no - 1 + 1) * 2)); > > rec2 = page_dir_slot_get_rec(slot); > > if (page_is_comp(page)) { > while (rec != rec2) { > prev_rec = rec2; > rec2 = page_rec_get_next_low(rec2, (1)); > } > } else { > while (rec != rec2) { > prev_rec = rec2; > rec2 = page_rec_get_next_low(rec2, (0)); > } > } > > do { if (__builtin_expect(!(ulint) (prev_rec), (0))) { ut_dbg_assertion_failed("prev_rec", "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic", 789); } } while (0); > > return(prev_rec); >} > > > > >static inline >rec_t* >page_rec_get_prev( > > rec_t* rec) > >{ > return((rec_t*) page_rec_get_prev_const(rec)); >} > > > > >static inline >rec_t* >page_rec_find_owner_rec( > > rec_t* rec) >{ > do { } while(0); > > if (page_rec_is_comp(rec)) { > while (rec_get_n_owned_new(rec) == 0) { > rec = page_rec_get_next(rec); > } > } else { > while (rec_get_n_owned_old(rec) == 0) { > rec = page_rec_get_next(rec); > } > } > > return(rec); >} > > > > > >static inline >ulint >page_rec_get_base_extra_size( > > const rec_t* rec) >{ > do { typedef char compile_time_assert[(5 + 1 == 6) ? 1 : -1] __attribute__((unused)); } while(0) > ; > return(5 + (ulint) !page_rec_is_comp(rec)); >} > > > > > > > >static inline >uint16_t >page_get_data_size( > > const ib_page_t* page) >{ > uint16_t ret = page_header_get_field(page, 2) > - (page_is_comp(page) > ? (((38U + 36 + 2 * 10) + 2 * 5 + 8) + 8) > : (((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9)) > - page_header_get_field(page, 8); > do { } while(0); > return(ret); >} > > > > >static inline >void >page_mem_alloc_free( > > ib_page_t* page, > page_zip_des_t* page_zip, > > > rec_t* next_rec, > > ulint need) >{ > ulint garbage; ># 893 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" > page_header_set_ptr(page, page_zip, 6, next_rec); > > garbage = page_header_get_field(page, 8); > do { } while(0); > > page_header_set_field(page, page_zip, 8, garbage - need); >} > > > > >static inline >ulint >page_get_free_space_of_empty( > > ulint comp) >{ > if (comp) { > return((ulint)(srv_page_size > - (((38U + 36 + 2 * 10) + 2 * 5 + 8) + 8) > - 8 > - 2 * 2)); > } > > return((ulint)(srv_page_size > - (((38U + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9) > - 8 > - 2 * 2)); >} ># 931 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.ic" >static inline >ulint >page_get_max_insert_size( > > const ib_page_t* page, > ulint n_recs) >{ > ulint occupied; > ulint free_space; > > if (page_is_comp(page)) { > occupied = page_header_get_field(page, 2) > - (((38U + 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) > - (((38U + 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( > > const 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, > page_zip_des_t* page_zip, > > rec_t* rec, > > const dict_index_t* index, > const offset_t* offsets) > >{ > rec_t* free; > ulint garbage; > > do { } while(0); > free = (page_header_get_offs(page, 6) ? page + page_header_get_offs(page, 6) : __null); > > if (srv_immediate_scrub_data_uncompressed) { > > memset(rec, 0, rec_offs_data_size(offsets)); > } > > page_rec_set_next(rec, free); > page_header_set_ptr(page, page_zip, 6, rec); > > garbage = page_header_get_field(page, 8); > > page_header_set_field(page, page_zip, 8, > garbage + rec_offs_size(offsets)); > > if (page_zip) { > page_zip_dir_delete(page_zip, rec, index, offsets, free); > } else { > page_header_set_field(page, page_zip, 16, > ulint(page_get_n_recs(page)) - 1); > } >} ># 1253 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0page.h" 2 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" 2 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" >static inline >void >ibuf_mtr_start( > > mtr_t* mtr) >{ > (mtr)->start(); > mtr->enter_ibuf(); >} > > >static inline >void >ibuf_mtr_commit( > > mtr_t* mtr) >{ > do { } while(0); > ; > > (mtr)->commit(); >} > > >struct ibuf_t{ > ulint size; > > ulint max_size; > > ulint seg_size; > > > bool empty; > > > > > > ulint free_list_len; > ulint height; > dict_index_t* index; > > ulint n_merges; > ulint n_merged_ops[IBUF_OP_COUNT]; > > > ulint n_discarded_ops[IBUF_OP_COUNT]; > > > > >}; > > > > > > >void >ibuf_set_free_bits_func( > > buf_block_t* block, > > > > > > > ulint val); ># 117 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" >static inline >ulint >ibuf_should_try( > > dict_index_t* index, > ulint ignore_sec_unique) > > > >{ > return(ibuf_use != IBUF_USE_NONE > && ibuf->max_size != 0 > && !dict_index_is_clust(index) > && !dict_index_is_spatial(index) > && index->table->quiesce == QUIESCE_NONE > && (ignore_sec_unique || !dict_index_is_unique(index)) > && srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE); >} ># 143 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" >static inline >ulint >ibuf_inside( > > const mtr_t* mtr) >{ > return(mtr->is_inside_ibuf()); >} > > > > > >static inline >ulint >ibuf_bitmap_page( > const page_id_t page_id, > const page_size_t& page_size) >{ > return((page_id.page_no() & (page_size.physical() - 1)) > == 1); >} > > > > > > >static inline >ulint >ibuf_index_page_calc_free_bits( > ulint page_size, > ulint max_ins_size) >{ > ulint n; > do { } while(0); > do { } while(0); > > n = max_ins_size / (page_size / 32); > > if (n == 3) { > n = 2; > } > > if (n > 3) { > n = 3; > } > > return(n); >} > > > > > >static inline >ulint >ibuf_index_page_calc_free_from_bits( > const page_size_t& page_size, > ulint bits) >{ > do { } while(0); > do { } while(0) > ; > > if (bits == 3) { > return(4 * page_size.physical() > / 32); > } > > return(bits * (page_size.physical() > / 32)); >} > > > > >static inline >ulint >ibuf_index_page_calc_free_zip( > > const buf_block_t* block) >{ > ulint max_ins_size; > const page_zip_des_t* page_zip; > lint zip_max_ins; > > do { } while(0); ># 240 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" > max_ins_size = page_get_max_insert_size( > (block)->frame, 1); > > page_zip = ((block)->page.zip.data ? &(block)->page.zip : __null); > zip_max_ins = page_zip_max_ins_size(page_zip, > (0) ); > > if (zip_max_ins < 0) { > return(0); > } else if (max_ins_size > (ulint) zip_max_ins) { > max_ins_size = (ulint) zip_max_ins; > } > > return(ibuf_index_page_calc_free_bits(block->page.size.physical(), > max_ins_size)); >} > > > > >static inline >ulint >ibuf_index_page_calc_free( > > const buf_block_t* block) >{ > if (!block->page.size.is_compressed()) { > ulint max_ins_size; > > max_ins_size = page_get_max_insert_size_after_reorganize( > (block)->frame, 1); > > return(ibuf_index_page_calc_free_bits( > block->page.size.physical(), max_ins_size)); > } else { > return(ibuf_index_page_calc_free_zip(block)); > } >} ># 292 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.ic" >static inline >void >ibuf_update_free_bits_if_full( > > buf_block_t* block, > > > > > ulint max_ins_size, > > > ulint increase) > > >{ > ulint before; > ulint after; > > do { } while(0); > > before = ibuf_index_page_calc_free_bits( > block->page.size.physical(), max_ins_size); > > if (max_ins_size >= increase) { > > > > after = ibuf_index_page_calc_free_bits( > block->page.size.physical(), max_ins_size - increase); > > > > } else { > after = ibuf_index_page_calc_free(block); > } > > if (after == 0) { > > > > > > buf_page_make_young(&block->page); > } > > if (before > after) { > ibuf_set_free_bits_func(block,after); > } >} ># 451 "/buildbot/mariadb-10.2.31/storage/innobase/include/ibuf0ibuf.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" 2 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" >static inline >ulint >row_get_trx_id_offset( > > const dict_index_t* index, > const offset_t* offsets) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >trx_id_t >row_get_rec_trx_id( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets) > __attribute__((nonnull, warn_unused_result)); > > > >static inline >roll_ptr_t >row_get_rec_roll_ptr( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets) > __attribute__((nonnull, warn_unused_result)); ># 83 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" >dtuple_t* >row_build_index_entry_low( > > const dtuple_t* row, > > const row_ext_t* ext, > > dict_index_t* index, > mem_heap_t* heap, > > > ulint flag) > > > __attribute__((warn_unused_result, nonnull(1,3,4))); > > > > > > >static inline >dtuple_t* >row_build_index_entry( > > const dtuple_t* row, > > const row_ext_t* ext, > > dict_index_t* index, > mem_heap_t* heap) > > > __attribute__((warn_unused_result, nonnull(1,3,4))); > > > > >dtuple_t* >row_build( > > ulint type, > > > > > > > const dict_index_t* index, > const rec_t* rec, ># 141 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" > const offset_t* offsets, > > > const dict_table_t* col_table, ># 153 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" > const dtuple_t* add_cols, > > > const ulint* col_map, > > row_ext_t** ext, > > > mem_heap_t* heap); ># 187 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" >dtuple_t* >row_build_w_add_vcol( > ulint type, > const dict_index_t* index, > const rec_t* rec, > const offset_t* offsets, > const dict_table_t* col_table, > const dtuple_t* add_cols, > const dict_add_v_col_t* add_v, > const ulint* col_map, > row_ext_t** ext, > mem_heap_t* heap); > > > > > >dtuple_t* >row_rec_to_index_entry_low( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets, > ulint* n_ext, > > mem_heap_t* heap) > > __attribute__((warn_unused_result)); > > > > >dtuple_t* >row_rec_to_index_entry( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets, > ulint* n_ext, > > mem_heap_t* heap) > > __attribute__((warn_unused_result)); > > > > >dtuple_t* >row_build_row_ref( > > ulint type, > > > > dict_index_t* index, > const rec_t* rec, > > > > > > > mem_heap_t* heap) > > __attribute__((warn_unused_result)); > > > >void >row_build_row_ref_in_tuple( > > dtuple_t* ref, > > const rec_t* rec, > > > > > > > > const dict_index_t* index, > offset_t* offsets, > > trx_t* trx) > __attribute__((nonnull(1,2,3))); > > > >static inline >void >row_build_row_ref_fast( > > dtuple_t* ref, > > const ulint* map, > > > const rec_t* rec, > > > const offset_t* offsets); > > > > >ulint >row_search_on_row_ref( > > btr_pcur_t* pcur, > > ulint mode, > const dict_table_t* table, > const dtuple_t* ref, > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); > > > > >rec_t* >row_get_clust_rec( > > ulint mode, > const rec_t* rec, > dict_index_t* index, > dict_index_t** clust_index, > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); ># 325 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" >inline >ib_uint64_t >row_parse_int( > const byte* data, > ulint len, > ulint mtype, > bool unsigned_type); > > >enum row_search_result { > ROW_FOUND = 0, > ROW_NOT_FOUND, > ROW_BUFFERED, > > > > > ROW_NOT_DELETED_REF > >}; > > > > >enum row_search_result >row_search_index_entry( > > dict_index_t* index, > const dtuple_t* entry, > ulint mode, > btr_pcur_t* pcur, > > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); ># 376 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" >ulint >row_raw_format( > > const char* data, > ulint data_len, > > const dict_field_t* dict_field, > char* buf, > ulint buf_size) > > __attribute__((nonnull, warn_unused_result)); > > > > > >inline >void >row_mtr_start(mtr_t* mtr, dict_index_t* index, bool pessimistic) >{ > mtr->start(); > > switch (index->space) { > case static_cast<ulint>(0): > if (pessimistic > && !(index->type & (2 | 64))) { > ibuf_free_excess_pages(); > } > break; > case 0xFFFFFFFEU: > mtr->set_log_mode(MTR_LOG_NO_REDO); > break; > default: > mtr->set_named_space(index->space); > break; > } > > log_free_check(); >} > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic" 1 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/read0types.h" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/read0types.h" >class MVCC; > > > > >class ReadView { > > > class ids_t { > typedef trx_ids_t::value_type value_type; > > > > ids_t() : m_ptr(), m_size(), m_reserved() { } > > > > ~ids_t() { ::delete[] m_ptr; } > > > > > > > void reserve(ulint n); > > > > > void resize(ulint n) > { > do { } while(0); > > m_size = n; > } > > > > void clear() { resize(0); } > > > > ulint capacity() const { return(m_reserved); } > > > > > > > void assign(const value_type* start, const value_type* end); > > > > > void insert(value_type value); > > > > value_type front() const > { > do { } while(0); > > return(m_ptr[0]); > } > > > > value_type back() const > { > do { } while(0); > > return(m_ptr[m_size - 1]); > } > > > > > void push_back(value_type value); > > > > trx_id_t* data() { return(m_ptr); }; > > > > const trx_id_t* data() const { return(m_ptr); }; > > > > ulint size() const { return(m_size); } > > > > bool empty() const { return(size() == 0); } > > private: > > ids_t(const ids_t&); > ids_t& operator=(const ids_t&); > > private: > > value_type* m_ptr; > > > ulint m_size; > > > ulint m_reserved; > > friend class ReadView; > }; >public: > ReadView(); > ~ReadView(); > > > > static void check_trx_id_sanity( > trx_id_t id, > const table_name_t& name); > > > > > > bool changes_visible( > trx_id_t id, > const table_name_t& name) const > __attribute__((warn_unused_result)) > { > do { } while(0); > > if (id < m_up_limit_id || id == m_creator_trx_id) { > > return(true); > } > > check_trx_id_sanity(id, name); > > if (id >= m_low_limit_id) { > > return(false); > > } else if (m_ids.empty()) { > > return(true); > } > > const ids_t::value_type* p = m_ids.data(); > > return(!std::binary_search(p, p + m_ids.size(), id)); > } > > > > > bool sees(trx_id_t id) const > { > return(id < m_up_limit_id); > } > > > > void close() > { > do { } while(0); > m_creator_trx_id = (~(ib_id_t) 0); > } > > > > bool is_closed() const > { > return(m_closed); > } > > > > > void print_limits(FILE* file) const > { > fprintf(file, > "Trx read view will not see trx with" > " id >= " "%" "l" "u" ", sees < " "%" "l" "u" "\n", > m_low_limit_id, m_up_limit_id); > } > > > > trx_id_t low_limit_no() const > { > return(m_low_limit_no); > } > > > > trx_id_t low_limit_id() const > { > return(m_low_limit_id); > } > > > > bool empty() const > { > return(m_ids.empty()); > } ># 257 "/buildbot/mariadb-10.2.31/storage/innobase/include/read0types.h" >private: > > > inline void copy_trx_ids(const trx_ids_t& trx_ids); > > > > > > inline void prepare(trx_id_t id); > > > > inline void complete(); > > > > > inline void copy_prepare(const ReadView& other); > > > > > inline void copy_complete(); > > > > void creator_trx_id(trx_id_t id) > { > do { } while(0); > m_creator_trx_id = id; > } > > friend class MVCC; > >private: > > ReadView(const ReadView&); > ReadView& operator=(const ReadView&); > >private: > > > trx_id_t m_low_limit_id; > > > > > trx_id_t m_up_limit_id; > > > > trx_id_t m_creator_trx_id; > > > > ids_t m_ids; > > > > > trx_id_t m_low_limit_no; > > > bool m_closed; > > typedef ut_list_node<ReadView> node_t; > > > byte pad1[64 - sizeof(node_t)]; > node_t m_view_list; >}; ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0mutex.h" 1 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" 2 > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0xa.h" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0xa.h" ># 1 "/buildbot/mariadb-10.2.31/sql/handler.h" 1 ># 29 "/buildbot/mariadb-10.2.31/sql/handler.h" ># 1 "/buildbot/mariadb-10.2.31/sql/sql_const.h" 1 ># 26 "/buildbot/mariadb-10.2.31/sql/sql_const.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql_version.h" 1 ># 27 "/buildbot/mariadb-10.2.31/sql/sql_const.h" 2 ># 30 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_basic_types.h" 1 ># 23 "/buildbot/mariadb-10.2.31/sql/sql_basic_types.h" >typedef ulonglong sql_mode_t; >typedef int64 query_id_t; ># 31 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 1 ># 22 "/buildbot/mariadb-10.2.31/sql/mysqld.h" ># 1 "/buildbot/mariadb-10.2.31/sql/sql_mode.h" 1 ># 115 "/buildbot/mariadb-10.2.31/sql/sql_mode.h" >class Sql_mode_dependency >{ > sql_mode_t m_hard; > sql_mode_t m_soft; >public: > Sql_mode_dependency() > :m_hard(0), m_soft(0) > { } > Sql_mode_dependency(sql_mode_t hard, sql_mode_t soft) > :m_hard(hard), m_soft(soft) > { } > sql_mode_t hard() const { return m_hard; } > sql_mode_t soft() const { return m_soft; } > operator bool () const > { > return m_hard > 0 || m_soft > 0; > } > Sql_mode_dependency operator|(const Sql_mode_dependency &other) const > { > return Sql_mode_dependency(m_hard | other.m_hard, m_soft | other.m_soft); > } > Sql_mode_dependency operator&(const Sql_mode_dependency &other) const > { > return Sql_mode_dependency(m_hard & other.m_hard, m_soft & other.m_soft); > } > Sql_mode_dependency &operator|=(const Sql_mode_dependency &other) > { > m_hard|= other.m_hard; > m_soft|= other.m_soft; > return *this; > } > Sql_mode_dependency &operator&=(const Sql_mode_dependency &other) > { > m_hard&= other.m_hard; > m_soft&= other.m_soft; > return *this; > } > Sql_mode_dependency &soft_to_hard() > { > m_hard|= m_soft; > m_soft= 0; > return *this; > } > void push_dependency_warnings(THD *thd); >}; ># 23 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_bitmap.h" 1 ># 27 "/buildbot/mariadb-10.2.31/sql/sql_bitmap.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_bitmap.h" 1 ># 25 "/buildbot/mariadb-10.2.31/include/my_bitmap.h" >typedef uint32 my_bitmap_map; > >typedef struct st_bitmap >{ > my_bitmap_map *bitmap; > my_bitmap_map *last_word_ptr; > > > > > > mysql_mutex_t *mutex; > my_bitmap_map last_word_mask; > uint32 n_bits; >} MY_BITMAP; > > >extern "C" { > > > > > > >extern void create_last_word_mask(MY_BITMAP *map); >extern my_bool my_bitmap_init(MY_BITMAP *map, my_bitmap_map *buf, uint n_bits, > my_bool thread_safe); >extern my_bool bitmap_is_clear_all(const MY_BITMAP *map); >extern my_bool bitmap_is_prefix(const MY_BITMAP *map, uint prefix_size); >extern my_bool bitmap_is_set_all(const MY_BITMAP *map); >extern my_bool bitmap_is_subset(const MY_BITMAP *map1, const MY_BITMAP *map2); >extern my_bool bitmap_is_overlapping(const MY_BITMAP *map1, > const MY_BITMAP *map2); >extern my_bool bitmap_test_and_set(MY_BITMAP *map, uint bitmap_bit); >extern my_bool bitmap_test_and_clear(MY_BITMAP *map, uint bitmap_bit); >extern my_bool bitmap_fast_test_and_set(MY_BITMAP *map, uint bitmap_bit); >extern my_bool bitmap_fast_test_and_clear(MY_BITMAP *map, uint bitmap_bit); >extern my_bool bitmap_union_is_set_all(const MY_BITMAP *map1, > const MY_BITMAP *map2); >extern my_bool bitmap_exists_intersection(const MY_BITMAP **bitmap_array, > uint bitmap_count, > uint start_bit, uint end_bit); > >extern uint bitmap_set_next(MY_BITMAP *map); >extern uint bitmap_get_first(const MY_BITMAP *map); >extern uint bitmap_get_first_set(const MY_BITMAP *map); >extern uint bitmap_bits_set(const MY_BITMAP *map); >extern uint bitmap_get_next_set(const MY_BITMAP *map, uint bitmap_bit); >extern void my_bitmap_free(MY_BITMAP *map); >extern void bitmap_set_above(MY_BITMAP *map, uint from_byte, uint use_bit); >extern void bitmap_set_prefix(MY_BITMAP *map, uint prefix_size); >extern void bitmap_intersect(MY_BITMAP *map, const MY_BITMAP *map2); >extern void bitmap_subtract(MY_BITMAP *map, const MY_BITMAP *map2); >extern void bitmap_union(MY_BITMAP *map, const MY_BITMAP *map2); >extern void bitmap_xor(MY_BITMAP *map, const MY_BITMAP *map2); >extern void bitmap_invert(MY_BITMAP *map); >extern void bitmap_copy(MY_BITMAP *map, const MY_BITMAP *map2); > >extern uint bitmap_lock_set_next(MY_BITMAP *map); >extern void bitmap_lock_clear_bit(MY_BITMAP *map, uint bitmap_bit); ># 141 "/buildbot/mariadb-10.2.31/include/my_bitmap.h" >static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2) >{ > if (memcmp(map1->bitmap, map2->bitmap, 4*((((map1)->n_bits + 31)/32)-1)) != 0) > return (0); > return ((*map1->last_word_ptr | map1->last_word_mask) == > (*map2->last_word_ptr | map2->last_word_mask)); >} > > > > > > > >} ># 28 "/buildbot/mariadb-10.2.31/sql/sql_bitmap.h" 2 > >template <uint default_width> class Bitmap >{ > MY_BITMAP map; > uint32 buffer[(default_width+31)/32]; >public: > Bitmap() { init(); } > Bitmap(const Bitmap& from) { *this=from; } > explicit Bitmap(uint prefix_to_set) { init(prefix_to_set); } > void init() { my_bitmap_init(&map, buffer, default_width, 0); } > void init(uint prefix_to_set) { init(); set_prefix(prefix_to_set); } > uint length() const { return default_width; } > Bitmap& operator=(const Bitmap& map2) > { > init(); > memcpy(buffer, map2.buffer, sizeof(buffer)); > return *this; > } > void set_bit(uint n) { (((uchar*)(&map)->bitmap)[(n) / 8] |= (1 << ((n) & 7))); } > void clear_bit(uint n) { (((uchar*)(&map)->bitmap)[(n) / 8] &= ~ (1 << ((n) & 7))); } > void set_prefix(uint n) { bitmap_set_prefix(&map, n); } > void set_all() { (memset((&map)->bitmap, 0xFF, 4*((((&map))->n_bits + 31)/32))); } > void clear_all() { { memset((&map)->bitmap, 0, 4*((((&map))->n_bits + 31)/32)); }; } > void intersect(Bitmap& map2) { bitmap_intersect(&map, &map2.map); } > void intersect(ulonglong map2buff) > { > > ulonglong buf2; > MY_BITMAP map2; > > my_bitmap_init(&map2, (uint32 *) &buf2, sizeof(ulonglong) * 8, 0); > > > if (sizeof(ulonglong) >= 8) > { > do { uint def_temp= (uint) (map2buff), def_temp2= (uint) ((map2buff) >> 32); do { *((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2))))))=(char) ((def_temp)); *(((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2))))))+1)=(char) (((def_temp) >> 8)); *(((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2))))))+2)=(char) (((def_temp) >> 16)); *(((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2))))))+3)=(char) (((def_temp) >> 24)); } while(0); do { *((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))+4)))=(char) ((def_temp2)); *(((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))+4)))+1)=(char) (((def_temp2) >> 8)); *(((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))+4)))+2)=(char) (((def_temp2) >> 16)); *(((char *)((const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))+4)))+3)=(char) (((def_temp2) >> 24)); } while(0); } while(0) > > ; > } > else > { > do { } while(0); > do { *((char *)(const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))))=(char) ((static_cast<uint32>(map2buff))); *(((char *)(const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))))+1)=(char) (((static_cast<uint32>(map2buff)) >> 8)); *(((char *)(const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))))+2)=(char) (((static_cast<uint32>(map2buff)) >> 16)); *(((char *)(const_cast<uchar *>(static_cast<uchar *> (static_cast<void *>(&buf2)))))+3)=(char) (((static_cast<uint32>(map2buff)) >> 24)); } while(0) > > ; > } > > bitmap_intersect(&map, &map2); > } > > void intersect_extended(ulonglong map2buff) > { > intersect(map2buff); > if (map.n_bits > sizeof(ulonglong) * 8) > bitmap_set_above(&map, sizeof(ulonglong), > ((map2buff & (1LL << (sizeof(ulonglong) * 8 - 1))) ? 1 : 0)); > } > void subtract(Bitmap& map2) { bitmap_subtract(&map, &map2.map); } > void merge(Bitmap& map2) { bitmap_union(&map, &map2.map); } > bool is_set(uint n) const { return (uint) (((uchar*)(&map)->bitmap)[(n) / 8] & (1 << ((n) & 7))); } > bool is_prefix(uint n) const { return bitmap_is_prefix(&map, n); } > bool is_clear_all() const { return bitmap_is_clear_all(&map); } > bool is_set_all() const { return bitmap_is_set_all(&map); } > bool is_subset(const Bitmap& map2) const { return bitmap_is_subset(&map, &map2.map); } > bool is_overlapping(const Bitmap& map2) const { return bitmap_is_overlapping(&map, &map2.map); } > bool operator==(const Bitmap& map2) const { return bitmap_cmp(&map, &map2.map); } > bool operator!=(const Bitmap& map2) const { return !(*this == map2); } > char *print(char *buf) const > { > char *s=buf; > const uchar *e=(uchar *)buffer, *b=e+sizeof(buffer)-1; > while (!*b && b>e) > b--; > if ((*s=_dig_vec_upper[*b >> 4]) != '0') > s++; > *s++=_dig_vec_upper[*b & 15]; > while (--b>=e) > { > *s++=_dig_vec_upper[*b >> 4]; > *s++=_dig_vec_upper[*b & 15]; > } > *s=0; > return buf; > } > ulonglong to_ulonglong() const > { > if (sizeof(buffer) >= 8) > return ((ulonglong)(((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[0])) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[1])) << 8) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[2])) << 16) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[3])) << 24)) + (((ulonglong) (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[4])) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[5])) << 8) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[6])) << 16) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[7])) << 24))) << 32)) > ; > do { } while(0); > return (ulonglong) > (uint32) (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[0])) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[1])) << 8) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[2])) << 16) + (((uint32) ((uchar) (static_cast<const uchar *> (static_cast<const void *>(buffer)))[3])) << 24)) > ; > } > uint bits_set() > { > return bitmap_bits_set(&map); > } > class Iterator > { > Bitmap ↦ > uint no; > public: > Iterator(Bitmap<default_width> &map2): map(map2), no(0) {} > int operator++(int) { > if (no == default_width) return BITMAP_END; > while (!map.is_set(no)) > { > if ((++no) == default_width) return BITMAP_END; > } > return no ++; > } > enum { BITMAP_END= default_width }; > }; >}; > > >class Table_map_iterator >{ > ulonglong bmp; > uint no; >public: > Table_map_iterator(ulonglong t) : bmp(t), no(0) {} > int next_bit() > { > static const char last_bit[16]= {32, 0, 1, 0, > 2, 0, 1, 0, > 3, 0, 1, 0, > 2, 0, 1, 0}; > uint bit; > while ((bit= last_bit[bmp & 0xF]) == 32) > { > no += 4; > bmp= bmp >> 4; > if (!bmp) > return BITMAP_END; > } > bmp &= ~(1LL << bit); > return no + bit; > } > int operator++(int) { return next_bit(); } > enum { BITMAP_END= 64 }; >}; > >template <> class Bitmap<64> >{ > ulonglong map; >public: > Bitmap<64>() { } > explicit Bitmap<64>(uint prefix_to_set) { set_prefix(prefix_to_set); } > void init() { } > void init(uint prefix_to_set) { set_prefix(prefix_to_set); } > uint length() const { return 64; } > void set_bit(uint n) { map|= ((ulonglong)1) << n; } > void clear_bit(uint n) { map&= ~(((ulonglong)1) << n); } > void set_prefix(uint n) > { > if (n >= length()) > set_all(); > else > map= (((ulonglong)1) << n)-1; > } > void set_all() { map=~(ulonglong)0; } > void clear_all() { map=(ulonglong)0; } > void intersect(Bitmap<64>& map2) { map&= map2.map; } > void intersect(ulonglong map2) { map&= map2; } > void intersect_extended(ulonglong map2) { map&= map2; } > void subtract(Bitmap<64>& map2) { map&= ~map2.map; } > void merge(Bitmap<64>& map2) { map|= map2.map; } > bool is_set(uint n) const { return ((map & (((ulonglong) 1) << n)) ? 1 : 0); } > bool is_prefix(uint n) const { return map == (((ulonglong)1) << n)-1; } > bool is_clear_all() const { return map == (ulonglong)0; } > bool is_set_all() const { return map == ~(ulonglong)0; } > bool is_subset(const Bitmap<64>& map2) const { return !(map & ~map2.map); } > bool is_overlapping(const Bitmap<64>& map2) const { return (map & map2.map)!= 0; } > bool operator==(const Bitmap<64>& map2) const { return map == map2.map; } > char *print(char *buf) const { int2str(((map)),((buf)),((16)),(1)); return buf; } > ulonglong to_ulonglong() const { return map; } > class Iterator : public Table_map_iterator > { > public: > Iterator(Bitmap<64> &map2) : Table_map_iterator(map2.map) {} > }; > uint bits_set() > { > > uint res= 0, i= 0; > for (; i < 64 ; i++) > { > if (map & ((ulonglong)1<<i)) > res++; > } > return res; > } >}; ># 24 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" 1 ># 36 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" >extern "C" { ># 1 "/buildbot/mariadb-10.2.31/include/decimal.h" 1 ># 20 "/buildbot/mariadb-10.2.31/include/decimal.h" >extern "C" { > > >typedef enum >{TRUNCATE=0, HALF_EVEN, HALF_UP, CEILING, FLOOR} > decimal_round_mode; >typedef int32 decimal_digit_t; ># 37 "/buildbot/mariadb-10.2.31/include/decimal.h" >typedef struct st_decimal_t { > int intg, frac, len; > my_bool sign; > decimal_digit_t *buf; >} decimal_t; > >int internal_str2dec(const char *from, decimal_t *to, char **end, > my_bool fixed); >int decimal2string(const decimal_t *from, char *to, int *to_len, > int fixed_precision, int fixed_decimals, > char filler); >int decimal2ulonglong(const decimal_t *from, ulonglong *to); >int ulonglong2decimal(ulonglong from, decimal_t *to); >int decimal2longlong(const decimal_t *from, longlong *to); >int longlong2decimal(longlong from, decimal_t *to); >int decimal2double(const decimal_t *from, double *to); >int double2decimal(double from, decimal_t *to); >int decimal_actual_fraction(const decimal_t *from); >int decimal2bin(const decimal_t *from, uchar *to, int precision, int scale); >int bin2decimal(const uchar *from, decimal_t *to, int precision, int scale); > >int decimal_size(int precision, int scale); >int decimal_bin_size(int precision, int scale); >int decimal_result_size(decimal_t *from1, decimal_t *from2, char op, > int param); > >int decimal_intg(const decimal_t *from); >int decimal_add(const decimal_t *from1, const decimal_t *from2, decimal_t *to); >int decimal_sub(const decimal_t *from1, const decimal_t *from2, decimal_t *to); >int decimal_cmp(const decimal_t *from1, const decimal_t *from2); >int decimal_mul(const decimal_t *from1, const decimal_t *from2, decimal_t *to); >int decimal_div(const decimal_t *from1, const decimal_t *from2, decimal_t *to, > int scale_incr); >int decimal_mod(const decimal_t *from1, const decimal_t *from2, decimal_t *to); >int decimal_round(const decimal_t *from, decimal_t *to, int new_scale, > decimal_round_mode mode); >int decimal_is_zero(const decimal_t *from); >void max_decimal(int precision, int frac, decimal_t *to); ># 120 "/buildbot/mariadb-10.2.31/include/decimal.h" >} ># 38 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/my_decimal_limits.h" 1 ># 39 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" 2 >} > >class String; >typedef struct st_mysql_time MYSQL_TIME; > > > > > > > >inline uint my_decimal_size(uint precision, uint scale) >{ > > > > > return decimal_size(precision, scale) + 1; >} > > >inline int my_decimal_int_part(uint precision, uint decimals) >{ > return precision - ((decimals == 39) ? 0 : decimals); >} ># 74 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" >class my_decimal :public decimal_t >{ ># 86 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" > decimal_digit_t buffer[9]; > > > > > > >public: > > my_decimal(const my_decimal &rhs) : decimal_t(rhs) > { > init(); > for (uint i= 0; i < 9; i++) > buffer[i]= rhs.buffer[i]; > } > > my_decimal& operator=(const my_decimal &rhs) > { > if (this == &rhs) > return *this; > decimal_t::operator=(rhs); > for (uint i= 0; i < 9; i++) > buffer[i]= rhs.buffer[i]; > fix_buffer_pointer(); > return *this; > } > > void init() > { > > > > > len= 9; > buf= buffer; > do { do { ((void) ((buffer)), (void) ((sizeof(buffer)))); } while (0); ((void) (buffer), (void) (sizeof(buffer))); } while(0); > } > > my_decimal() > { > init(); > } > ~my_decimal() > { > sanity_check(); > } > > void sanity_check() > { > do { } while(0); > do { } while(0); > } > > void fix_buffer_pointer() { buf= buffer; } > > bool sign() const { return decimal_t::sign; } > void sign(bool s) { decimal_t::sign= s; } > uint precision() const { return intg + frac; } > > > void swap(my_decimal &rhs) > { > do { my_decimal dummy; dummy= *this; *this= rhs; rhs= dummy; } while(0); > } >}; ># 161 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" >bool str_set_decimal(uint mask, const my_decimal *val, uint fixed_prec, > uint fixed_dec, char filler, String *str, > CHARSET_INFO *cs); > >extern my_decimal decimal_zero; > > >int decimal_operation_results(int result, const char *value, const char *type); ># 177 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" >inline >void max_my_decimal(my_decimal *to, int precision, int frac) >{ > do { } while(0) > ; > max_decimal(precision, frac, to); >} > >inline void max_internal_decimal(my_decimal *to) >{ > max_my_decimal(to, ((9 * 9) - 8*2), 0); >} > >inline int check_result(uint mask, int result) >{ > if (result & mask) > decimal_operation_results(result, "", "DECIMAL"); > return result; >} > >inline int check_result_and_overflow(uint mask, int result, my_decimal *val) >{ > if (check_result(mask, result) & 2) > { > bool sign= val->sign(); > val->fix_buffer_pointer(); > max_internal_decimal(val); > val->sign(sign); > } > return result; >} > >inline uint my_decimal_length_to_precision(uint length, uint scale, > bool unsigned_flag) >{ > > do { } while(0); > return (uint) (length - (scale>0 ? 1:0) - > (unsigned_flag || !length ? 0:1)); >} > >inline uint32 my_decimal_precision_to_length_no_truncation(uint precision, > uint8 scale, > bool unsigned_flag) >{ > > > > > do { } while(0); > return (uint32)(precision + (scale > 0 ? 1 : 0) + > (unsigned_flag || !precision ? 0 : 1)); >} > >inline uint32 my_decimal_precision_to_length(uint precision, uint8 scale, > bool unsigned_flag) >{ > > > > > do { } while(0); > do { if ((precision) > (((9 * 9) - 8*2))) (precision)=(((9 * 9) - 8*2)); } while(0); > return my_decimal_precision_to_length_no_truncation(precision, scale, > unsigned_flag); >} > >inline >int my_decimal_string_length(const my_decimal *d) >{ > > return (((d)->intg ? (d)->intg : 1) + (d)->frac + ((d)->frac > 0) + 2); >} > > >inline >int my_decimal_max_length(const my_decimal *d) >{ > > return (((d)->intg ? (d)->intg : 1) + (d)->frac + ((d)->frac > 0) + 2) - 1; >} > > >inline >int my_decimal_get_binary_size(uint precision, uint scale) >{ > return decimal_bin_size((int)precision, (int)scale); >} > > >inline >void my_decimal2decimal(const my_decimal *from, my_decimal *to) >{ > *to= *from; >} > > >int my_decimal2binary(uint mask, const my_decimal *d, uchar *bin, int prec, > int scale); > > >inline >int binary2my_decimal(uint mask, const uchar *bin, my_decimal *d, int prec, > int scale) >{ > return check_result(mask, bin2decimal(bin, d, prec, scale)); >} > > >inline >int my_decimal_set_zero(my_decimal *d) >{ > > > > > > do { (static_cast<decimal_t*>(d))->buf[0]=0; (static_cast<decimal_t*>(d))->intg=1; (static_cast<decimal_t*>(d))->frac=0; (static_cast<decimal_t*>(d))->sign=0; } while(0); > return 0; >} > > >inline >bool my_decimal_is_zero(const my_decimal *decimal_value) >{ > return decimal_is_zero(decimal_value); >} > > >inline >int my_decimal_round(uint mask, const my_decimal *from, int scale, > bool truncate, my_decimal *to) >{ > return check_result(mask, decimal_round(from, to, scale, > (truncate ? TRUNCATE : HALF_UP))); >} > > >inline >int my_decimal_floor(uint mask, const my_decimal *from, my_decimal *to) >{ > return check_result(mask, decimal_round(from, to, 0, FLOOR)); >} > > >inline >int my_decimal_ceiling(uint mask, const my_decimal *from, my_decimal *to) >{ > return check_result(mask, decimal_round(from, to, 0, CEILING)); >} > > >inline bool str_set_decimal(const my_decimal *val, String *str, > CHARSET_INFO *cs) >{ > return str_set_decimal(30, val, 0, 0, 0, str, cs); >} > > >class String; >int my_decimal2string(uint mask, const my_decimal *d, uint fixed_prec, > uint fixed_dec, char filler, String *str); > > >bool my_decimal2seconds(const my_decimal *d, ulonglong *sec, ulong *microsec); > >my_decimal *seconds2my_decimal(bool sign, ulonglong sec, ulong microsec, > my_decimal *d); > > > > > >int my_decimal2int(uint mask, const decimal_t *d, bool unsigned_flag, > longlong *l); > >inline >int my_decimal2double(uint, const decimal_t *d, double *result) >{ > > return decimal2double(d, result); >} > > >inline >int str2my_decimal(uint mask, const char *str, my_decimal *d, char **end) >{ > return check_result_and_overflow(mask, internal_str2dec((str), (d), (end), 0), d); >} > > >int str2my_decimal(uint mask, const char *from, uint length, > CHARSET_INFO *charset, my_decimal *decimal_value, > const char **end); > >inline int str2my_decimal(uint mask, const char *from, uint length, > CHARSET_INFO *charset, my_decimal *decimal_value) >{ > const char *end; > return str2my_decimal(mask, from, length, charset, decimal_value, &end); >} ># 394 "/buildbot/mariadb-10.2.31/sql/my_decimal.h" >inline >int double2my_decimal(uint mask, double val, my_decimal *d) >{ > return check_result_and_overflow(mask, double2decimal(val, d), d); >} > > >inline >int int2my_decimal(uint mask, longlong i, my_bool unsigned_flag, my_decimal *d) >{ > return check_result(mask, (unsigned_flag ? > ulonglong2decimal((ulonglong)i, d) : > longlong2decimal(i, d))); >} > >inline >void decimal2my_decimal(decimal_t *from, my_decimal *to) >{ > do { } while(0); > to->intg= from->intg; > to->frac= from->frac; > to->sign(from->sign); > memcpy(to->buf, from->buf, to->len*sizeof(decimal_digit_t)); >} > > >inline >void my_decimal_neg(decimal_t *arg) >{ > if (decimal_is_zero(arg)) > { > arg->sign= 0; > return; > } > do { (arg)->sign^=1; } while(0); >} > > >inline >int my_decimal_add(uint mask, my_decimal *res, const my_decimal *a, > const my_decimal *b) >{ > return check_result_and_overflow(mask, > decimal_add(a, b, res), > res); >} > > >inline >int my_decimal_sub(uint mask, my_decimal *res, const my_decimal *a, > const my_decimal *b) >{ > return check_result_and_overflow(mask, > decimal_sub(a, b, res), > res); >} > > >inline >int my_decimal_mul(uint mask, my_decimal *res, const my_decimal *a, > const my_decimal *b) >{ > return check_result_and_overflow(mask, > decimal_mul(a, b, res), > res); >} > > >inline >int my_decimal_div(uint mask, my_decimal *res, const my_decimal *a, > const my_decimal *b, int div_scale_inc) >{ > return check_result_and_overflow(mask, > decimal_div(a, b, res, div_scale_inc), > res); >} > > >inline >int my_decimal_mod(uint mask, my_decimal *res, const my_decimal *a, > const my_decimal *b) >{ > return check_result_and_overflow(mask, > decimal_mod(a, b, res), > res); >} > > > > > >inline >int my_decimal_cmp(const my_decimal *a, const my_decimal *b) >{ > return decimal_cmp(a, b); >} > > >inline >int my_decimal_intg(const my_decimal *a) >{ > return decimal_intg(a); >} > > >void my_decimal_trim(ulonglong *precision, uint *scale); ># 25 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 > > ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" 1 ># 24 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_dir.h" 1 ># 24 "/buildbot/mariadb-10.2.31/include/my_dir.h" >extern "C" { ># 90 "/buildbot/mariadb-10.2.31/include/my_dir.h" >typedef struct fileinfo >{ > char *name; > struct stat *mystat; >} FILEINFO; > >typedef struct st_my_dir >{ > > > > > > > struct fileinfo *dir_entry; > uint number_of_files; >} MY_DIR; > >extern MY_DIR *my_dir(const char *path,myf MyFlags); >extern void my_dirend(MY_DIR *buffer); >extern struct stat *my_stat(const char *path, struct stat *stat_area, myf my_flags); >extern int my_fstat(int filenr, struct stat *stat_area, myf MyFlags); > > >} ># 25 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" 2 ># 489 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" >struct st_mysql_file >{ > > FILE *m_file; > > > > > > struct PSI_file *m_psi; >}; > > > > > > >typedef struct st_mysql_file MYSQL_FILE; > >static inline void inline_mysql_file_register( > > > > > > const char *category __attribute__ ((unused)), > void *info __attribute__ ((unused)), > int count __attribute__ ((unused)) > >) >{ > > > >} > >static inline char * >inline_mysql_file_fgets( > > > > char *str, int size, MYSQL_FILE *file) >{ > char *result; ># 547 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= fgets(str, size, file->m_file); > return result; >} > >static inline int >inline_mysql_file_fgetc( > > > > MYSQL_FILE *file) >{ > int result; ># 573 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= fgetc(file->m_file); > return result; >} > >static inline int >inline_mysql_file_fputs( > > > > const char *str, MYSQL_FILE *file) >{ > int result; ># 601 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= fputs(str, file->m_file); > return result; >} > >static inline int >inline_mysql_file_fputc( > > > > char c, MYSQL_FILE *file) >{ > int result; ># 627 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= fputc(c, file->m_file); > return result; >} > >static inline int >inline_mysql_file_fprintf(MYSQL_FILE *file, const char *format, ...) >{ > > > > int result; > va_list args; ># 655 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > __builtin_va_start(args,format); > result= vfprintf(file->m_file, format, args); > __builtin_va_end(args); > return result; >} > >static inline int >inline_mysql_file_vfprintf( > > > > MYSQL_FILE *file, const char *format, va_list args) >{ > int result; ># 683 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= vfprintf(file->m_file, format, args); > return result; >} > >static inline int >inline_mysql_file_fflush( > > > > MYSQL_FILE *file) >{ > int result; ># 709 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= fflush(file->m_file); > return result; >} > >static inline int inline_mysql_file_feof(MYSQL_FILE *file) >{ > > return feof(file->m_file); >} > >static inline int >inline_mysql_file_fstat( > > > > int filenr, struct stat *stat_area, myf flags) >{ > int result; ># 741 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_fstat(filenr, stat_area, flags); > return result; >} > >static inline struct stat * >inline_mysql_file_stat( > > > > const char *path, struct stat *stat_area, myf flags) >{ > struct stat *result; ># 767 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_stat(path, stat_area, flags); > return result; >} > >static inline int >inline_mysql_file_chsize( > > > > File file, my_off_t newlength, int filler, myf flags) >{ > int result; ># 794 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_chsize(file, newlength, filler, flags); > return result; >} > >static inline MYSQL_FILE* >inline_mysql_file_fopen( > > > > const char *filename, int flags, myf myFlags) >{ > MYSQL_FILE *that; > that= (MYSQL_FILE*) my_malloc(sizeof(MYSQL_FILE), (myf) (16U)); > if (__builtin_expect(((that != __null) != 0),1)) > { ># 829 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > that->m_psi= __null; > that->m_file= my_fopen(filename, flags, myFlags); > if (__builtin_expect(((that->m_file == __null) != 0),0)) > { > my_free(that); > return __null; > } > } > return that; >} > >static inline int >inline_mysql_file_fclose( > > > > MYSQL_FILE *file, myf flags) >{ > int result= 0; > if (__builtin_expect(((file != __null) != 0),1)) > { ># 865 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_fclose(file->m_file, flags); > my_free(file); > } > return result; >} > >static inline size_t >inline_mysql_file_fread( > > > > MYSQL_FILE *file, uchar *buffer, size_t count, myf flags) >{ > size_t result; ># 898 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_fread(file->m_file, buffer, count, flags); > return result; >} > >static inline size_t >inline_mysql_file_fwrite( > > > > MYSQL_FILE *file, const uchar *buffer, size_t count, myf flags) >{ > size_t result; ># 929 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_fwrite(file->m_file, buffer, count, flags); > return result; >} > >static inline my_off_t >inline_mysql_file_fseek( > > > > MYSQL_FILE *file, my_off_t pos, int whence, myf flags) >{ > my_off_t result; ># 955 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_fseek(file->m_file, pos, whence, flags); > return result; >} > >static inline my_off_t >inline_mysql_file_ftell( > > > > MYSQL_FILE *file, myf flags) >{ > my_off_t result; ># 981 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_ftell(file->m_file, flags); > return result; >} > >static inline File >inline_mysql_file_create( > > > > const char *filename, int create_flags, int access_flags, myf myFlags) >{ > File file; ># 1007 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > file= my_create(filename, create_flags, access_flags, myFlags); > return file; >} > >static inline File >inline_mysql_file_create_temp( > > > > char *to, const char *dir, const char *pfx, int mode, myf myFlags) >{ > File file; > > > > > > file= create_temp_file(to, dir, pfx, mode, myFlags); > > > > return file; >} > >static inline File >inline_mysql_file_open( > > > > const char *filename, int flags, myf myFlags) >{ > File file; ># 1053 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > file= my_open(filename, flags, myFlags); > return file; >} > >static inline int >inline_mysql_file_close( > > > > File file, myf flags) >{ > int result; ># 1079 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_close(file, flags); > return result; >} > >static inline size_t >inline_mysql_file_read( > > > > File file, uchar *buffer, size_t count, myf flags) >{ > size_t result; ># 1110 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_read(file, buffer, count, flags); > return result; >} > >static inline size_t >inline_mysql_file_write( > > > > File file, const uchar *buffer, size_t count, myf flags) >{ > size_t result; ># 1141 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_write(file, buffer, count, flags); > return result; >} > >static inline size_t >inline_mysql_file_pread( > > > > File file, uchar *buffer, size_t count, my_off_t offset, myf flags) >{ > size_t result; ># 1172 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_pread(file, buffer, count, offset, flags); > return result; >} > >static inline size_t >inline_mysql_file_pwrite( > > > > File file, const uchar *buffer, size_t count, my_off_t offset, myf flags) >{ > size_t result; ># 1203 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_pwrite(file, buffer, count, offset, flags); > return result; >} > >static inline my_off_t >inline_mysql_file_seek( > > > > File file, my_off_t pos, int whence, myf flags) >{ > my_off_t result; ># 1229 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_seek(file, pos, whence, flags); > return result; >} > >static inline my_off_t >inline_mysql_file_tell( > > > > File file, myf flags) >{ > my_off_t result; ># 1255 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_tell(file, flags); > return result; >} > >static inline int >inline_mysql_file_delete( > > > > const char *name, myf flags) >{ > int result; ># 1281 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_delete(name, flags); > return result; >} > >static inline int >inline_mysql_file_rename( > > > > const char *from, const char *to, myf flags) >{ > int result; ># 1307 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_rename(from, to, flags); > return result; >} > > >static inline File >inline_mysql_file_create_with_symlink( > > > > const char *linkname, const char *filename, int create_flags, > int access_flags, myf flags) >{ > File file; ># 1336 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > file= my_create_with_symlink(linkname, filename, create_flags, access_flags, > flags); > return file; >} > > >static inline int >inline_mysql_file_delete_with_symlink( > > > > const char *name, const char *ext, myf flags) >{ > int result; > char buf[512]; > char *fullname= fn_format(buf, name, "", ext, 4U | 256U); ># 1366 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_handler_delete_with_symlink(fullname, flags); > return result; >} > > >static inline int >inline_mysql_file_rename_with_symlink( > > > > const char *from, const char *to, myf flags) >{ > int result; ># 1393 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_rename_with_symlink(from, to, flags); > return result; >} > >static inline int >inline_mysql_file_sync( > > > > File fd, myf flags) >{ > int result= 0; ># 1419 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_file.h" > result= my_sync(fd, flags); > return result; >} ># 28 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_list.h" 1 ># 27 "/buildbot/mariadb-10.2.31/sql/sql_list.h" >THD *thd_get_current_thd(); > > > >class Sql_alloc >{ >public: > static void *operator new(size_t size) throw () > { > return thd_alloc(thd_get_current_thd(), size); > } > static void *operator new[](size_t size) throw () > { > return thd_alloc(thd_get_current_thd(), size); > } > static void *operator new[](size_t size, MEM_ROOT *mem_root) throw () > { return alloc_root(mem_root, size); } > static void *operator new(size_t size, MEM_ROOT *mem_root) throw () > { return alloc_root(mem_root, size); } > static void operator delete(void *ptr, size_t size) { do { do { ((void) ((ptr)), (void) ((size))); } while (0); ((void) 0); } while(0); } > static void operator delete(void *ptr, MEM_ROOT *mem_root) > { } > static void operator delete[](void *ptr, MEM_ROOT *mem_root) > { } > static void operator delete[](void *ptr, size_t size) { do { do { ((void) ((ptr)), (void) ((size))); } while (0); ((void) 0); } while(0); } > > > > > > inline Sql_alloc() {} > inline ~Sql_alloc() {} > > >}; ># 71 "/buildbot/mariadb-10.2.31/sql/sql_list.h" >template <typename T> >class SQL_I_List :public Sql_alloc >{ >public: > uint elements; > > T *first; > > T **next; > > SQL_I_List() { empty(); } > > SQL_I_List(const SQL_I_List &tmp) : Sql_alloc() > { > elements= tmp.elements; > first= tmp.first; > next= elements ? tmp.next : &first; > } > > SQL_I_List& operator=(const SQL_I_List &tmp) > { > elements= tmp.elements; > first= tmp.first; > next= tmp.next; > return *this; > } > > inline void empty() > { > elements= 0; > first= __null; > next= &first; > } > > inline void link_in_list(T *element, T **next_ptr) > { > elements++; > (*next)= element; > next= next_ptr; > *next= __null; > } > > inline void save_and_clear(SQL_I_List<T> *save) > { > *save= *this; > empty(); > } > > inline void push_front(SQL_I_List<T> *save) > { > > *save->next= first; > first= save->first; > elements+= save->elements; > } > > inline void push_back(SQL_I_List<T> *save) > { > if (save->first) > { > *next= save->first; > next= save->next; > elements+= save->elements; > } > } >}; ># 155 "/buildbot/mariadb-10.2.31/sql/sql_list.h" >struct list_node :public Sql_alloc >{ > list_node *next; > void *info; > list_node(void *info_par,list_node *next_par) > :next(next_par),info(info_par) > {} > list_node() > { > info= 0; > next= this; > } >}; > >typedef bool List_eq(void *a, void *b); > >extern list_node end_of_list; > >class base_list :public Sql_alloc >{ >protected: > list_node *first,**last; > >public: > uint elements; > > bool operator==(const base_list &rhs) const > { > return > elements == rhs.elements && > first == rhs.first && > last == rhs.last; > } > base_list& operator=(const base_list &rhs) > { > elements= rhs.elements; > first= rhs.first; > last= elements ? rhs.last : &first; > return *this; > } > > inline void empty() { elements=0; first= &end_of_list; last=&first;} > inline base_list() { empty(); } ># 207 "/buildbot/mariadb-10.2.31/sql/sql_list.h" > inline base_list(const base_list &tmp) :Sql_alloc() > { > *this= tmp; > } > > > > > > > bool copy(const base_list *rhs, MEM_ROOT *mem_root); > base_list(const base_list &rhs, MEM_ROOT *mem_root) { copy(&rhs, mem_root); } > inline base_list(bool) {} > inline bool push_back(void *info) > { > if (((*last)=new list_node(info, &end_of_list))) > { > last= &(*last)->next; > elements++; > return 0; > } > return 1; > } > inline bool push_back(void *info, MEM_ROOT *mem_root) > { > if (((*last)=new (mem_root) list_node(info, &end_of_list))) > { > last= &(*last)->next; > elements++; > return 0; > } > return 1; > } > bool push_front_impl(list_node *node) > { > if (node) > { > if (last == &first) > last= &node->next; > first=node; > elements++; > return 0; > } > return 1; > } > inline bool push_front(void *info) > { return push_front_impl(new list_node(info, first)); } > inline bool push_front(void *info, MEM_ROOT *mem_root) > { return push_front_impl(new (mem_root) list_node(info,first)); } > void remove(list_node **prev) > { > list_node *node=(*prev)->next; > if (!--elements) > last= &first; > else if (last == &(*prev)->next) > last= prev; > delete *prev; > *prev=node; > } > inline void append(base_list *list) > { > if (!list->is_empty()) > { > if (is_empty()) > { > *this= *list; > return; > } > *last= list->first; > last= list->last; > elements+= list->elements; > } > } > inline void *pop(void) > { > if (first == &end_of_list) return 0; > list_node *tmp=first; > first=first->next; > if (!--elements) > last= &first; > return tmp->info; > } > > > > > > > inline void disjoin(const base_list *list) > { > list_node **prev= &first; > list_node *node= first; > list_node *list_first= list->first; > elements=0; > while (node != &end_of_list && node != list_first) > { > prev= &node->next; > node= node->next; > elements++; > if (node == &end_of_list) > return; > } > *prev= &end_of_list; > last= prev; > } > inline void prepend(base_list *list) > { > if (!list->is_empty()) > { > if (is_empty()) > last= list->last; > *list->last= first; > first= list->first; > elements+= list->elements; > } > } > > > > inline void swap(base_list &rhs) > { > list_node **rhs_last=rhs.last; > do { list_node * dummy; dummy= first; first= rhs.first; rhs.first= dummy; } while(0); > do { uint dummy; dummy= elements; elements= rhs.elements; rhs.elements= dummy; } while(0); > rhs.last= last == &first ? &rhs.first : last; > last = rhs_last == &rhs.first ? &first : rhs_last; > } > > inline list_node* last_node() { return *last; } > inline list_node* first_node() { return first;} > inline void *head() { return first->info; } > inline void **head_ref() { return first != &end_of_list ? &first->info : 0; } > inline bool is_empty() { return first == &end_of_list ; } > inline list_node *last_ref() { return &end_of_list; } > inline bool add_unique(void *info, List_eq *eq) > { > list_node *node= first; > for (; > node != &end_of_list && (!(*eq)(node->info, info)); > node= node->next) ; > if (node == &end_of_list) > return push_back(info); > return 1; > } > friend class base_list_iterator; > friend class error_list; > friend class error_list_iterator; ># 426 "/buildbot/mariadb-10.2.31/sql/sql_list.h" >protected: > void after(void *info,list_node *node) > { > list_node *new_node=new list_node(info,node->next); > node->next=new_node; > elements++; > if (last == &(node->next)) > last= &new_node->next; > } >}; > > >class base_list_iterator >{ >protected: > base_list *list; > list_node **el,**prev,*current; > void sublist(base_list &ls, uint elm) > { > ls.first= *el; > ls.last= list->last; > ls.elements= elm; > } >public: > base_list_iterator() > :list(0), el(0), prev(0), current(0) > {} > > base_list_iterator(base_list &list_par) > { init(list_par); } > > inline void init(base_list &list_par) > { > list= &list_par; > el= &list_par.first; > prev= 0; > current= 0; > } > > inline void *next(void) > { > prev=el; > current= *el; > el= ¤t->next; > return current->info; > } > > inline void *peek() > { > return (*el)->info; > } > inline void *next_fast(void) > { > list_node *tmp; > tmp= *el; > el= &tmp->next; > return tmp->info; > } > inline void rewind(void) > { > el= &list->first; > } > inline void *replace(void *element) > { > void *tmp=current->info; > do { } while(0); > current->info=element; > return tmp; > } > void *replace(base_list &new_list) > { > void *ret_value=current->info; > if (!new_list.is_empty()) > { > *new_list.last=current->next; > current->info=new_list.first->info; > current->next=new_list.first->next; > if ((list->last == ¤t->next) && (new_list.elements > 1)) > list->last= new_list.last; > list->elements+=new_list.elements-1; > } > return ret_value; > } > inline void remove(void) > { > list->remove(prev); > el=prev; > current=0; > } > void after(void *element) > { > list->after(element,current); > current=current->next; > el= ¤t->next; > } > inline void **ref(void) > { > return ¤t->info; > } > inline bool is_last(void) > { > return el == &list->last_ref()->next; > } > inline bool at_end() > { > return current == &end_of_list; > } > friend class error_list_iterator; >}; > >template <class T> class List :public base_list >{ >public: > inline List() :base_list() {} > inline List(const List<T> &tmp, MEM_ROOT *mem_root) : > base_list(tmp, mem_root) {} > inline bool push_back(T *a) { return base_list::push_back(a); } > inline bool push_back(T *a, MEM_ROOT *mem_root) > { return base_list::push_back(a, mem_root); } > inline bool push_front(T *a) { return base_list::push_front(a); } > inline bool push_front(T *a, MEM_ROOT *mem_root) > { return base_list::push_front(a, mem_root); } > inline T* head() {return (T*) base_list::head(); } > inline T** head_ref() {return (T**) base_list::head_ref(); } > inline T* pop() {return (T*) base_list::pop(); } > inline void append(List<T> *list) { base_list::append(list); } > inline void prepend(List<T> *list) { base_list::prepend(list); } > inline void disjoin(List<T> *list) { base_list::disjoin(list); } > inline bool add_unique(T *a, bool (*eq)(T *a, T *b)) > { return base_list::add_unique(a, (List_eq *)eq); } > inline bool copy(const List<T> *list, MEM_ROOT *root) > { return base_list::copy(list, root); } > void delete_elements(void) > { > list_node *element,*next; > for (element=first; element != &end_of_list; element=next) > { > next=element->next; > delete (T*) element->info; > } > empty(); > } > > > >}; > > >template <class T> class List_iterator :public base_list_iterator >{ >public: > List_iterator(List<T> &a) : base_list_iterator(a) {} > List_iterator() : base_list_iterator() {} > inline void init(List<T> &a) { base_list_iterator::init(a); } > inline T* operator++(int) { return (T*) base_list_iterator::next(); } > inline T* peek() { return (T*) base_list_iterator::peek(); } > inline T *replace(T *a) { return (T*) base_list_iterator::replace(a); } > inline T *replace(List<T> &a) { return (T*) base_list_iterator::replace(a); } > inline void rewind(void) { base_list_iterator::rewind(); } > inline void remove() { base_list_iterator::remove(); } > inline void after(T *a) { base_list_iterator::after(a); } > inline T** ref(void) { return (T**) base_list_iterator::ref(); } >}; > > >template <class T> class List_iterator_fast :public base_list_iterator >{ >protected: > inline T *replace(T *a) { return (T*) 0; } > inline T *replace(List<T> &a) { return (T*) 0; } > inline void remove(void) { } > inline void after(T *a) { } > inline T** ref(void) { return (T**) 0; } > >public: > inline List_iterator_fast(List<T> &a) : base_list_iterator(a) {} > inline List_iterator_fast() : base_list_iterator() {} > inline void init(List<T> &a) { base_list_iterator::init(a); } > inline T* operator++(int) { return (T*) base_list_iterator::next_fast(); } > inline void rewind(void) { base_list_iterator::rewind(); } > void sublist(List<T> &list_arg, uint el_arg) > { > base_list_iterator::sublist(list_arg, el_arg); > } >}; ># 621 "/buildbot/mariadb-10.2.31/sql/sql_list.h" >template <class T> >inline void bubble_sort(List<T> *list_to_sort, > int (*sort_func)(T *a, T *b, void *arg), void *arg) >{ > bool swap; > T **ref1= 0; > T **ref2= 0; > List_iterator<T> it(*list_to_sort); > do > { > T **last_ref= ref1; > T *item1= it++; > ref1= it.ref(); > T *item2; > > swap= (0); > while ((item2= it++) && (ref2= it.ref()) != last_ref) > { > if (sort_func(item1, item2, arg) > 0) > { > *ref1= item2; > *ref2= item1; > swap= (1); > } > else > item1= item2; > ref1= ref2; > } > it.rewind(); > } while (swap); >} > > > > > > > >struct ilink >{ > struct ilink **prev,*next; > static void *operator new(size_t size) throw () > { > return (void*)my_malloc((uint)size, (myf) (16U | 8U | 4096U)); > } > static void operator delete(void* ptr_arg, size_t size) > { > my_free(ptr_arg); > } > > inline ilink() > { > prev=0; next=0; > } > inline void unlink() > { > > if (prev) *prev= next; > if (next) next->prev=prev; > prev=0 ; next=0; > } > inline void assert_linked() > { > do { } while(0); > } > virtual ~ilink() { unlink(); } >}; > > > > >class i_string: public ilink >{ >public: > const char* ptr; > i_string():ptr(0) { } > i_string(const char* s) : ptr(s) {} >}; > > >class i_string_pair: public ilink >{ >public: > const char* key; > const char* val; > i_string_pair():key(0),val(0) { } > i_string_pair(const char* key_arg, const char* val_arg) : > key(key_arg),val(val_arg) {} >}; > > >template <class T> class I_List_iterator; > > >class base_ilist >{ > struct ilink *first; > struct ilink last; >public: > inline void empty() { first= &last; last.prev= &first; } > base_ilist() { empty(); } > inline bool is_empty() { return first == &last; } > > > inline bool is_last(ilink *p) { return p->next == __null || p->next == &last; } > inline void append(ilink *a) > { > first->prev= &a->next; > a->next=first; a->prev= &first; first=a; > } > inline void push_back(ilink *a) > { > *last.prev= a; > a->next= &last; > a->prev= last.prev; > last.prev= &a->next; > } > inline struct ilink *get() > { > struct ilink *first_link=first; > if (first_link == &last) > return 0; > first_link->unlink(); > return first_link; > } > inline struct ilink *head() > { > return (first != &last) ? first : 0; > } ># 758 "/buildbot/mariadb-10.2.31/sql/sql_list.h" > void move_elements_to(base_ilist *new_owner) > { > do { } while(0); > new_owner->first= first; > new_owner->last= last; > empty(); > } > > friend class base_ilist_iterator; > private: > > > > > > base_ilist(const base_ilist&); > void operator=(const base_ilist&); >}; > > >class base_ilist_iterator >{ > base_ilist *list; > struct ilink **el,*current; >public: > base_ilist_iterator(base_ilist &list_par) :list(&list_par), > el(&list_par.first),current(0) {} > void *next(void) > { > > current= *el; > if (current == &list->last) return 0; > el= ¤t->next; > return current; > } >}; > > >template <class T> >class I_List :private base_ilist >{ >public: > I_List() :base_ilist() {} > inline bool is_last(T *p) { return base_ilist::is_last(p); } > inline void empty() { base_ilist::empty(); } > inline bool is_empty() { return base_ilist::is_empty(); } > inline void append(T* a) { base_ilist::append(a); } > inline void push_back(T* a) { base_ilist::push_back(a); } > inline T* get() { return (T*) base_ilist::get(); } > inline T* head() { return (T*) base_ilist::head(); } > inline void move_elements_to(I_List<T>* new_owner) { > base_ilist::move_elements_to(new_owner); > } > > friend class I_List_iterator<T>; > >}; > > >template <class T> class I_List_iterator :public base_ilist_iterator >{ >public: > I_List_iterator(I_List<T> &a) : base_ilist_iterator(a) {} > inline T* operator++(int) { return (T*) base_ilist_iterator::next(); } >}; ># 839 "/buildbot/mariadb-10.2.31/sql/sql_list.h" >template <typename T> >inline >void >list_copy_and_replace_each_value(List<T> &list, MEM_ROOT *mem_root) >{ > > List_iterator<T> it(list); > T *el; > while ((el= it++)) > it.replace(el->clone(mem_root)); >} > >void free_list(I_List <i_string_pair> *list); >void free_list(I_List <i_string> *list); ># 29 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_cmd.h" 1 ># 33 "/buildbot/mariadb-10.2.31/sql/sql_cmd.h" >enum enum_sql_command { > SQLCOM_SELECT, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_ALTER_TABLE, > SQLCOM_UPDATE, SQLCOM_INSERT, SQLCOM_INSERT_SELECT, > SQLCOM_DELETE, SQLCOM_TRUNCATE, SQLCOM_DROP_TABLE, SQLCOM_DROP_INDEX, > > SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS, > SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_STATUS, > SQLCOM_SHOW_ENGINE_LOGS, SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_MUTEX, > SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT, > SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS, > SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS, > SQLCOM_SHOW_TRIGGERS, > > SQLCOM_LOAD,SQLCOM_SET_OPTION,SQLCOM_LOCK_TABLES,SQLCOM_UNLOCK_TABLES, > SQLCOM_GRANT, > SQLCOM_CHANGE_DB, SQLCOM_CREATE_DB, SQLCOM_DROP_DB, SQLCOM_ALTER_DB, > SQLCOM_REPAIR, SQLCOM_REPLACE, SQLCOM_REPLACE_SELECT, > SQLCOM_CREATE_FUNCTION, SQLCOM_DROP_FUNCTION, > SQLCOM_REVOKE,SQLCOM_OPTIMIZE, SQLCOM_CHECK, > SQLCOM_ASSIGN_TO_KEYCACHE, SQLCOM_PRELOAD_KEYS, > SQLCOM_FLUSH, SQLCOM_KILL, SQLCOM_ANALYZE, > SQLCOM_ROLLBACK, SQLCOM_ROLLBACK_TO_SAVEPOINT, > SQLCOM_COMMIT, SQLCOM_SAVEPOINT, SQLCOM_RELEASE_SAVEPOINT, > SQLCOM_SLAVE_START, SQLCOM_SLAVE_STOP, > SQLCOM_BEGIN, SQLCOM_CHANGE_MASTER, > SQLCOM_RENAME_TABLE, > SQLCOM_RESET, SQLCOM_PURGE, SQLCOM_PURGE_BEFORE, SQLCOM_SHOW_BINLOGS, > SQLCOM_SHOW_OPEN_TABLES, > SQLCOM_HA_OPEN, SQLCOM_HA_CLOSE, SQLCOM_HA_READ, > SQLCOM_SHOW_SLAVE_HOSTS, SQLCOM_DELETE_MULTI, SQLCOM_UPDATE_MULTI, > SQLCOM_SHOW_BINLOG_EVENTS, SQLCOM_DO, > SQLCOM_SHOW_WARNS, SQLCOM_EMPTY_QUERY, SQLCOM_SHOW_ERRORS, > SQLCOM_SHOW_STORAGE_ENGINES, SQLCOM_SHOW_PRIVILEGES, > SQLCOM_HELP, SQLCOM_CREATE_USER, SQLCOM_DROP_USER, SQLCOM_RENAME_USER, > SQLCOM_REVOKE_ALL, SQLCOM_CHECKSUM, > SQLCOM_CREATE_PROCEDURE, SQLCOM_CREATE_SPFUNCTION, SQLCOM_CALL, > SQLCOM_DROP_PROCEDURE, SQLCOM_ALTER_PROCEDURE,SQLCOM_ALTER_FUNCTION, > SQLCOM_SHOW_CREATE_PROC, SQLCOM_SHOW_CREATE_FUNC, > SQLCOM_SHOW_STATUS_PROC, SQLCOM_SHOW_STATUS_FUNC, > SQLCOM_PREPARE, SQLCOM_EXECUTE, SQLCOM_DEALLOCATE_PREPARE, > SQLCOM_CREATE_VIEW, SQLCOM_DROP_VIEW, > SQLCOM_CREATE_TRIGGER, SQLCOM_DROP_TRIGGER, > SQLCOM_XA_START, SQLCOM_XA_END, SQLCOM_XA_PREPARE, > SQLCOM_XA_COMMIT, SQLCOM_XA_ROLLBACK, SQLCOM_XA_RECOVER, > SQLCOM_SHOW_PROC_CODE, SQLCOM_SHOW_FUNC_CODE, > SQLCOM_ALTER_TABLESPACE, > SQLCOM_INSTALL_PLUGIN, SQLCOM_UNINSTALL_PLUGIN, > SQLCOM_SHOW_AUTHORS, SQLCOM_BINLOG_BASE64_EVENT, > SQLCOM_SHOW_PLUGINS, SQLCOM_SHOW_CONTRIBUTORS, > SQLCOM_CREATE_SERVER, SQLCOM_DROP_SERVER, SQLCOM_ALTER_SERVER, > SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT, SQLCOM_DROP_EVENT, > SQLCOM_SHOW_CREATE_EVENT, SQLCOM_SHOW_EVENTS, > SQLCOM_SHOW_CREATE_TRIGGER, > SQLCOM_ALTER_DB_UPGRADE, > SQLCOM_SHOW_PROFILE, SQLCOM_SHOW_PROFILES, > SQLCOM_SIGNAL, SQLCOM_RESIGNAL, > SQLCOM_SHOW_RELAYLOG_EVENTS, > SQLCOM_GET_DIAGNOSTICS, > SQLCOM_SLAVE_ALL_START, SQLCOM_SLAVE_ALL_STOP, > SQLCOM_SHOW_EXPLAIN, SQLCOM_SHUTDOWN, > SQLCOM_CREATE_ROLE, SQLCOM_DROP_ROLE, SQLCOM_GRANT_ROLE, SQLCOM_REVOKE_ROLE, > SQLCOM_COMPOUND, > SQLCOM_SHOW_GENERIC, > SQLCOM_ALTER_USER, > SQLCOM_SHOW_CREATE_USER, > SQLCOM_EXECUTE_IMMEDIATE, > > > > > > > SQLCOM_END >}; > > >class Storage_engine_name >{ >protected: > LEX_CSTRING m_storage_engine_name; >public: > Storage_engine_name() > { > m_storage_engine_name.str= __null; > m_storage_engine_name.length= 0; > } > Storage_engine_name(const LEX_CSTRING &name) > :m_storage_engine_name(name) > { } > Storage_engine_name(const LEX_STRING &name) > { > m_storage_engine_name.str= name.str; > m_storage_engine_name.length= name.length; > } > bool resolve_storage_engine_with_error(THD *thd, > handlerton **ha, > bool tmp_table); >}; ># 156 "/buildbot/mariadb-10.2.31/sql/sql_cmd.h" >class Sql_cmd : public Sql_alloc >{ >private: > Sql_cmd(const Sql_cmd &); > void operator=(Sql_cmd &); > >public: > > > > virtual enum_sql_command sql_command_code() const = 0; > > > > > > > > virtual bool execute(THD *thd) = 0; > > virtual Storage_engine_name *option_storage_engine_name() > { > return __null; > } > >protected: > Sql_cmd() > {} > > virtual ~Sql_cmd() > { > > > > > > > do { } while(0); > } >}; > > >class Sql_cmd_create_table: public Sql_cmd, > public Storage_engine_name >{ >public: > enum_sql_command sql_command_code() const { return SQLCOM_CREATE_TABLE; } > Storage_engine_name *option_storage_engine_name() { return this; } > bool execute(THD *thd); >}; ># 30 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/my_rnd.h" 1 ># 19 "/buildbot/mariadb-10.2.31/include/my_rnd.h" >extern "C" { > >struct my_rnd_struct { > unsigned long seed1,seed2,max_value; > double max_value_dbl; >}; > >void my_rnd_init(struct my_rnd_struct *rand_st, ulong seed1, ulong seed2); >double my_rnd(struct my_rnd_struct *rand_st); >double my_rnd_ssl(struct my_rnd_struct *rand_st); > >} ># 31 "/buildbot/mariadb-10.2.31/sql/mysqld.h" 2 > > > >class THD; >class CONNECT; >struct handlerton; >class Time_zone; > >struct scheduler_functions; > >typedef struct st_mysql_const_lex_string LEX_CSTRING; >typedef struct st_mysql_show_var SHOW_VAR; > > >typedef Bitmap<64> key_map; ># 70 "/buildbot/mariadb-10.2.31/sql/mysqld.h" >extern MY_TIMER_INFO sys_timer_info; > > > > > >enum enum_slave_parallel_mode { > SLAVE_PARALLEL_NONE, > SLAVE_PARALLEL_MINIMAL, > SLAVE_PARALLEL_CONSERVATIVE, > SLAVE_PARALLEL_OPTIMISTIC, > SLAVE_PARALLEL_AGGRESSIVE >}; > > >void kill_mysql(THD *thd= 0); >void close_connection(THD *thd, uint sql_errno= 0); >void handle_connection_in_main_thread(CONNECT *thd); >void create_thread_to_handle_connection(CONNECT *connect); >void signal_thd_deleted(); >void unlink_thd(THD *thd); >bool one_thread_per_connection_end(THD *thd, bool put_in_cache); >void flush_thread_cache(); >void refresh_status(THD *thd); >bool is_secure_file_path(char *path); >void dec_connection_count(scheduler_functions *scheduler); >extern void init_net_server_extension(THD *thd); > >extern "C" CHARSET_INFO *system_charset_info; >extern CHARSET_INFO *files_charset_info ; >extern CHARSET_INFO *national_charset_info; >extern CHARSET_INFO *table_alias_charset; > > > > >extern CHARSET_INFO *error_message_charset_info; > >extern CHARSET_INFO *character_set_filesystem; > >extern MY_BITMAP temp_pool; >extern bool opt_large_files; >extern bool opt_update_log, opt_bin_log, opt_error_log, opt_bin_log_compress; >extern uint opt_bin_log_compress_min_len; >extern my_bool opt_log, opt_bootstrap; >extern my_bool opt_backup_history_log; >extern my_bool opt_backup_progress_log; >extern my_bool opt_support_flashback; >extern ulonglong log_output_options; >extern ulong log_backup_output_options; >extern my_bool opt_log_queries_not_using_indexes; >extern bool opt_disable_networking, opt_skip_show_db; >extern bool opt_skip_name_resolve; >extern bool opt_ignore_builtin_innodb; >extern my_bool opt_character_set_client_handshake; >extern my_bool debug_assert_on_not_freed_memory; >extern bool volatile abort_loop; >extern bool volatile in_bootstrap; >extern uint connection_count; >extern my_bool opt_safe_user_create; >extern my_bool opt_safe_show_db, opt_local_infile, opt_myisam_use_mmap; >extern my_bool opt_slave_compressed_protocol, use_temp_pool; >extern ulong slave_exec_mode_options, slave_ddl_exec_mode_options; >extern ulong slave_retried_transactions; >extern ulong slave_run_triggers_for_rbr; >extern ulonglong slave_type_conversions_options; >extern my_bool read_only, opt_readonly; >extern my_bool lower_case_file_system; >extern my_bool opt_enable_named_pipe, opt_sync_frm, opt_allow_suspicious_udfs; >extern my_bool opt_secure_auth; >extern const char *current_dbug_option; >extern char* opt_secure_file_priv; >extern char* opt_secure_backup_file_priv; >extern size_t opt_secure_backup_file_priv_len; >extern my_bool opt_log_slow_admin_statements, opt_log_slow_slave_statements; >extern my_bool sp_automatic_privileges, opt_noacl; >extern ulong use_stat_tables; >extern my_bool opt_old_style_user_limits, trust_function_creators; >extern uint opt_crash_binlog_innodb; >extern const char *shared_memory_base_name; >extern char *mysqld_unix_port; >extern my_bool opt_enable_shared_memory; >extern ulong opt_replicate_events_marked_for_skip; >extern char *default_tz_name; >extern Time_zone *default_tz; >extern char *default_storage_engine, *default_tmp_storage_engine; >extern char *enforced_storage_engine; >extern bool opt_endinfo, using_udf_functions; >extern my_bool locked_in_memory; >extern bool opt_using_transactions; >extern ulong max_long_data_size; >extern ulong current_pid; >extern ulong expire_logs_days; >extern my_bool relay_log_recovery; >extern uint sync_binlog_period, sync_relaylog_period, > sync_relayloginfo_period, sync_masterinfo_period; >extern ulong opt_tc_log_size, tc_log_max_pages_used, tc_log_page_size; >extern ulong tc_log_page_waits; >extern my_bool relay_log_purge, opt_innodb_safe_binlog, opt_innodb; >extern my_bool relay_log_recovery; >extern uint select_errors,ha_open_options; >extern ulonglong test_flags; >extern uint protocol_version, mysqld_port, dropping_tables; >extern ulong delay_key_write_options; >extern char *opt_logname, *opt_slow_logname, *opt_bin_logname, > *opt_relay_logname; >extern char *opt_binlog_index_name; >extern char *opt_backup_history_logname, *opt_backup_progress_logname, > *opt_backup_settings_name; >extern const char *log_output_str; >extern const char *log_backup_output_str; >extern char *mysql_home_ptr, *pidfile_name_ptr; >extern char glob_hostname[512]; >extern char mysql_home[512]; >extern char pidfile_name[512], system_time_zone[30], *opt_init_file; >extern char default_logfile_name[512]; >extern char log_error_file[512], *opt_tc_log_file; >extern const double log_10[309]; >extern ulonglong keybuff_size; >extern ulonglong thd_startup_options; >extern my_thread_id global_thread_id; >extern ulong binlog_cache_use, binlog_cache_disk_use; >extern ulong binlog_stmt_cache_use, binlog_stmt_cache_disk_use; >extern ulong aborted_threads,aborted_connects; >extern ulong delayed_insert_timeout; >extern ulong delayed_insert_limit, delayed_queue_size; >extern ulong delayed_insert_threads, delayed_insert_writes; >extern ulong delayed_rows_in_use,delayed_insert_errors; >extern int32 slave_open_temp_tables; >extern ulonglong query_cache_size; >extern ulong query_cache_limit; >extern ulong query_cache_min_res_unit; >extern ulong slow_launch_threads, slow_launch_time; >extern ulong max_connections; >extern uint max_digest_length; >extern ulong max_connect_errors, connect_timeout; >extern my_bool slave_allow_batching; >extern my_bool allow_slave_start; >extern LEX_CSTRING reason_slave_blocked; >extern ulong slave_trans_retries; >extern uint slave_net_timeout; >extern int max_user_connections; >extern volatile ulong cached_thread_count; >extern ulong what_to_log,flush_time; >extern uint max_prepared_stmt_count, prepared_stmt_count; >extern ulong open_files_limit; >extern ulonglong binlog_cache_size, binlog_stmt_cache_size; >extern ulonglong max_binlog_cache_size, max_binlog_stmt_cache_size; >extern ulong max_binlog_size; >extern ulong slave_max_allowed_packet; >extern ulong opt_binlog_rows_event_max_size; >extern ulong rpl_recovery_rank, thread_cache_size; >extern ulong stored_program_cache_size; >extern ulong opt_slave_parallel_threads; >extern ulong opt_slave_domain_parallel_threads; >extern ulong opt_slave_parallel_max_queued; >extern ulong opt_slave_parallel_mode; >extern ulong opt_binlog_commit_wait_count; >extern ulong opt_binlog_commit_wait_usec; >extern my_bool opt_gtid_ignore_duplicates; >extern ulong back_log; >extern ulong executed_events; >extern char language[512]; >extern "C" ulong server_id; >extern ulong concurrency; >extern time_t server_start_time, flush_status_time; >extern char *opt_mysql_tmpdir, mysql_charsets_dir[]; >extern int mysql_unpacked_real_data_home_len; >extern MY_TMPDIR mysql_tmpdir_list; >extern const char *first_keyword, *delayed_user, *binary_keyword; >extern const char *my_localhost; >extern const char **errmesg; >extern const char *myisam_recover_options_str; >extern const char *in_left_expr_name, *in_additional_cond, *in_having_cond; >extern SHOW_VAR status_vars[]; >extern struct system_variables max_system_variables; >extern struct system_status_var global_status_var; >extern struct my_rnd_struct sql_rand; >extern const char *opt_date_time_formats[]; >extern handlerton *partition_hton; >extern handlerton *myisam_hton; >extern handlerton *heap_hton; >extern const char *load_default_groups[]; >extern struct my_option my_long_options[]; >int handle_early_options(); >extern int mysqld_server_started, mysqld_server_initialized; >extern "C" int orig_argc; >extern "C" char **orig_argv; >extern pthread_attr_t connection_attrib; >extern MYSQL_FILE *bootstrap_file; >extern my_bool old_mode; >extern LEX_STRING opt_init_connect, opt_init_slave; >extern int bootstrap_error; >extern I_List<THD> threads; >extern char err_shared_dir[]; >extern ulong connection_errors_select; >extern ulong connection_errors_accept; >extern ulong connection_errors_tcpwrap; >extern ulong connection_errors_internal; >extern ulong connection_errors_max_connection; >extern ulong connection_errors_peer_addr; >extern ulong log_warnings; >extern my_bool encrypt_binlog; >extern my_bool encrypt_tmp_disk_tables, encrypt_tmp_files; >extern ulong encryption_algorithm; >extern const char *encryption_algorithm_names[]; ># 374 "/buildbot/mariadb-10.2.31/sql/mysqld.h" >extern PSI_stage_info stage_apply_event; >extern PSI_stage_info stage_after_create; >extern PSI_stage_info stage_after_opening_tables; >extern PSI_stage_info stage_after_table_lock; >extern PSI_stage_info stage_allocating_local_table; >extern PSI_stage_info stage_alter_inplace_prepare; >extern PSI_stage_info stage_alter_inplace; >extern PSI_stage_info stage_alter_inplace_commit; >extern PSI_stage_info stage_after_apply_event; >extern PSI_stage_info stage_changing_master; >extern PSI_stage_info stage_checking_master_version; >extern PSI_stage_info stage_checking_permissions; >extern PSI_stage_info stage_checking_privileges_on_cached_query; >extern PSI_stage_info stage_checking_query_cache_for_query; >extern PSI_stage_info stage_cleaning_up; >extern PSI_stage_info stage_closing_tables; >extern PSI_stage_info stage_connecting_to_master; >extern PSI_stage_info stage_converting_heap_to_myisam; >extern PSI_stage_info stage_copying_to_group_table; >extern PSI_stage_info stage_copying_to_tmp_table; >extern PSI_stage_info stage_copy_to_tmp_table; >extern PSI_stage_info stage_creating_delayed_handler; >extern PSI_stage_info stage_creating_sort_index; >extern PSI_stage_info stage_creating_table; >extern PSI_stage_info stage_creating_tmp_table; >extern PSI_stage_info stage_deleting_from_main_table; >extern PSI_stage_info stage_deleting_from_reference_tables; >extern PSI_stage_info stage_discard_or_import_tablespace; >extern PSI_stage_info stage_end; >extern PSI_stage_info stage_enabling_keys; >extern PSI_stage_info stage_executing; >extern PSI_stage_info stage_execution_of_init_command; >extern PSI_stage_info stage_explaining; >extern PSI_stage_info stage_finding_key_cache; >extern PSI_stage_info stage_finished_reading_one_binlog_switching_to_next_binlog; >extern PSI_stage_info stage_flushing_relay_log_and_master_info_repository; >extern PSI_stage_info stage_flushing_relay_log_info_file; >extern PSI_stage_info stage_freeing_items; >extern PSI_stage_info stage_fulltext_initialization; >extern PSI_stage_info stage_got_handler_lock; >extern PSI_stage_info stage_got_old_table; >extern PSI_stage_info stage_init; >extern PSI_stage_info stage_insert; >extern PSI_stage_info stage_invalidating_query_cache_entries_table; >extern PSI_stage_info stage_invalidating_query_cache_entries_table_list; >extern PSI_stage_info stage_killing_slave; >extern PSI_stage_info stage_logging_slow_query; >extern PSI_stage_info stage_making_temp_file_append_before_load_data; >extern PSI_stage_info stage_making_temp_file_create_before_load_data; >extern PSI_stage_info stage_manage_keys; >extern PSI_stage_info stage_master_has_sent_all_binlog_to_slave; >extern PSI_stage_info stage_opening_tables; >extern PSI_stage_info stage_optimizing; >extern PSI_stage_info stage_preparing; >extern PSI_stage_info stage_purging_old_relay_logs; >extern PSI_stage_info stage_query_end; >extern PSI_stage_info stage_queueing_master_event_to_the_relay_log; >extern PSI_stage_info stage_reading_event_from_the_relay_log; >extern PSI_stage_info stage_recreating_table; >extern PSI_stage_info stage_registering_slave_on_master; >extern PSI_stage_info stage_removing_duplicates; >extern PSI_stage_info stage_removing_tmp_table; >extern PSI_stage_info stage_rename; >extern PSI_stage_info stage_rename_result_table; >extern PSI_stage_info stage_requesting_binlog_dump; >extern PSI_stage_info stage_reschedule; >extern PSI_stage_info stage_searching_rows_for_update; >extern PSI_stage_info stage_sending_binlog_event_to_slave; >extern PSI_stage_info stage_sending_cached_result_to_client; >extern PSI_stage_info stage_sending_data; >extern PSI_stage_info stage_setup; >extern PSI_stage_info stage_slave_has_read_all_relay_log; >extern PSI_stage_info stage_show_explain; >extern PSI_stage_info stage_sorting; >extern PSI_stage_info stage_sorting_for_group; >extern PSI_stage_info stage_sorting_for_order; >extern PSI_stage_info stage_sorting_result; >extern PSI_stage_info stage_sql_thd_waiting_until_delay; >extern PSI_stage_info stage_statistics; >extern PSI_stage_info stage_storing_result_in_query_cache; >extern PSI_stage_info stage_storing_row_into_queue; >extern PSI_stage_info stage_system_lock; >extern PSI_stage_info stage_unlocking_tables; >extern PSI_stage_info stage_table_lock; >extern PSI_stage_info stage_filling_schema_table; >extern PSI_stage_info stage_update; >extern PSI_stage_info stage_updating; >extern PSI_stage_info stage_updating_main_table; >extern PSI_stage_info stage_updating_reference_tables; >extern PSI_stage_info stage_upgrading_lock; >extern PSI_stage_info stage_user_lock; >extern PSI_stage_info stage_user_sleep; >extern PSI_stage_info stage_verifying_table; >extern PSI_stage_info stage_waiting_for_delay_list; >extern PSI_stage_info stage_waiting_for_gtid_to_be_written_to_binary_log; >extern PSI_stage_info stage_waiting_for_handler_insert; >extern PSI_stage_info stage_waiting_for_handler_lock; >extern PSI_stage_info stage_waiting_for_handler_open; >extern PSI_stage_info stage_waiting_for_insert; >extern PSI_stage_info stage_waiting_for_master_to_send_event; >extern PSI_stage_info stage_waiting_for_master_update; >extern PSI_stage_info stage_waiting_for_relay_log_space; >extern PSI_stage_info stage_waiting_for_slave_mutex_on_exit; >extern PSI_stage_info stage_waiting_for_slave_thread_to_start; >extern PSI_stage_info stage_waiting_for_query_cache_lock; >extern PSI_stage_info stage_waiting_for_table_flush; >extern PSI_stage_info stage_waiting_for_the_next_event_in_relay_log; >extern PSI_stage_info stage_waiting_for_the_slave_thread_to_advance_position; >extern PSI_stage_info stage_waiting_to_finalize_termination; >extern PSI_stage_info stage_waiting_to_get_readlock; >extern PSI_stage_info stage_binlog_waiting_background_tasks; >extern PSI_stage_info stage_binlog_processing_checkpoint_notify; >extern PSI_stage_info stage_binlog_stopping_background_thread; >extern PSI_stage_info stage_waiting_for_work_from_sql_thread; >extern PSI_stage_info stage_waiting_for_prior_transaction_to_commit; >extern PSI_stage_info stage_waiting_for_prior_transaction_to_start_commit; >extern PSI_stage_info stage_waiting_for_room_in_worker_thread; >extern PSI_stage_info stage_waiting_for_workers_idle; >extern PSI_stage_info stage_waiting_for_ftwrl; >extern PSI_stage_info stage_waiting_for_ftwrl_threads_to_pause; >extern PSI_stage_info stage_waiting_for_rpl_thread_pool; >extern PSI_stage_info stage_master_gtid_wait_primary; >extern PSI_stage_info stage_master_gtid_wait; >extern PSI_stage_info stage_gtid_wait_other_connection; >extern PSI_stage_info stage_slave_background_process_request; >extern PSI_stage_info stage_slave_background_wait_request; >extern PSI_stage_info stage_waiting_for_deadlock_kill; ># 525 "/buildbot/mariadb-10.2.31/sql/mysqld.h" >extern pthread_t signal_thread; > > > > > > >extern ulonglong my_pcre_frame_size; > > > > >extern my_bool opt_large_pages; >extern uint opt_large_page_size; >extern char lc_messages_dir[512]; >extern char *lc_messages_dir_ptr, *log_error_file_ptr; >extern char reg_ext[20]; >extern uint reg_ext_length; >extern uint lower_case_table_names; >extern bool mysqld_embedded; >extern ulong specialflag; >extern uint mysql_data_home_len; >extern uint mysql_real_data_home_len; >extern const char *mysql_real_data_home_ptr; >extern ulong thread_handling; >extern "C" char server_version[60]; >extern char *server_version_ptr; >extern bool using_custom_server_version; >extern char mysql_real_data_home[]; >extern char mysql_unpacked_real_data_home[]; >extern struct system_variables global_system_variables; >extern char default_logfile_name[512]; > > > >extern const key_map key_map_empty; >extern key_map key_map_full; > > > > >extern mysql_mutex_t > LOCK_item_func_sleep, LOCK_status, LOCK_show_status, > LOCK_error_log, LOCK_delayed_insert, LOCK_short_uuid_generator, > LOCK_delayed_status, LOCK_delayed_create, LOCK_crypt, LOCK_timezone, > LOCK_slave_list, LOCK_active_mi, LOCK_manager, LOCK_user_conn, > LOCK_prepared_stmt_count, LOCK_error_messages, LOCK_connection_count, > LOCK_slave_background; >extern mysql_mutex_t LOCK_thread_count, > LOCK_global_system_variables; >extern mysql_mutex_t LOCK_start_thread; > > > > >extern mysql_mutex_t LOCK_server_started; >extern mysql_cond_t COND_server_started; >extern mysql_rwlock_t LOCK_grant, LOCK_sys_init_connect, LOCK_sys_init_slave; >extern mysql_prlock_t LOCK_system_variables_hash; >extern mysql_cond_t COND_thread_count, COND_start_thread; >extern mysql_cond_t COND_manager; >extern mysql_cond_t COND_slave_background; >extern int32 thread_running; >extern int32 thread_count, service_thread_count; > >extern char *opt_ssl_ca, *opt_ssl_capath, *opt_ssl_cert, *opt_ssl_cipher, > *opt_ssl_key, *opt_ssl_crl, *opt_ssl_crlpath; > >extern pthread_key_t THR_THD; ># 662 "/buildbot/mariadb-10.2.31/sql/mysqld.h" >enum enum_query_type >{ > > QT_ORDINARY= 0, > > QT_TO_SYSTEM_CHARSET= (1 << 0), > > QT_WITHOUT_INTRODUCERS= (1 << 1), > > QT_VIEW_INTERNAL= (1 << 2), > > QT_ITEM_IDENT_SKIP_DB_NAMES= (1 << 3), > > QT_ITEM_IDENT_SKIP_TABLE_NAMES= (1 << 4), > > QT_ITEM_CACHE_WRAPPER_SKIP_DETAILS= (1 << 5), > > > QT_ITEM_SUBSELECT_ID_ONLY= (1 << 6), ># 690 "/buildbot/mariadb-10.2.31/sql/mysqld.h" > QT_ITEM_ORIGINAL_FUNC_NULLIF= (1 << 7), > > > QT_EXPLAIN= QT_TO_SYSTEM_CHARSET | > QT_ITEM_IDENT_SKIP_DB_NAMES | > QT_ITEM_CACHE_WRAPPER_SKIP_DETAILS | > QT_ITEM_SUBSELECT_ID_ONLY, > > > > > > QT_EXPLAIN_EXTENDED= QT_TO_SYSTEM_CHARSET, > > > > > QT_NO_DATA_EXPANSION= (1 << 9), >}; > > > >extern query_id_t global_query_id; > >__attribute__((noreturn)) void unireg_end(void); > > >inline __attribute__((warn_unused_result)) query_id_t next_query_id() >{ > return __atomic_fetch_add((&global_query_id), (1), (0)); >} > >inline query_id_t get_query_id() >{ > return __atomic_load_n((&global_query_id), (0)); >} > > >extern __attribute__((warn_unused_result)) my_thread_id next_thread_id(void); > > > > > >extern "C" void unireg_abort(int exit_code) __attribute__((noreturn)); > > > > > >inline void table_case_convert(char * name, uint length) >{ > if (lower_case_table_names) > files_charset_info->cset->casedn(files_charset_info, > name, length, name, length); >} > >inline void thread_safe_increment32(int32 *value) >{ > (void) __atomic_fetch_add((value), (1), (0)); >} > >inline void thread_safe_decrement32(int32 *value) >{ > (void) __atomic_fetch_add((value), (-1), (0)); >} > >inline void thread_safe_increment64(int64 *value) >{ > (void) __atomic_fetch_add((value), (1), (0)); >} > >inline void thread_safe_decrement64(int64 *value) >{ > (void) __atomic_fetch_add((value), (-1), (0)); >} > >inline void inc_thread_running() >{ > thread_safe_increment32(&thread_running); >} > >inline void dec_thread_running() >{ > thread_safe_decrement32(&thread_running); >} > >extern void set_server_version(char *buf, size_t size); > > >inline int set_current_thd(THD *thd) >{ > return pthread_setspecific(THR_THD,(void*) (thd)); >} > > > > > > >extern handlerton *maria_hton; > >extern uint extra_connection_count; >extern uint64 global_gtid_counter; >extern my_bool opt_gtid_strict_mode; >extern my_bool opt_userstat_running, debug_assert_if_crashed_table; >extern uint mysqld_extra_port; >extern ulong opt_progress_report_time; >extern ulong extra_max_connections; >extern ulonglong denied_connections; >extern ulong thread_created; >extern scheduler_functions *thread_scheduler, *extra_thread_scheduler; >extern char *opt_log_basename; >extern my_bool opt_master_verify_checksum; >extern my_bool opt_stack_trace, disable_log_notes; >extern my_bool opt_expect_abort; >extern my_bool opt_slave_sql_verify_checksum; >extern my_bool opt_mysql56_temporal_format, strict_password_validation; >extern my_bool opt_explicit_defaults_for_timestamp; >extern ulong binlog_checksum_options; >extern bool max_user_connections_checking; >extern ulong opt_binlog_dbug_fsync_sleep; > >extern uint volatile global_disable_checkpoint; >extern my_bool opt_help; ># 32 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" 1 ># 34 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" >class sys_var; >enum SHOW_COMP_OPTION { SHOW_OPTION_YES, SHOW_OPTION_NO, SHOW_OPTION_DISABLED}; >enum enum_plugin_load_option { PLUGIN_OFF, PLUGIN_ON, PLUGIN_FORCE, > PLUGIN_FORCE_PLUS_PERMANENT }; >extern const char *global_plugin_typelib_names[]; > >extern volatile int global_plugin_version; >extern ulong dlopen_count; ># 63 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" >typedef enum enum_mysql_show_type SHOW_TYPE; >typedef struct st_mysql_show_var SHOW_VAR; ># 82 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" >struct st_ptr_backup { > void **ptr; > void *value; > void save(void **p) { ptr= p; value= *p; } > void save(const char **p) { save((void**)p); } > void restore() { *ptr= value; } >}; > > > >struct st_plugin_dl >{ > LEX_STRING dl; > void *handle; > struct st_maria_plugin *plugins; > st_ptr_backup *ptr_backup; > uint nbackups; > uint ref_count; > int mysqlversion; > int mariaversion; > bool allocated; >}; > > > >struct st_plugin_int >{ > LEX_STRING name; > struct st_maria_plugin *plugin; > struct st_plugin_dl *plugin_dl; > st_ptr_backup *ptr_backup; > uint nbackups; > uint state; > uint ref_count; > uint locks_total; > void *data; > MEM_ROOT mem_root; > sys_var *system_vars; > enum enum_plugin_load_option load_option; >}; > > >extern mysql_mutex_t LOCK_plugin; > > > > > > >typedef struct st_plugin_int *plugin_ref; ># 154 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" >typedef int (*plugin_type_init)(struct st_plugin_int *); > >extern I_List<i_string> *opt_plugin_load_list_ptr; >extern char *opt_plugin_dir_ptr; >extern char opt_plugin_dir[512]; >extern const LEX_STRING plugin_type_names[]; >extern ulong plugin_maturity; >extern TYPELIB plugin_maturity_values; >extern const char *plugin_maturity_names[]; > >extern int plugin_init(int *argc, char **argv, int init_flags); >extern void plugin_shutdown(void); >void add_plugin_options(DYNAMIC_ARRAY *options, MEM_ROOT *mem_root); >extern bool plugin_is_ready(const LEX_STRING *name, int type); > > >extern plugin_ref plugin_lock(THD *thd, plugin_ref ptr); >extern plugin_ref plugin_lock_by_name(THD *thd, const LEX_STRING *name, > int type); >extern void plugin_unlock(THD *thd, plugin_ref plugin); >extern void plugin_unlock_list(THD *thd, plugin_ref *list, uint count); >extern bool mysql_install_plugin(THD *thd, const LEX_STRING *name, > const LEX_STRING *dl); >extern bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name, > const LEX_STRING *dl); >extern bool plugin_register_builtin(struct st_mysql_plugin *plugin); >extern void plugin_thdvar_init(THD *thd); >extern void plugin_thdvar_cleanup(THD *thd); >sys_var *find_plugin_sysvar(st_plugin_int *plugin, st_mysql_sys_var *var); >void plugin_opt_set_limits(struct my_option *, const struct st_mysql_sys_var *); >extern SHOW_COMP_OPTION plugin_status(const char *name, size_t len, int type); >extern bool check_valid_path(const char *path, size_t length); >extern void plugin_mutex_init(); > >typedef my_bool (plugin_foreach_func)(THD *thd, > plugin_ref plugin, > void *arg); > >extern bool plugin_foreach_with_mask(THD *thd, plugin_foreach_func *func, > int type, uint state_mask, void *arg); >extern void sync_dynamic_session_variables(THD* thd, bool global_lock); > >extern bool plugin_dl_foreach(THD *thd, const LEX_STRING *dl, > plugin_foreach_func *func, void *arg); > >sys_var *find_sys_var_ex(THD *thd, const char *str, size_t length, > bool throw_error, bool locked); > >extern void sync_dynamic_session_variables(THD* thd, bool global_lock); > > > >extern void wsrep_plugins_pre_init(); >extern void wsrep_plugins_post_init(); ># 33 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/thr_lock.h" 1 ># 22 "/buildbot/mariadb-10.2.31/include/thr_lock.h" >extern "C" { > > ># 1 "/buildbot/mariadb-10.2.31/include/my_list.h" 1 ># 20 "/buildbot/mariadb-10.2.31/include/my_list.h" >extern "C" { > > >typedef struct st_list { > struct st_list *prev,*next; > void *data; >} LIST; > >typedef int (*list_walk_action)(void *,void *); > >extern LIST *list_add(LIST *root,LIST *element); >extern LIST *list_delete(LIST *root,LIST *element); >extern LIST *list_cons(void *data,LIST *root); >extern LIST *list_reverse(LIST *root); >extern void list_free(LIST *root,unsigned int free_data); >extern unsigned int list_length(LIST *); >extern int list_walk(LIST *,list_walk_action action,unsigned char * argument); > > > > > > >} ># 26 "/buildbot/mariadb-10.2.31/include/thr_lock.h" 2 > >struct st_thr_lock; >extern ulong locks_immediate,locks_waited ; > > > > > >enum thr_lock_type { TL_IGNORE=-1, > TL_UNLOCK, > > > > > > > > TL_READ_DEFAULT, > TL_READ, > TL_READ_WITH_SHARED_LOCKS, > > TL_READ_HIGH_PRIORITY, > > TL_READ_NO_INSERT, > > > > > > TL_WRITE_ALLOW_WRITE, > > > > > TL_WRITE_CONCURRENT_INSERT, > > TL_WRITE_DELAYED, > > > > > TL_WRITE_DEFAULT, > > TL_WRITE_LOW_PRIORITY, > > TL_WRITE, > > TL_WRITE_ONLY}; > >enum enum_thr_lock_result { THR_LOCK_SUCCESS= 0, THR_LOCK_ABORTED= 1, > THR_LOCK_WAIT_TIMEOUT= 2, THR_LOCK_DEADLOCK= 3 }; ># 85 "/buildbot/mariadb-10.2.31/include/thr_lock.h" >extern ulong max_write_lock_count; >extern my_bool thr_lock_inited; >extern enum thr_lock_type thr_upgraded_concurrent_insert_lock; > > > > > > >typedef struct st_thr_lock_info >{ > pthread_t thread; > my_thread_id thread_id; > void *mysql_thd; >} THR_LOCK_INFO; > > >typedef struct st_thr_lock_data { > THR_LOCK_INFO *owner; > struct st_thr_lock_data *next,**prev; > struct st_thr_lock *lock; > mysql_cond_t *cond; > void *status_param; > void *debug_print_param; > struct PSI_table *m_psi; > enum thr_lock_type type; > enum thr_lock_type org_type; > uint priority; >} THR_LOCK_DATA; > >struct st_lock_list { > THR_LOCK_DATA *data,**last; >}; > >typedef struct st_thr_lock { > LIST list; > mysql_mutex_t mutex; > struct st_lock_list read_wait; > struct st_lock_list read; > struct st_lock_list write_wait; > struct st_lock_list write; > > ulong write_lock_count; > uint read_no_write_count; > void (*get_status)(void*, my_bool); > void (*copy_status)(void*,void*); > void (*update_status)(void*); > void (*restore_status)(void*); > my_bool (*start_trans)(void*); > my_bool (*check_status)(void *); > void (*fix_status)(void *, void *); > const char *name; > my_bool allow_multiple_concurrent_insert; >} THR_LOCK; > > >extern LIST *thr_lock_thread_list; >extern mysql_mutex_t THR_LOCK_lock; >struct st_my_thread_var; > >my_bool init_thr_lock(void); >void thr_lock_info_init(THR_LOCK_INFO *info, struct st_my_thread_var *tmp); >void thr_lock_init(THR_LOCK *lock); >void thr_lock_delete(THR_LOCK *lock); >void thr_lock_data_init(THR_LOCK *lock,THR_LOCK_DATA *data, > void *status_param); >void thr_unlock(THR_LOCK_DATA *data, uint unlock_flags); >enum enum_thr_lock_result thr_multi_lock(THR_LOCK_DATA **data, > uint count, THR_LOCK_INFO *owner, > ulong lock_wait_timeout); >void thr_multi_unlock(THR_LOCK_DATA **data,uint count, uint unlock_flags); >void thr_merge_locks(THR_LOCK_DATA **data, uint org_count, uint new_count); >void thr_abort_locks(THR_LOCK *lock, my_bool upgrade_lock); >my_bool thr_abort_locks_for_thread(THR_LOCK *lock, my_thread_id thread); >void thr_print_locks(void); >my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data, > enum thr_lock_type new_lock_type, > ulong lock_wait_timeout); >void thr_downgrade_write_lock(THR_LOCK_DATA *data, > enum thr_lock_type new_lock_type); >my_bool thr_reschedule_write_lock(THR_LOCK_DATA *data, > ulong lock_wait_timeout); >void thr_set_lock_wait_callback(void (*before_wait)(void), > void (*after_wait)(void)); > > > typedef my_bool (* wsrep_thd_is_brute_force_fun)(void *, my_bool); > typedef int (* wsrep_abort_thd_fun)(void *, void *, my_bool); > typedef int (* wsrep_on_fun)(void *); > void wsrep_thr_lock_init( > wsrep_thd_is_brute_force_fun bf_fun, wsrep_abort_thd_fun abort_fun, > my_bool debug, my_bool convert_LOCK_to_trx, wsrep_on_fun on_fun); > > > >} ># 34 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" 1 ># 19 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" ># 1 "/buildbot/mariadb-10.2.31/include/hash.h" 1 ># 23 "/buildbot/mariadb-10.2.31/include/hash.h" ># 1 "/buildbot/mariadb-10.2.31/include/my_sys.h" 1 ># 24 "/buildbot/mariadb-10.2.31/include/hash.h" 2 ># 32 "/buildbot/mariadb-10.2.31/include/hash.h" >extern "C" { ># 45 "/buildbot/mariadb-10.2.31/include/hash.h" >typedef uint32 my_hash_value_type; >typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool); >typedef my_hash_value_type (*my_hash_function)(CHARSET_INFO *, > const uchar *, size_t); >typedef void (*my_hash_free_key)(void *); >typedef my_bool (*my_hash_walk_action)(void *,void *); > >typedef struct st_hash { > size_t key_offset,key_length; > size_t blength; > ulong records; > uint flags; > DYNAMIC_ARRAY array; > my_hash_get_key get_key; > my_hash_function hash_function; > void (*free)(void *); > CHARSET_INFO *charset; >} HASH; > > >typedef uint HASH_SEARCH_STATE; > > >my_bool my_hash_init2(HASH *hash, uint growth_size, CHARSET_INFO *charset, > ulong default_array_elements, size_t key_offset, > size_t key_length, my_hash_get_key get_key, > my_hash_function hash_function, > void (*free_element)(void*), > uint flags); >void my_hash_free(HASH *tree); >void my_hash_reset(HASH *hash); >uchar *my_hash_element(HASH *hash, size_t idx); >uchar *my_hash_search(const HASH *info, const uchar *key, size_t length); >uchar *my_hash_search_using_hash_value(const HASH *info, > my_hash_value_type hash_value, > const uchar *key, size_t length); >my_hash_value_type my_hash_sort(CHARSET_INFO *cs, > const uchar *key, size_t length); > >uchar *my_hash_first(const HASH *info, const uchar *key, size_t length, > HASH_SEARCH_STATE *state); >uchar *my_hash_first_from_hash_value(const HASH *info, > my_hash_value_type hash_value, > const uchar *key, > size_t length, > HASH_SEARCH_STATE *state); >uchar *my_hash_next(const HASH *info, const uchar *key, size_t length, > HASH_SEARCH_STATE *state); >my_bool my_hash_insert(HASH *info, const uchar *data); >my_bool my_hash_delete(HASH *hash, uchar *record); >my_bool my_hash_update(HASH *hash, uchar *record, uchar *old_key, > size_t old_key_length); >void my_hash_replace(HASH *hash, HASH_SEARCH_STATE *state, uchar *new_row); >my_bool my_hash_check(HASH *hash); >my_bool my_hash_iterate(HASH *hash, my_hash_walk_action action, void *argument); > > > > > > > >} ># 20 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/my_base.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/my_base.h" ># 1 "/usr/include/errno.h" 1 3 4 ># 28 "/buildbot/mariadb-10.2.31/include/my_base.h" 2 ># 78 "/buildbot/mariadb-10.2.31/include/my_base.h" >enum ha_rkey_function { > HA_READ_KEY_EXACT, > HA_READ_KEY_OR_NEXT, > HA_READ_KEY_OR_PREV, > HA_READ_AFTER_KEY, > HA_READ_BEFORE_KEY, > HA_READ_PREFIX, > HA_READ_PREFIX_LAST, > HA_READ_PREFIX_LAST_OR_PREV, > HA_READ_MBR_CONTAIN, > HA_READ_MBR_INTERSECT, > HA_READ_MBR_WITHIN, > HA_READ_MBR_DISJOINT, > HA_READ_MBR_EQUAL >}; > > > >enum ha_key_alg { > HA_KEY_ALG_UNDEF= 0, > HA_KEY_ALG_BTREE= 1, > HA_KEY_ALG_RTREE= 2, > HA_KEY_ALG_HASH= 3, > HA_KEY_ALG_FULLTEXT= 4 >}; > > > >enum ha_storage_media { > HA_SM_DEFAULT= 0, > HA_SM_DISK= 1, > HA_SM_MEMORY= 2 >}; > > > >enum ha_extra_function { > HA_EXTRA_NORMAL=0, > HA_EXTRA_QUICK=1, > HA_EXTRA_NOT_USED=2, > HA_EXTRA_CACHE=3, > HA_EXTRA_NO_CACHE=4, > HA_EXTRA_NO_READCHECK=5, > HA_EXTRA_READCHECK=6, > HA_EXTRA_KEYREAD=7, > HA_EXTRA_NO_KEYREAD=8, > HA_EXTRA_NO_USER_CHANGE=9, > HA_EXTRA_KEY_CACHE=10, > HA_EXTRA_NO_KEY_CACHE=11, > HA_EXTRA_WAIT_LOCK=12, > HA_EXTRA_NO_WAIT_LOCK=13, > HA_EXTRA_WRITE_CACHE=14, > HA_EXTRA_FLUSH_CACHE=15, > HA_EXTRA_NO_KEYS=16, > HA_EXTRA_KEYREAD_CHANGE_POS=17, > > HA_EXTRA_REMEMBER_POS=18, > HA_EXTRA_RESTORE_POS=19, > HA_EXTRA_REINIT_CACHE=20, > HA_EXTRA_FORCE_REOPEN=21, > HA_EXTRA_FLUSH, > HA_EXTRA_NO_ROWS, > HA_EXTRA_RESET_STATE, > HA_EXTRA_IGNORE_DUP_KEY, > HA_EXTRA_NO_IGNORE_DUP_KEY, > HA_EXTRA_PREPARE_FOR_DROP, > HA_EXTRA_PREPARE_FOR_UPDATE, > HA_EXTRA_PRELOAD_BUFFER_SIZE, > > > > HA_EXTRA_CHANGE_KEY_TO_UNIQUE, > HA_EXTRA_CHANGE_KEY_TO_DUP, > > > > > > HA_EXTRA_KEYREAD_PRESERVE_FIELDS, > HA_EXTRA_MMAP, > > > > > > HA_EXTRA_IGNORE_NO_KEY, > HA_EXTRA_NO_IGNORE_NO_KEY, > > > > > HA_EXTRA_MARK_AS_LOG_TABLE, > > > > > > > > HA_EXTRA_WRITE_CAN_REPLACE, > HA_EXTRA_WRITE_CANNOT_REPLACE, > > > > > > > HA_EXTRA_DELETE_CANNOT_BATCH, > HA_EXTRA_UPDATE_CANNOT_BATCH, > > > > > HA_EXTRA_INSERT_WITH_UPDATE, > > HA_EXTRA_PREPARE_FOR_RENAME, > > > > HA_EXTRA_ADD_CHILDREN_LIST, > HA_EXTRA_ATTACH_CHILDREN, > HA_EXTRA_IS_ATTACHED_CHILDREN, > HA_EXTRA_DETACH_CHILDREN, > HA_EXTRA_DETACH_CHILD, > > HA_EXTRA_PREPARE_FOR_FORCED_CLOSE, > > HA_EXTRA_BEGIN_ALTER_COPY, > > HA_EXTRA_END_ALTER_COPY, > > HA_EXTRA_FAKE_START_STMT >}; > > > > > > >enum ha_panic_function { > HA_PANIC_CLOSE, > HA_PANIC_WRITE, > HA_PANIC_READ >}; > > > >enum ha_base_keytype { > HA_KEYTYPE_END=0, > HA_KEYTYPE_TEXT=1, > HA_KEYTYPE_BINARY=2, > HA_KEYTYPE_SHORT_INT=3, > HA_KEYTYPE_LONG_INT=4, > HA_KEYTYPE_FLOAT=5, > HA_KEYTYPE_DOUBLE=6, > HA_KEYTYPE_NUM=7, > HA_KEYTYPE_USHORT_INT=8, > HA_KEYTYPE_ULONG_INT=9, > HA_KEYTYPE_LONGLONG=10, > HA_KEYTYPE_ULONGLONG=11, > HA_KEYTYPE_INT24=12, > HA_KEYTYPE_UINT24=13, > HA_KEYTYPE_INT8=14, > > HA_KEYTYPE_VARTEXT1=15, > HA_KEYTYPE_VARBINARY1=16, > > HA_KEYTYPE_VARTEXT2=17, > HA_KEYTYPE_VARBINARY2=18, > HA_KEYTYPE_BIT=19 >}; ># 524 "/buildbot/mariadb-10.2.31/include/my_base.h" >typedef ulong key_part_map; ># 580 "/buildbot/mariadb-10.2.31/include/my_base.h" >enum en_fieldtype { > FIELD_LAST=-1,FIELD_NORMAL,FIELD_SKIP_ENDSPACE,FIELD_SKIP_PRESPACE, > FIELD_SKIP_ZERO,FIELD_BLOB,FIELD_CONSTANT,FIELD_INTERVALL,FIELD_ZERO, > FIELD_VARCHAR,FIELD_CHECK, > FIELD_enum_val_count >}; > >enum data_file_type { > STATIC_RECORD, DYNAMIC_RECORD, COMPRESSED_RECORD, BLOCK_RECORD, NO_RECORD >}; ># 603 "/buildbot/mariadb-10.2.31/include/my_base.h" >typedef struct st_key_range >{ > const uchar *key; > uint length; > key_part_map keypart_map; > enum ha_rkey_function flag; >} key_range; > >typedef void *range_id_t; > >typedef struct st_key_multi_range >{ > key_range start_key; > key_range end_key; > range_id_t ptr; > uint range_flag; >} KEY_MULTI_RANGE; > > > > > >typedef my_off_t ha_rows; ># 644 "/buildbot/mariadb-10.2.31/include/my_base.h" >extern "C" { >typedef void (* invalidator_by_filename)(const char * filename); >} ># 21 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" 2 > >class MY_LOCALE; >struct TABLE_LIST; >class Time_zone; >struct LEX; >struct TABLE; >typedef struct st_changed_table_list CHANGED_TABLE_LIST; ># 71 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" >struct Query_cache_block; >struct Query_cache_block_table; >struct Query_cache_table; >struct Query_cache_query; >struct Query_cache_result; >class Query_cache; >struct Query_cache_tls; >struct LEX; >class THD; > >typedef my_bool (*qc_engine_callback)(THD *thd, char *table_key, > uint key_length, > ulonglong *engine_data); ># 92 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" >struct Query_cache_block_table >{ > Query_cache_block_table() {} > > > > > > uint n; > > > > > > Query_cache_block_table *next, *prev; > > > > > > Query_cache_table *parent; > > > > > > > > inline Query_cache_block *block(); >}; > >struct Query_cache_block >{ > Query_cache_block() {} > enum block_type {FREE, QUERY, RESULT, RES_CONT, RES_BEG, > RES_INCOMPLETE, TABLE, INCOMPLETE}; > > ulong length; > ulong used; > > > > > > Query_cache_block *pnext,*pprev, > *next,*prev; > block_type type; > uint n_tables; > > inline bool is_free(void) { return type == FREE; } > void init(ulong length); > void destroy(); > uint headers_len(); > uchar* data(void); > Query_cache_query *query(); > Query_cache_table *table(); > Query_cache_result *result(); > Query_cache_block_table *table(uint n); >}; > >struct Query_cache_query >{ > ulonglong limit_found_rows; > mysql_rwlock_t lock; > Query_cache_block *res; > Query_cache_tls *wri; > ulong len; > unsigned int last_pkt_nr; > uint8 tbls_type; > uint8 ready; > > Query_cache_query() {} > inline void init_n_lock(); > void unlock_n_destroy(); > inline ulonglong found_rows() { return limit_found_rows; } > inline void found_rows(ulonglong rows) { limit_found_rows= rows; } > inline Query_cache_block *result() { return res; } > inline void result(Query_cache_block *p) { res= p; } > inline Query_cache_tls *writer() { return wri; } > inline void writer(Query_cache_tls *p) { wri= p; } > inline uint8 tables_type() { return tbls_type; } > inline void tables_type(uint8 type) { tbls_type= type; } > inline ulong length() { return len; } > inline ulong add(ulong packet_len) { return(len+= packet_len); } > inline void length(ulong length_arg) { len= length_arg; } > inline uchar* query() > { > return (((uchar*)this) + ((((sizeof(Query_cache_query))) + (sizeof(double)) - 1) & ~((sizeof(double)) - 1))); > } > > > > > inline void set_results_ready() { ready= 1; } > inline bool is_results_ready() { return ready; } > void lock_writing(); > void lock_reading(); > bool try_lock_writing(); > void unlock_writing(); > void unlock_reading(); >}; > > >struct Query_cache_table >{ > Query_cache_table() {} > char *tbl; > uint32 key_len; > uint8 suffix_len; > uint8 table_type; > > qc_engine_callback callback_func; > > ulonglong engine_data_buff; > > > > > int32 m_cached_query_count; > > > > my_bool hashed; > > inline char *db() { return (char *) data(); } > inline char *table() { return tbl; } > inline void table(char *table_arg) { tbl= table_arg; } > inline uint32 key_length() { return key_len; } > inline void key_length(uint32 len) { key_len= len; } > inline uint8 suffix_length() { return suffix_len; } > inline void suffix_length(uint8 len) { suffix_len= len; } > inline uint8 type() { return table_type; } > inline void type(uint8 t) { table_type= t; } > inline qc_engine_callback callback() { return callback_func; } > inline void callback(qc_engine_callback fn){ callback_func= fn; } > inline ulonglong engine_data() { return engine_data_buff; } > inline void engine_data(ulonglong data_arg){ engine_data_buff= data_arg; } > inline my_bool is_hashed() { return hashed; } > inline void set_hashed(my_bool hash) { hashed= hash; } > inline uchar* data() > { > return (uchar*)(((uchar*)this)+ > ((((sizeof(Query_cache_table))) + (sizeof(double)) - 1) & ~((sizeof(double)) - 1))); > } >}; > >struct Query_cache_result >{ > Query_cache_result() {} > Query_cache_block *query; > > inline uchar* data() > { > return (uchar*)(((uchar*) this)+ > ((((sizeof(Query_cache_result))) + (sizeof(double)) - 1) & ~((sizeof(double)) - 1))); > } > > inline Query_cache_block *parent() { return query; } > inline void parent (Query_cache_block *p) { query=p; } >}; > > >extern "C" >{ > uchar *query_cache_query_get_key(const uchar *record, size_t *length, > my_bool not_used); > uchar *query_cache_table_get_key(const uchar *record, size_t *length, > my_bool not_used); >} >extern "C" void query_cache_invalidate_by_MyISAM_filename(const char* filename); > > >struct Query_cache_memory_bin >{ > Query_cache_memory_bin() {} > > > > uint number; > Query_cache_block *free_blocks; > > inline void init(ulong size_arg) > { > > > > number = 0; > free_blocks = 0; > } >}; > >struct Query_cache_memory_bin_step >{ > Query_cache_memory_bin_step() {} > ulong size; > ulong increment; > uint idx; > inline void init(ulong size_arg, uint idx_arg, ulong increment_arg) > { > size = size_arg; > idx = idx_arg; > increment = increment_arg; > } >}; > >class Query_cache >{ >public: > > ulong query_cache_size, query_cache_limit; > > ulong free_memory, queries_in_cache, hits, inserts, refused, > free_memory_blocks, total_blocks, lowmem_prunes; > > >private: > > > > mysql_cond_t COND_cache_status_changed; > uint m_requests_in_progress; > enum Cache_lock_status { UNLOCKED, LOCKED_NO_WAIT, LOCKED }; > Cache_lock_status m_cache_lock_status; > enum Cache_staus {OK, DISABLE_REQUEST, DISABLED}; > Cache_staus m_cache_status; > > void free_query_internal(Query_cache_block *point); > void invalidate_table_internal(THD *thd, uchar *key, uint32 key_length); > >protected: ># 336 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" > mysql_mutex_t structure_guard_mutex; > uchar *cache; > Query_cache_block *first_block; > Query_cache_block *queries_blocks; > Query_cache_block *tables_blocks; > > Query_cache_memory_bin *bins; > Query_cache_memory_bin_step *steps; > HASH queries, tables; > > ulong min_allocation_unit, min_result_data_size; > uint def_query_hash_size, def_table_hash_size; > > uint mem_bin_num, mem_bin_steps; > > bool initialized; > > > static void double_linked_list_exclude(Query_cache_block *point, > Query_cache_block **list_pointer); > static void double_linked_list_simple_include(Query_cache_block *point, > Query_cache_block ** > list_pointer); > static void double_linked_list_join(Query_cache_block *head_tail, > Query_cache_block *tail_head); > > > void flush_cache(); > my_bool free_old_query(); > void free_query(Query_cache_block *point); > my_bool allocate_data_chain(Query_cache_block **result_block, > ulong data_len, > Query_cache_block *query_block, > my_bool first_block); > void invalidate_table(THD *thd, TABLE_LIST *table); > void invalidate_table(THD *thd, TABLE *table); > void invalidate_table(THD *thd, uchar *key, uint32 key_length); > void invalidate_table(THD *thd, Query_cache_block *table_block); > void invalidate_query_block_list(THD *thd, > Query_cache_block_table *list_root); > > uint > register_tables_from_list(THD *thd, TABLE_LIST *tables_used, > uint counter, > Query_cache_block_table **block_table); > my_bool register_all_tables(THD *thd, Query_cache_block *block, > TABLE_LIST *tables_used, > uint tables); > void unlink_table(Query_cache_block_table *node); > Query_cache_block *get_free_block (ulong len, my_bool not_less, > ulong min); > void free_memory_block(Query_cache_block *point); > void split_block(Query_cache_block *block, ulong len); > Query_cache_block *join_free_blocks(Query_cache_block *first_block, > Query_cache_block *block_in_list); > my_bool append_next_free_block(Query_cache_block *block, > ulong add_size); > void exclude_from_free_memory_list(Query_cache_block *free_block); > void insert_into_free_memory_list(Query_cache_block *new_block); > my_bool move_by_type(uchar **border, Query_cache_block **before, > ulong *gap, Query_cache_block *i); > uint find_bin(ulong size); > void move_to_query_list_end(Query_cache_block *block); > void insert_into_free_memory_sorted_list(Query_cache_block *new_block, > Query_cache_block **list); > void pack_cache(); > void relink(Query_cache_block *oblock, > Query_cache_block *nblock, > Query_cache_block *next, > Query_cache_block *prev, > Query_cache_block *pnext, > Query_cache_block *pprev); > my_bool join_results(ulong join_limit); > > > > > > ulong init_cache(); > void make_disabled(); > void free_cache(); > Query_cache_block *write_block_data(ulong data_len, uchar* data, > ulong header_len, > Query_cache_block::block_type type, > uint ntab = 0); > my_bool append_result_data(Query_cache_block **result, > ulong data_len, uchar* data, > Query_cache_block *parent); > my_bool write_result_data(Query_cache_block **result, > ulong data_len, uchar* data, > Query_cache_block *parent, > Query_cache_block::block_type > type=Query_cache_block::RESULT); > inline ulong get_min_first_result_data_size(); > inline ulong get_min_append_result_data_size(); > Query_cache_block *allocate_block(ulong len, my_bool not_less, > ulong min); > > > > > uint is_cacheable(THD *thd, > LEX *lex, TABLE_LIST *tables_used, > uint8 *tables_type); > uint process_and_count_tables(THD *thd, > TABLE_LIST *tables_used, > uint8 *tables_type); > > static my_bool ask_handler_allowance(THD *thd, TABLE_LIST *tables_used); > public: > > Query_cache(ulong query_cache_limit = (9223372036854775807L * 2UL + 1UL), > ulong min_allocation_unit = 512, > ulong min_result_data_size = (1024*4), > uint def_query_hash_size = 1024, > uint def_table_hash_size = 1024); > > inline bool is_disabled(void) { return m_cache_status != OK; } > inline bool is_disable_in_progress(void) > { return m_cache_status == DISABLE_REQUEST; } > > > void init(); > > ulong resize(ulong query_cache_size); > > inline void result_size_limit(ulong limit){query_cache_limit=limit;} > > ulong set_min_res_unit(ulong size); > > > void store_query(THD *thd, TABLE_LIST *used_tables); > > > > > > int send_result_to_client(THD *thd, char *query, uint query_length); > > > void invalidate(THD *thd, TABLE_LIST *tables_used, > my_bool using_transactions); > void invalidate(THD *thd, CHANGED_TABLE_LIST *tables_used); > void invalidate_locked_for_write(THD *thd, TABLE_LIST *tables_used); > void invalidate(THD *thd, TABLE *table, my_bool using_transactions); > void invalidate(THD *thd, const char *key, uint32 key_length, > my_bool using_transactions); > > > void invalidate(THD *thd, char *db); > > > void invalidate_by_MyISAM_filename(const char *filename); > > void flush(); > void pack(THD *thd, > ulong join_limit = (512*1024L), > uint iteration_limit = 2); > > void destroy(); > > void insert(THD *thd, Query_cache_tls *query_cache_tls, > const char *packet, > ulong length, > unsigned pkt_nr); > my_bool insert_table(THD *thd, uint key_len, const char *key, > Query_cache_block_table *node, > uint32 db_length, uint8 suffix_length_arg, > uint8 cache_type, > qc_engine_callback callback, > ulonglong engine_data, > my_bool hash); > > void end_of_result(THD *thd); > void abort(THD *thd, Query_cache_tls *query_cache_tls); > > > > > > > void wreck(uint line, const char *message); > void bins_dump(); > void cache_dump(); > void queries_dump(); > void tables_dump(); > my_bool check_integrity(bool not_locked); > my_bool in_list(Query_cache_block * root, Query_cache_block * point, > const char *name); > my_bool in_table_list(Query_cache_block_table * root, > Query_cache_block_table * point, > const char *name); > my_bool in_blocks(Query_cache_block * point); > > > static uint filename_2_table_key (char *key, const char *filename, > uint32 *db_langth); > > enum Cache_try_lock_mode {WAIT, TIMEOUT, TRY}; > bool try_lock(THD *thd, Cache_try_lock_mode mode= WAIT); > void lock(THD *thd); > void lock_and_suspend(void); > void unlock(void); > > void disable_query_cache(THD *thd); >}; > > >struct Query_cache_query_flags >{ > unsigned int client_long_flag:1; > unsigned int client_protocol_41:1; > unsigned int client_depr_eof:1; > unsigned int protocol_type:2; > unsigned int more_results_exists:1; > unsigned int in_trans:1; > unsigned int autocommit:1; > unsigned int pkt_nr; > uint character_set_client_num; > uint character_set_results_num; > uint collation_connection_num; > ha_rows limit; > Time_zone *time_zone; > sql_mode_t sql_mode; > ulonglong max_sort_length; > ulonglong group_concat_max_len; > ulong default_week_format; > ulong div_precision_increment; > MY_LOCALE *lc_time_names; >}; > > ># 1 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" 1 ># 569 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" 2 ># 607 "/buildbot/mariadb-10.2.31/sql/sql_cache.h" >extern Query_cache query_cache; ># 35 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/structs.h" 1 ># 24 "/buildbot/mariadb-10.2.31/sql/structs.h" ># 1 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" 1 ># 206 "/buildbot/mariadb-10.2.31/sql/sql_plugin.h" >extern void wsrep_plugins_pre_init(); >extern void wsrep_plugins_post_init(); ># 25 "/buildbot/mariadb-10.2.31/sql/structs.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/include/my_time.h" 1 ># 26 "/buildbot/mariadb-10.2.31/include/my_time.h" ># 1 "/buildbot/mariadb-10.2.31/include/mysql_time.h" 1 ># 27 "/buildbot/mariadb-10.2.31/include/my_time.h" 2 > > >extern "C" { > >extern ulonglong log_10_int[20]; >extern uchar days_in_month[]; ># 100 "/buildbot/mariadb-10.2.31/include/my_time.h" >typedef struct st_mysql_time_status >{ > int warnings; > uint precision; >} MYSQL_TIME_STATUS; > >static inline void my_time_status_init(MYSQL_TIME_STATUS *status) >{ > status->warnings= status->precision= 0; >} > >my_bool check_date(const MYSQL_TIME *ltime, my_bool not_zero_date, > ulonglong flags, int *was_cut); >my_bool str_to_time(const char *str, uint length, MYSQL_TIME *l_time, > ulonglong flag, MYSQL_TIME_STATUS *status); >my_bool str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, > ulonglong flags, MYSQL_TIME_STATUS *status); >longlong number_to_datetime(longlong nr, ulong sec_part, MYSQL_TIME *time_res, > ulonglong flags, int *was_cut); > >static inline >longlong double_to_datetime(double nr, MYSQL_TIME *ltime, uint flags, int *cut) >{ > if (nr < 0 || nr > (double)((long long) 0x7FFFFFFFFFFFFFFFLL)) > nr= (double)((long long) 0x7FFFFFFFFFFFFFFFLL); > return number_to_datetime((longlong) floor(nr), > (ulong)((nr-floor(nr))*(999999 +1)), > ltime, flags, cut); >} > >int number_to_time(my_bool neg, ulonglong nr, ulong sec_part, > MYSQL_TIME *ltime, int *was_cut); >ulonglong TIME_to_ulonglong_datetime(const MYSQL_TIME *); >ulonglong TIME_to_ulonglong_date(const MYSQL_TIME *); >ulonglong TIME_to_ulonglong_time(const MYSQL_TIME *); >ulonglong TIME_to_ulonglong(const MYSQL_TIME *); >double TIME_to_double(const MYSQL_TIME *my_time); > >longlong pack_time(const MYSQL_TIME *my_time); >MYSQL_TIME *unpack_time(longlong packed, MYSQL_TIME *my_time); > >int check_time_range(struct st_mysql_time *my_time, uint dec, int *warning); >my_bool check_datetime_range(const MYSQL_TIME *ltime); > > >long calc_daynr(uint year,uint month,uint day); >uint calc_days_in_year(uint year); >uint year_2000_handling(uint year); > >void my_init_time(void); ># 165 "/buildbot/mariadb-10.2.31/include/my_time.h" >static inline my_bool validate_timestamp_range(const MYSQL_TIME *t) >{ > if ((t->year > 2038 || t->year < (1900 + 70 - 1)) || > (t->year == 2038 && (t->month > 1 || t->day > 19)) || > (t->year == (1900 + 70 - 1) && (t->month < 12 || t->day < 31))) > return (0); > > return (1); >} > > > > > > > >my_time_t >my_system_gmt_sec(const MYSQL_TIME *t, long *my_timezone, uint *error_code); > >void set_zero_time(MYSQL_TIME *tm, enum enum_mysql_timestamp_type time_type); ># 197 "/buildbot/mariadb-10.2.31/include/my_time.h" >int my_time_to_str(const MYSQL_TIME *l_time, char *to, uint digits); >int my_date_to_str(const MYSQL_TIME *l_time, char *to); >int my_datetime_to_str(const MYSQL_TIME *l_time, char *to, uint digits); >int my_TIME_to_str(const MYSQL_TIME *l_time, char *to, uint digits); > >int my_timeval_to_str(const struct timeval *tm, char *to, uint dec); > >static inline longlong sec_part_shift(longlong second_part, uint digits) >{ > return second_part / (longlong)log_10_int[6 - digits]; >} >static inline longlong sec_part_unshift(longlong second_part, uint digits) >{ > return second_part * (longlong)log_10_int[6 - digits]; >} > > >static inline long my_time_fraction_remainder(long nr, uint decimals) >{ > do { } while(0); > return nr % (long) log_10_int[6 - decimals]; >} >static inline void my_time_trunc(MYSQL_TIME *ltime, uint decimals) >{ > ltime->second_part-= my_time_fraction_remainder(ltime->second_part, decimals); >} >static inline void my_timeval_trunc(struct timeval *tv, uint decimals) >{ > tv->tv_usec-= my_time_fraction_remainder(tv->tv_usec, decimals); >} ># 246 "/buildbot/mariadb-10.2.31/include/my_time.h" >enum interval_type >{ > INTERVAL_YEAR, INTERVAL_QUARTER, INTERVAL_MONTH, INTERVAL_WEEK, INTERVAL_DAY, > INTERVAL_HOUR, INTERVAL_MINUTE, INTERVAL_SECOND, INTERVAL_MICROSECOND, > INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, INTERVAL_DAY_MINUTE, > INTERVAL_DAY_SECOND, INTERVAL_HOUR_MINUTE, INTERVAL_HOUR_SECOND, > INTERVAL_MINUTE_SECOND, INTERVAL_DAY_MICROSECOND, INTERVAL_HOUR_MICROSECOND, > INTERVAL_MINUTE_MICROSECOND, INTERVAL_SECOND_MICROSECOND, INTERVAL_LAST >}; > >} ># 27 "/buildbot/mariadb-10.2.31/sql/structs.h" 2 > > > > >struct TABLE; >class Field; >class Index_statistics; > >class THD; > >typedef struct st_date_time_format { > uchar positions[8]; > char time_separator; > uint flag; > LEX_STRING format; >} DATE_TIME_FORMAT; > > >typedef struct st_keyfile_info { > uchar ref[8]; > uchar dupp_ref[8]; > uint ref_length; > uint block_size; > File filenr; > ha_rows records; > ha_rows deleted; > ulonglong data_file_length; > ulonglong max_data_file_length; > ulonglong index_file_length; > ulonglong max_index_file_length; > ulonglong delete_length; > ulonglong auto_increment_value; > int errkey,sortkey; > time_t create_time; > time_t check_time; > time_t update_time; > ulong mean_rec_length; >} KEYFILE_INFO; > > >typedef struct st_key_part_info { > Field *field; > > > uint offset; > uint null_offset; > > uint16 length; > > > > > > > uint16 store_length; > uint16 key_type; > uint16 fieldnr; > uint16 key_part_flag; > uint8 type; > uint8 null_bit; >} KEY_PART_INFO ; > >class engine_option_value; >struct ha_index_option_struct; > >typedef struct st_key { > uint key_length; > ulong flags; > uint user_defined_key_parts; > uint usable_key_parts; > uint ext_key_parts; > ulong ext_key_flags; ># 111 "/buildbot/mariadb-10.2.31/sql/structs.h" > key_part_map ext_key_part_map; > uint block_size; > uint name_length; > enum ha_key_alg algorithm; > > > > > bool is_statistics_from_stat_tables; > > > > > union > { > plugin_ref parser; > LEX_STRING *parser_name; > }; > KEY_PART_INFO *key_part; > char *name; > > uchar *cache_name; > > > > > > ulong *rec_per_key; > > > > > > Index_statistics *read_stats; > > > > > Index_statistics *collected_stats; > > union { > int bdb_return_if_eq; > } handler; > TABLE *table; > LEX_STRING comment; > > engine_option_value *option_list; > ha_index_option_struct *option_struct; > > double actual_rec_per_key(uint i); > >} KEY; > > >struct st_join_table; > >typedef struct st_reginfo { > struct st_join_table *join_tab; > enum thr_lock_type lock_type; > bool not_exists_optimize; > > > > > bool impossible_range; >} REGINFO; ># 185 "/buildbot/mariadb-10.2.31/sql/structs.h" >typedef enum enum_mysql_timestamp_type timestamp_type; > > >typedef struct { > ulong year,month,day,hour; > ulonglong minute,second,second_part; > bool neg; >} INTERVAL; > > >typedef struct st_known_date_time_format { > const char *format_name; > const char *date_format; > const char *datetime_format; > const char *time_format; >} KNOWN_DATE_TIME_FORMAT; > >extern const char *show_comp_option_name[]; > >typedef int *(*update_var)(THD *, struct st_mysql_show_var *); > >typedef struct st_lex_user { > LEX_STRING user, host, plugin, auth; > LEX_STRING pwtext, pwhash; > bool is_role() const { return user.str[0] && !host.str[0]; } > void set_lex_string(LEX_STRING *l, char *buf) > { > if (is_role()) > *l= user; > else > l->length= strxmov(l->str= buf, user.str, "@", host.str, (char *) 0) - buf; > } > void reset_auth() > { > pwtext.length= pwhash.length= plugin.length= auth.length= 0; > pwtext.str= pwhash.str= 0; > plugin.str= auth.str= const_cast<char*>(""); > } >} LEX_USER; > > > > > > >typedef struct user_resources { > > uint questions; > > > > > uint updates; > > uint conn_per_hour; > > > > > int user_conn; > > double max_statement_time; > > > > > > enum {QUERIES_PER_HOUR= 1, UPDATES_PER_HOUR= 2, CONNECTIONS_PER_HOUR= 4, > USER_CONNECTIONS= 8, MAX_STATEMENT_TIME= 16}; > uint specified_limits; >} USER_RESOURCES; > > > > > > >typedef struct user_conn { > > > > > > > char *user; > > char *host; > > > > > ulonglong reset_utime; > > uint len; > > int connections; > > > > > uint conn_per_hour, updates, questions; > > USER_RESOURCES user_resources; >} USER_CONN; > >typedef struct st_user_stats >{ > char user[(((128U*3)) > (64) ? ((128U*3)) : (64)) + 1]; > > > char priv_user[(((128U*3)) > (64) ? ((128U*3)) : (64)) + 1]; > uint user_name_length; > uint total_connections; > uint total_ssl_connections; > uint concurrent_connections; > time_t connected_time; > ha_rows rows_read, rows_sent; > ha_rows rows_updated, rows_deleted, rows_inserted; > ulonglong bytes_received; > ulonglong bytes_sent; > ulonglong binlog_bytes_written; > ulonglong select_commands, update_commands, other_commands; > ulonglong commit_trans, rollback_trans; > ulonglong denied_connections, lost_connections, max_statement_time_exceeded; > ulonglong access_denied_errors; > ulonglong empty_queries; > double busy_time; > double cpu_time; >} USER_STATS; > >typedef struct st_table_stats >{ > char table[(64U*3) * 2 + 2]; > uint table_name_length; > ulonglong rows_read, rows_changed; > ulonglong rows_changed_x_indexes; > > int engine_type; >} TABLE_STATS; > >typedef struct st_index_stats >{ > > char index[(64U*3) * 3 + 3]; > uint index_name_length; > ulonglong rows_read; >} INDEX_STATS; ># 365 "/buildbot/mariadb-10.2.31/sql/structs.h" >class Discrete_interval { >private: > ulonglong interval_min; > ulonglong interval_values; > ulonglong interval_max; >public: > Discrete_interval *next; > void replace(ulonglong start, ulonglong val, ulonglong incr) > { > interval_min= start; > interval_values= val; > interval_max= (val == (9223372036854775807LL * 2ULL + 1)) ? val : start + val * incr; > } > Discrete_interval(ulonglong start, ulonglong val, ulonglong incr) : > next(__null) { replace(start, val, incr); }; > Discrete_interval() : next(__null) { replace(0, 0, 0); }; > ulonglong minimum() const { return interval_min; }; > ulonglong values() const { return interval_values; }; > ulonglong maximum() const { return interval_max; }; > > > > > > bool merge_if_contiguous(ulonglong start, ulonglong val, ulonglong incr) > { > if (interval_max == start) > { > if (val == (9223372036854775807LL * 2ULL + 1)) > { > interval_values= interval_max= val; > } > else > { > interval_values+= val; > interval_max= start + val * incr; > } > return 0; > } > return 1; > }; >}; > > >class Discrete_intervals_list { >private: > Discrete_interval *head; > Discrete_interval *tail; > > > > > > > Discrete_interval *current; > uint elements; > void set_members(Discrete_interval *h, Discrete_interval *t, > Discrete_interval *c, uint el) > { > head= h; > tail= t; > current= c; > elements= el; > } > void operator=(Discrete_intervals_list &); > Discrete_intervals_list(const Discrete_intervals_list &); > >public: > Discrete_intervals_list() : head(__null), current(__null), elements(0) {}; > void empty_no_free() > { > set_members(__null, __null, __null, 0); > } > void empty() > { > for (Discrete_interval *i= head; i;) > { > Discrete_interval *next= i->next; > delete i; > i= next; > } > empty_no_free(); > } > void copy_shallow(const Discrete_intervals_list * dli) > { > head= dli->get_head(); > tail= dli->get_tail(); > current= dli->get_current(); > elements= dli->nb_elements(); > } > void swap (Discrete_intervals_list * dli) > { > Discrete_interval *h, *t, *c; > uint el; > h= dli->get_head(); > t= dli->get_tail(); > c= dli->get_current(); > el= dli->nb_elements(); > dli->copy_shallow(this); > set_members(h, t, c, el); > } > const Discrete_interval* get_next() > { > Discrete_interval *tmp= current; > if (current != __null) > current= current->next; > return tmp; > } > ~Discrete_intervals_list() { empty(); }; > bool append(ulonglong start, ulonglong val, ulonglong incr); > bool append(Discrete_interval *interval); > ulonglong minimum() const { return (head ? head->minimum() : 0); }; > ulonglong maximum() const { return (head ? tail->maximum() : 0); }; > uint nb_elements() const { return elements; } > Discrete_interval* get_head() const { return head; }; > Discrete_interval* get_tail() const { return tail; }; > Discrete_interval* get_current() const { return current; }; >}; ># 492 "/buildbot/mariadb-10.2.31/sql/structs.h" >struct DDL_options_st >{ >public: > enum Options > { > OPT_NONE= 0, > OPT_IF_NOT_EXISTS= 2, > OPT_LIKE= 4, > OPT_OR_REPLACE= 16, > OPT_OR_REPLACE_SLAVE_GENERATED= 32, > > OPT_IF_EXISTS= 64 > }; > >private: > Options m_options; > >public: > Options create_like_options() const > { > return (DDL_options_st::Options) > (((uint) m_options) & (OPT_IF_NOT_EXISTS | OPT_OR_REPLACE)); > } > void init() { m_options= OPT_NONE; } > void init(Options options) { m_options= options; } > void set(Options other) > { > m_options= other; > } > void set(const DDL_options_st other) > { > m_options= other.m_options; > } > bool if_not_exists() const { return m_options & OPT_IF_NOT_EXISTS; } > bool or_replace() const { return m_options & OPT_OR_REPLACE; } > bool or_replace_slave_generated() const > { return m_options & OPT_OR_REPLACE_SLAVE_GENERATED; } > bool like() const { return m_options & OPT_LIKE; } > bool if_exists() const { return m_options & OPT_IF_EXISTS; } > void add(const DDL_options_st::Options other) > { > m_options= (Options) ((uint) m_options | (uint) other); > } > void add(const DDL_options_st &other) > { > add(other.m_options); > } > DDL_options_st operator|(const DDL_options_st &other) > { > add(other.m_options); > return *this; > } > DDL_options_st operator|=(DDL_options_st::Options other) > { > add(other); > return *this; > } >}; > > >class DDL_options: public DDL_options_st >{ >public: > DDL_options() { init(); } > DDL_options(Options options) { init(options); } > DDL_options(const DDL_options_st &options) > { DDL_options_st::operator=(options); } >}; > > >struct Lex_length_and_dec_st >{ >private: > const char *m_length; > const char *m_dec; >public: > void set(const char *length, const char *dec) > { > m_length= length; > m_dec= dec; > } > const char *length() const { return m_length; } > const char *dec() const { return m_dec; } >}; > > >struct Lex_field_type_st: public Lex_length_and_dec_st >{ >private: > enum_field_types m_type; > void set(enum_field_types type, const char *length, const char *dec) > { > m_type= type; > Lex_length_and_dec_st::set(length, dec); > } >public: > void set(enum_field_types type, Lex_length_and_dec_st length_and_dec) > { > m_type= type; > Lex_length_and_dec_st::operator=(length_and_dec); > } > void set(enum_field_types type, const char *length) > { > set(type, length, 0); > } > void set(enum_field_types type) > { > set(type, 0, 0); > } > enum_field_types field_type() const { return m_type; } >}; > > >struct Lex_dyncol_type_st: public Lex_length_and_dec_st >{ >private: > int m_type; >public: > void set(int type, const char *length, const char *dec) > { > m_type= type; > Lex_length_and_dec_st::set(length, dec); > } > void set(int type, Lex_length_and_dec_st length_and_dec) > { > m_type= type; > Lex_length_and_dec_st::operator=(length_and_dec); > } > void set(int type, const char *length) > { > set(type, length, 0); > } > void set(int type) > { > set(type, 0, 0); > } > int dyncol_type() const { return m_type; } >}; > > >class Load_data_param >{ >protected: > CHARSET_INFO *m_charset; > ulonglong m_fixed_length; > bool m_is_fixed_length; > bool m_use_blobs; >public: > Load_data_param(CHARSET_INFO *cs, bool is_fixed_length): > m_charset(cs), > m_fixed_length(0), > m_is_fixed_length(is_fixed_length), > m_use_blobs(false) > { } > bool add_outvar_field(THD *thd, const Field *field); > bool add_outvar_user_var(THD *thd); > CHARSET_INFO *charset() const { return m_charset; } > bool is_fixed_length() const { return m_is_fixed_length; } > bool use_blobs() const { return m_use_blobs; } >}; > > >class Load_data_outvar >{ >public: > virtual ~Load_data_outvar() {} > virtual bool load_data_set_null(THD *thd, const Load_data_param *param)= 0; > virtual bool load_data_set_value(THD *thd, const char *pos, uint length, > const Load_data_param *param)= 0; > virtual bool load_data_set_no_data(THD *thd, const Load_data_param *param)= 0; > virtual void load_data_print_for_log_event(THD *thd, class String *to) const= 0; > virtual bool load_data_add_outvar(THD *thd, Load_data_param *param) const= 0; > virtual uint load_data_fixed_length() const= 0; >}; ># 36 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_array.h" 1 ># 34 "/buildbot/mariadb-10.2.31/sql/sql_array.h" >template <typename Element_type> class Bounds_checked_array >{ >public: > Bounds_checked_array() : m_array(__null), m_size(0) {} > > Bounds_checked_array(Element_type *el, size_t size_arg) > : m_array(el), m_size(size_arg) > {} > > void reset() { m_array= __null; m_size= 0; } > > void reset(Element_type *array_arg, size_t size_arg) > { > m_array= array_arg; > m_size= size_arg; > } > > > > > > > void resize(size_t new_size) > { > do { } while(0); > m_size= new_size; > } > > Element_type &operator[](size_t n) > { > do { } while(0); > return m_array[n]; > } > > const Element_type &operator[](size_t n) const > { > do { } while(0); > return m_array[n]; > } > > size_t element_size() const { return sizeof(Element_type); } > size_t size() const { return m_size; } > > bool is_null() const { return m_array == __null; } > > void pop_front() > { > do { } while(0); > m_array+= 1; > m_size-= 1; > } > > Element_type *array() const { return m_array; } > > bool operator==(const Bounds_checked_array<Element_type>&rhs) const > { > return m_array == rhs.m_array && m_size == rhs.m_size; > } > bool operator!=(const Bounds_checked_array<Element_type>&rhs) const > { > return m_array != rhs.m_array || m_size != rhs.m_size; > } > >private: > Element_type *m_array; > size_t m_size; >}; > > > > > > > >template <class Elem> class Dynamic_array >{ > DYNAMIC_ARRAY array; >public: > Dynamic_array(uint prealloc=16, uint increment=16) > { > init(prealloc, increment); > } > > Dynamic_array(MEM_ROOT *root, uint prealloc=16, uint increment=16) > { > void *init_buffer= alloc_root(root, sizeof(Elem) * prealloc); > init_dynamic_array2(&array,sizeof(Elem),init_buffer,prealloc,increment,(myf) (0)) > ; > } > > void init(uint prealloc=16, uint increment=16) > { > init_dynamic_array2(&array, sizeof(Elem), 0, prealloc, increment, (myf) (0)); > } > > > > > > Elem& at(size_t idx) > { > do { } while(0); > return *(((Elem*)array.buffer) + idx); > } > > const Elem& at(size_t idx) const > { > return *(((Elem*)array.buffer) + idx); > } > > > Elem *front() > { > return (Elem*)array.buffer; > } > > > const Elem *front() const > { > return (const Elem*)array.buffer; > } > > > Elem *back() > { > return ((Elem*)array.buffer) + array.elements - 1; > } > > > const Elem *back() const > { > return ((const Elem*)array.buffer) + array.elements - 1; > } > > > > > > bool append(const Elem &el) > { > return insert_dynamic(&array, &el); > } > > bool append_val(Elem el) > { > return (insert_dynamic(&array, (uchar*)&el)); > } > > bool push(Elem &el) > { > return append(el); > } > > > Elem& pop() > { > return *((Elem*)pop_dynamic(&array)); > } > > void del(uint idx) > { > delete_dynamic_element(&array, idx); > } > > size_t elements() const > { > return array.elements; > } > > void elements(size_t num_elements) > { > do { } while(0); > array.elements= num_elements; > } > > void clear() > { > elements(0); > } > > void set(uint idx, const Elem &el) > { > set_dynamic(&array, &el, idx); > } > > void freeze() > { > freeze_size(&array); > } > > bool resize(size_t new_size, Elem default_val) > { > size_t old_size= elements(); > if (allocate_dynamic(&array, new_size)) > return true; > > if (new_size > old_size) > { > set_dynamic(&array, (uchar*)&default_val, new_size - 1); > > > > > } > return false; > } > > ~Dynamic_array() > { > delete_dynamic(&array); > } > > void free_memory() > { > delete_dynamic(&array); > } > > typedef int (*CMP_FUNC)(const Elem *el1, const Elem *el2); > > void sort(CMP_FUNC cmp_func) > { > my_qsort(array.buffer, array.elements, sizeof(Elem), (qsort_cmp)cmp_func); > } > > typedef int (*CMP_FUNC2)(void *, const Elem *el1, const Elem *el2); > void sort(CMP_FUNC2 cmp_func, void *data) > { > my_qsort2(array.buffer, array.elements, sizeof(Elem), (qsort2_cmp)cmp_func, data); > } >}; ># 37 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/mdl.h" 1 ># 18 "/buildbot/mariadb-10.2.31/sql/mdl.h" ># 1 "/buildbot/mariadb-10.2.31/sql/sql_plist.h" 1 ># 21 "/buildbot/mariadb-10.2.31/sql/sql_plist.h" >template <typename T, typename L> >class I_P_List_iterator; >class I_P_List_null_counter; >template <typename T> class I_P_List_no_push_back; ># 64 "/buildbot/mariadb-10.2.31/sql/sql_plist.h" >template <typename T, typename B, > typename C = I_P_List_null_counter, > typename I = I_P_List_no_push_back<T> > >class I_P_List : public C, public I >{ > T *m_first; > > > > > > >public: > I_P_List() : I(&m_first), m_first(__null) {}; > > > > > > inline void empty() { m_first= __null; C::reset(); I::set_last(&m_first); } > inline bool is_empty() const { return (m_first == __null); } > inline void push_front(T* a) > { > *B::next_ptr(a)= m_first; > if (m_first) > *B::prev_ptr(m_first)= B::next_ptr(a); > else > I::set_last(B::next_ptr(a)); > m_first= a; > *B::prev_ptr(a)= &m_first; > C::inc(); > } > inline void push_back(T *a) > { > T **last= I::get_last(); > *B::next_ptr(a)= *last; > *last= a; > *B::prev_ptr(a)= last; > I::set_last(B::next_ptr(a)); > C::inc(); > } > inline void insert_after(T *pos, T *a) > { > if (pos == __null) > push_front(a); > else > { > *B::next_ptr(a)= *B::next_ptr(pos); > *B::prev_ptr(a)= B::next_ptr(pos); > *B::next_ptr(pos)= a; > if (*B::next_ptr(a)) > { > T *old_next= *B::next_ptr(a); > *B::prev_ptr(old_next)= B::next_ptr(a); > } > else > I::set_last(B::next_ptr(a)); > C::inc(); > } > } > inline void remove(T *a) > { > T *next= *B::next_ptr(a); > if (next) > *B::prev_ptr(next)= *B::prev_ptr(a); > else > I::set_last(*B::prev_ptr(a)); > **B::prev_ptr(a)= next; > C::dec(); > } > inline T* front() { return m_first; } > inline const T *front() const { return m_first; } > inline T* pop_front() > { > T *result= front(); > > if (result) > remove(result); > > return result; > } > void swap(I_P_List<T, B, C> &rhs) > { > do { T * dummy; dummy= m_first; m_first= rhs.m_first; rhs.m_first= dummy; } while(0); > I::swap(rhs); > if (m_first) > *B::prev_ptr(m_first)= &m_first; > else > I::set_last(&m_first); > if (rhs.m_first) > *B::prev_ptr(rhs.m_first)= &rhs.m_first; > else > I::set_last(&rhs.m_first); > C::swap(rhs); > } > typedef B Adapter; > typedef I_P_List<T, B, C, I> Base; > typedef I_P_List_iterator<T, Base> Iterator; > typedef I_P_List_iterator<const T, Base> Const_Iterator; > > friend class I_P_List_iterator<T, Base>; > friend class I_P_List_iterator<const T, Base>; > >}; > > > > > > >template <typename T, typename L> >class I_P_List_iterator >{ > const L *list; > T *current; >public: > I_P_List_iterator(const L &a) > : list(&a), current(a.m_first) {} > I_P_List_iterator(const L &a, T* current_arg) > : list(&a), current(current_arg) {} > inline void init(const L &a) > { > list= &a; > current= a.m_first; > } > > > > > > > inline T* operator++(int) > { > T *result= current; > if (result) > current= *L::Adapter::next_ptr(current); > return result; > } > > inline T* operator++() > { > current= *L::Adapter::next_ptr(current); > return current; > } > inline void rewind() > { > current= list->m_first; > } >}; > > > > > > > >template <typename T, T* T::*next, T** T::*prev> >struct I_P_List_adapter >{ > static inline T **next_ptr(T *el) { return &(el->*next); } > static inline const T* const* next_ptr(const T *el) { return &(el->*next); } > static inline T ***prev_ptr(T *el) { return &(el->*prev); } >}; > > > > > > > >class I_P_List_null_counter >{ >protected: > void reset() {} > void inc() {} > void dec() {} > void swap(I_P_List_null_counter &rhs) {} >}; > > > > > > > >class I_P_List_counter >{ > uint m_counter; >protected: > I_P_List_counter() : m_counter (0) {} > void reset() {m_counter= 0;} > void inc() {m_counter++;} > void dec() {m_counter--;} > void swap(I_P_List_counter &rhs) > { do { uint dummy; dummy= m_counter; m_counter= rhs.m_counter; rhs.m_counter= dummy; } while(0); } >public: > uint elements() const { return m_counter; } >}; > > > > > > > >template <typename T> class I_P_List_no_push_back >{ >protected: > I_P_List_no_push_back(T **a) {}; > void set_last(T **a) {} > > > > > > void swap(I_P_List_no_push_back<T> &rhs) {} >}; > > > > > > > >template <typename T> class I_P_List_fast_push_back >{ > T **m_last; >protected: > I_P_List_fast_push_back(T **a) : m_last(a) { }; > void set_last(T **a) { m_last= a; } > T** get_last() const { return m_last; } > void swap(I_P_List_fast_push_back<T> &rhs) > { do { T** dummy; dummy= m_last; m_last= rhs.m_last; rhs.m_last= dummy; } while(0); } >}; ># 19 "/buildbot/mariadb-10.2.31/sql/mdl.h" 2 > > > ># 1 "/buildbot/mariadb-10.2.31/include/lf.h" 1 ># 21 "/buildbot/mariadb-10.2.31/include/lf.h" >extern "C" { ># 32 "/buildbot/mariadb-10.2.31/include/lf.h" >typedef struct { > void * volatile level[4]; > uint size_of_element; >} LF_DYNARRAY; > >typedef int (*lf_dynarray_func)(void *, void *); > >void lf_dynarray_init(LF_DYNARRAY *array, uint element_size); >void lf_dynarray_destroy(LF_DYNARRAY *array); > >void *lf_dynarray_value(LF_DYNARRAY *array, uint idx); >void *lf_dynarray_lvalue(LF_DYNARRAY *array, uint idx); >int lf_dynarray_iterate(LF_DYNARRAY *array, lf_dynarray_func func, void *arg); ># 53 "/buildbot/mariadb-10.2.31/include/lf.h" >typedef void lf_pinbox_free_func(void *, void *, void*); > >typedef struct { > LF_DYNARRAY pinarray; > lf_pinbox_free_func *free_func; > void *free_func_arg; > uint free_ptr_offset; > uint32 volatile pinstack_top_ver; > uint32 volatile pins_in_array; >} LF_PINBOX; > >typedef struct { > void * volatile pin[4]; > LF_PINBOX *pinbox; > void **stack_ends_here; > void *purgatory; > uint32 purgatory_count; > uint32 volatile link; > > char pad[128]; >} LF_PINS; ># 86 "/buildbot/mariadb-10.2.31/include/lf.h" >void lf_pinbox_init(LF_PINBOX *pinbox, uint free_ptr_offset, > lf_pinbox_free_func *free_func, void * free_func_arg); >void lf_pinbox_destroy(LF_PINBOX *pinbox); > >LF_PINS *lf_pinbox_get_pins(LF_PINBOX *pinbox); >void lf_pinbox_put_pins(LF_PINS *pins); >void lf_pinbox_free(LF_PINS *pins, void *addr); > > > > > >typedef struct st_lf_allocator { > LF_PINBOX pinbox; > uchar * volatile top; > uint element_size; > uint32 volatile mallocs; > void (*constructor)(uchar *); > void (*destructor)(uchar *); >} LF_ALLOCATOR; > >void lf_alloc_init(LF_ALLOCATOR *allocator, uint size, uint free_ptr_offset); >void lf_alloc_destroy(LF_ALLOCATOR *allocator); >uint lf_alloc_pool_count(LF_ALLOCATOR *allocator); ># 124 "/buildbot/mariadb-10.2.31/include/lf.h" >void *lf_alloc_new(LF_PINS *pins); > >} > > > > > > >extern "C" { > >typedef struct st_lf_hash LF_HASH; >typedef void (*lf_hash_initializer)(LF_HASH *hash, void *dst, const void *src); > > > > >extern const int LF_HASH_OVERHEAD; > >struct st_lf_hash { > LF_DYNARRAY array; > LF_ALLOCATOR alloc; > my_hash_get_key get_key; > lf_hash_initializer initializer; > my_hash_function hash_function; > CHARSET_INFO *charset; > uint key_offset, key_length; > uint element_size; > uint flags; > int32 volatile size; > int32 volatile count; >}; > >void lf_hash_init(LF_HASH *hash, uint element_size, uint flags, > uint key_offset, uint key_length, my_hash_get_key get_key, > CHARSET_INFO *charset); >void lf_hash_destroy(LF_HASH *hash); >int lf_hash_insert(LF_HASH *hash, LF_PINS *pins, const void *data); >void *lf_hash_search(LF_HASH *hash, LF_PINS *pins, const void *key, uint keylen); >void *lf_hash_search_using_hash_value(LF_HASH *hash, LF_PINS *pins, > my_hash_value_type hash_value, > const void *key, uint keylen); >int lf_hash_delete(LF_HASH *hash, LF_PINS *pins, const void *key, uint keylen); >int lf_hash_iterate(LF_HASH *hash, LF_PINS *pins, > my_hash_walk_action action, void *argument); ># 180 "/buildbot/mariadb-10.2.31/include/lf.h" >} ># 23 "/buildbot/mariadb-10.2.31/sql/mdl.h" 2 > >class THD; > >class MDL_context; >class MDL_lock; >class MDL_ticket; >bool ok_for_lower_case_names(const char *name); ># 54 "/buildbot/mariadb-10.2.31/sql/mdl.h" >class MDL_context_owner >{ >public: > virtual ~MDL_context_owner() {} ># 74 "/buildbot/mariadb-10.2.31/sql/mdl.h" > virtual void enter_cond(mysql_cond_t *cond, mysql_mutex_t *mutex, > const PSI_stage_info *stage, PSI_stage_info *old_stage, > const char *src_function, const char *src_file, > int src_line) = 0; ># 89 "/buildbot/mariadb-10.2.31/sql/mdl.h" > virtual void exit_cond(const PSI_stage_info *stage, > const char *src_function, const char *src_file, > int src_line) = 0; > > > > virtual int is_killed() = 0; > > > > > > virtual THD* get_thd() = 0; > > > > > virtual bool notify_shared_lock(MDL_context_owner *in_use, > bool needs_thr_lock_abort) = 0; >}; ># 117 "/buildbot/mariadb-10.2.31/sql/mdl.h" >enum enum_mdl_type { > > > > > > > > MDL_INTENTION_EXCLUSIVE= 0, ># 148 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED, ># 165 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED_HIGH_PRIO, ># 176 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED_READ, ># 186 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED_WRITE, ># 195 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED_UPGRADABLE, > > > > > > MDL_SHARED_READ_ONLY, ># 215 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED_NO_WRITE, ># 227 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_SHARED_NO_READ_WRITE, > > > > > > > > MDL_EXCLUSIVE, > > MDL_TYPE_END}; > > > > >enum enum_mdl_duration { > > > > > MDL_STATEMENT= 0, > > > > > MDL_TRANSACTION, > > > > > MDL_EXPLICIT, > > MDL_DURATION_END }; ># 275 "/buildbot/mariadb-10.2.31/sql/mdl.h" >class MDL_key >{ >public: ># 297 "/buildbot/mariadb-10.2.31/sql/mdl.h" > enum enum_mdl_namespace { GLOBAL=0, > SCHEMA, > TABLE, > FUNCTION, > PROCEDURE, > TRIGGER, > EVENT, > COMMIT, > USER_LOCK, > > NAMESPACE_END }; > > const uchar *ptr() const { return (uchar*) m_ptr; } > uint length() const { return m_length; } > > const char *db_name() const { return m_ptr + 1; } > uint db_name_length() const { return m_db_name_length; } > > const char *name() const { return m_ptr + m_db_name_length + 2; } > uint name_length() const { return m_length - m_db_name_length - 3; } > > enum_mdl_namespace mdl_namespace() const > { return (enum_mdl_namespace)(m_ptr[0]); } ># 332 "/buildbot/mariadb-10.2.31/sql/mdl.h" > void mdl_key_init(enum_mdl_namespace mdl_namespace_arg, > const char *db, const char *name_arg) > { > m_ptr[0]= (char) mdl_namespace_arg; > > > > > > do { } while(0); > do { } while(0); > m_db_name_length= static_cast<uint16>(strmake(m_ptr + 1, db, (64U*3)) - > m_ptr - 1); > m_length= static_cast<uint16>(strmake(m_ptr + m_db_name_length + 2, > name_arg, > (64U*3)) - m_ptr + 1); > m_hash_value= my_hash_sort(&my_charset_bin, (uchar*) m_ptr + 1, > m_length - 1); > do { } while(0); > } > void mdl_key_init(const MDL_key *rhs) > { > memcpy(m_ptr, rhs->m_ptr, rhs->m_length); > m_length= rhs->m_length; > m_db_name_length= rhs->m_db_name_length; > m_hash_value= rhs->m_hash_value; > } > bool is_equal(const MDL_key *rhs) const > { > return (m_length == rhs->m_length && > memcmp(m_ptr, rhs->m_ptr, m_length) == 0); > } > > > > int cmp(const MDL_key *rhs) const > { > > > > > > return memcmp(m_ptr, rhs->m_ptr, ((m_length) < (rhs->m_length) ? (m_length) : (rhs->m_length))); > } > > MDL_key(const MDL_key *rhs) > { > mdl_key_init(rhs); > } > MDL_key(enum_mdl_namespace namespace_arg, > const char *db_arg, const char *name_arg) > { > mdl_key_init(namespace_arg, db_arg, name_arg); > } > MDL_key() {} > > > > > > const PSI_stage_info * get_wait_state_name() const > { > return & m_namespace_to_wait_state_name[(int)mdl_namespace()]; > } > my_hash_value_type hash_value() const > { > return m_hash_value + mdl_namespace(); > } > my_hash_value_type tc_hash_value() const > { > return m_hash_value; > } > >private: > uint16 m_length; > uint16 m_db_name_length; > my_hash_value_type m_hash_value; > char m_ptr[(1 + (64U*3) + 1 + (64U*3) + 1)]; > static PSI_stage_info m_namespace_to_wait_state_name[NAMESPACE_END]; >private: > MDL_key(const MDL_key &); > MDL_key &operator=(const MDL_key &); > friend my_hash_value_type mdl_hash_function(CHARSET_INFO *, > const uchar *, size_t); >}; ># 432 "/buildbot/mariadb-10.2.31/sql/mdl.h" >class MDL_request >{ >public: > > enum enum_mdl_type type; > > enum enum_mdl_duration duration; > > > > > MDL_request *next_in_list; > MDL_request **prev_in_list; > > > > > MDL_ticket *ticket; > > > MDL_key key; > >public: > > static void *operator new(size_t size, MEM_ROOT *mem_root) throw () > { return alloc_root(mem_root, size); } > static void operator delete(void *ptr, MEM_ROOT *mem_root) {} > > void init(MDL_key::enum_mdl_namespace namespace_arg, > const char *db_arg, const char *name_arg, > enum_mdl_type mdl_type_arg, > enum_mdl_duration mdl_duration_arg); > void init(const MDL_key *key_arg, enum_mdl_type mdl_type_arg, > enum_mdl_duration mdl_duration_arg); > > inline void set_type(enum_mdl_type type_arg) > { > do { } while(0); > type= type_arg; > } > void move_from(MDL_request &from) > { > type= from.type; > duration= from.duration; > ticket= from.ticket; > next_in_list= from.next_in_list; > prev_in_list= from.prev_in_list; > key.mdl_key_init(&from.key); > from.ticket= __null; > } ># 490 "/buildbot/mariadb-10.2.31/sql/mdl.h" > bool is_write_lock_request() const > { > return (type >= MDL_SHARED_WRITE && > type != MDL_SHARED_READ_ONLY); > } ># 509 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_request& operator=(const MDL_request &rhs) > { > ticket= __null; > > return *this; > } > > MDL_request() {} > > MDL_request(const MDL_request *rhs) > :type(rhs->type), > duration(rhs->duration), > ticket(__null), > key(&rhs->key) > {} >}; > > >typedef void (*mdl_cached_object_release_hook)(void *); > > > > > > > >class MDL_wait_for_graph_visitor >{ >public: > virtual bool enter_node(MDL_context *node) = 0; > virtual void leave_node(MDL_context *node) = 0; > > virtual bool inspect_edge(MDL_context *dest) = 0; > virtual ~MDL_wait_for_graph_visitor(); > MDL_wait_for_graph_visitor() {} >}; > > > > > > >class MDL_wait_for_subgraph >{ >public: > virtual ~MDL_wait_for_subgraph(); > > > > > > virtual bool accept_visitor(MDL_wait_for_graph_visitor *gvisitor) = 0; > > enum enum_deadlock_weight > { > DEADLOCK_WEIGHT_DML= 0, > DEADLOCK_WEIGHT_DDL= 100 > }; > > virtual uint get_deadlock_weight() const = 0; >}; ># 592 "/buildbot/mariadb-10.2.31/sql/mdl.h" >class MDL_ticket : public MDL_wait_for_subgraph >{ >public: > > > > > MDL_ticket *next_in_context; > MDL_ticket **prev_in_context; > > > > > MDL_ticket *next_in_lock; > MDL_ticket **prev_in_lock; >public: > > void wsrep_report(bool debug); > > bool has_pending_conflicting_lock() const; > > MDL_context *get_ctx() const { return m_ctx; } > bool is_upgradable_or_exclusive() const > { > return m_type == MDL_SHARED_UPGRADABLE || > m_type == MDL_SHARED_NO_WRITE || > m_type == MDL_SHARED_NO_READ_WRITE || > m_type == MDL_EXCLUSIVE; > } > enum_mdl_type get_type() const { return m_type; } > MDL_lock *get_lock() const { return m_lock; } > MDL_key *get_key() const; > void downgrade_lock(enum_mdl_type type); > > bool has_stronger_or_equal_type(enum_mdl_type type) const; > > bool is_incompatible_when_granted(enum_mdl_type type) const; > bool is_incompatible_when_waiting(enum_mdl_type type) const; > > > virtual bool accept_visitor(MDL_wait_for_graph_visitor *dvisitor); > virtual uint get_deadlock_weight() const; >private: > friend class MDL_context; > > MDL_ticket(MDL_context *ctx_arg, enum_mdl_type type_arg > > > > ) > : m_type(type_arg), > > > > m_ctx(ctx_arg), > m_lock(__null) > {} > > static MDL_ticket *create(MDL_context *ctx_arg, enum_mdl_type type_arg > > > > ); > static void destroy(MDL_ticket *ticket); >private: > > enum enum_mdl_type m_type; ># 669 "/buildbot/mariadb-10.2.31/sql/mdl.h" > MDL_context *m_ctx; > > > > > MDL_lock *m_lock; > >private: > MDL_ticket(const MDL_ticket &); > MDL_ticket &operator=(const MDL_ticket &); >}; ># 689 "/buildbot/mariadb-10.2.31/sql/mdl.h" >class MDL_savepoint >{ >public: > MDL_savepoint() {}; > >private: > MDL_savepoint(MDL_ticket *stmt_ticket, MDL_ticket *trans_ticket) > : m_stmt_ticket(stmt_ticket), m_trans_ticket(trans_ticket) > {} > > friend class MDL_context; > >private: > > > > > MDL_ticket *m_stmt_ticket; > > > > > MDL_ticket *m_trans_ticket; >}; > > > > > > >class MDL_wait >{ >public: > MDL_wait(); > ~MDL_wait(); > > enum enum_wait_status { EMPTY = 0, GRANTED, VICTIM, TIMEOUT, KILLED }; > > bool set_status(enum_wait_status result_arg); > enum_wait_status get_status(); > void reset_status(); > enum_wait_status timed_wait(MDL_context_owner *owner, > struct timespec *abs_timeout, > bool signal_timeout, > const PSI_stage_info *wait_state_name); >private: > > > > > > > > mysql_mutex_t m_LOCK_wait_status; > mysql_cond_t m_COND_wait_status; > enum_wait_status m_wait_status; >}; > > >typedef I_P_List<MDL_request, I_P_List_adapter<MDL_request, > &MDL_request::next_in_list, > &MDL_request::prev_in_list>, > I_P_List_counter> > MDL_request_list; > > > > > > >class MDL_context >{ >public: > typedef I_P_List<MDL_ticket, > I_P_List_adapter<MDL_ticket, > &MDL_ticket::next_in_context, > &MDL_ticket::prev_in_context> > > Ticket_list; > > typedef Ticket_list::Iterator Ticket_iterator; > > MDL_context(); > void destroy(); > > bool try_acquire_lock(MDL_request *mdl_request); > bool acquire_lock(MDL_request *mdl_request, double lock_wait_timeout); > bool acquire_locks(MDL_request_list *requests, double lock_wait_timeout); > bool upgrade_shared_lock(MDL_ticket *mdl_ticket, > enum_mdl_type new_type, > double lock_wait_timeout); > > bool clone_ticket(MDL_request *mdl_request); > > void release_all_locks_for_name(MDL_ticket *ticket); > void release_lock(MDL_ticket *ticket); > > bool is_lock_owner(MDL_key::enum_mdl_namespace mdl_namespace, > const char *db, const char *name, > enum_mdl_type mdl_type); > unsigned long get_lock_owner(MDL_key *mdl_key); > > bool has_lock(const MDL_savepoint &mdl_savepoint, MDL_ticket *mdl_ticket); > > inline bool has_locks() const > { > return !(m_tickets[MDL_STATEMENT].is_empty() && > m_tickets[MDL_TRANSACTION].is_empty() && > m_tickets[MDL_EXPLICIT].is_empty()); > } > inline bool has_transactional_locks() const > { > return !m_tickets[MDL_TRANSACTION].is_empty(); > } > > MDL_savepoint mdl_savepoint() > { > return MDL_savepoint(m_tickets[MDL_STATEMENT].front(), > m_tickets[MDL_TRANSACTION].front()); > } > > void set_explicit_duration_for_all_locks(); > void set_transaction_duration_for_all_locks(); > void set_lock_duration(MDL_ticket *mdl_ticket, enum_mdl_duration duration); > > void release_statement_locks(); > void release_transactional_locks(); > void release_explicit_locks(); > void rollback_to_savepoint(const MDL_savepoint &mdl_savepoint); > > MDL_context_owner *get_owner() { return m_owner; } > > > inline uint get_deadlock_weight() const > { return m_waiting_for->get_deadlock_weight(); } ># 831 "/buildbot/mariadb-10.2.31/sql/mdl.h" > void init(MDL_context_owner *arg) { m_owner= arg; } > > void set_needs_thr_lock_abort(bool needs_thr_lock_abort) > { ># 843 "/buildbot/mariadb-10.2.31/sql/mdl.h" > m_needs_thr_lock_abort= needs_thr_lock_abort; > } > bool get_needs_thr_lock_abort() const > { > return m_needs_thr_lock_abort; > } >public: > > > > > MDL_wait m_wait; >private: ># 910 "/buildbot/mariadb-10.2.31/sql/mdl.h" > Ticket_list m_tickets[MDL_DURATION_END]; > MDL_context_owner *m_owner; ># 921 "/buildbot/mariadb-10.2.31/sql/mdl.h" > bool m_needs_thr_lock_abort; ># 930 "/buildbot/mariadb-10.2.31/sql/mdl.h" > mysql_prlock_t m_LOCK_waiting_for; > > > > > > > > MDL_wait_for_subgraph *m_waiting_for; > LF_PINS *m_pins; >private: > MDL_ticket *find_ticket(MDL_request *mdl_req, > enum_mdl_duration *duration); > void release_locks_stored_before(enum_mdl_duration duration, MDL_ticket *sentinel); > void release_lock(enum_mdl_duration duration, MDL_ticket *ticket); > bool try_acquire_lock_impl(MDL_request *mdl_request, > MDL_ticket **out_ticket); > bool fix_pins(); > >public: > THD *get_thd() const { return m_owner->get_thd(); } > bool has_explicit_locks(); > void find_deadlock(); > > ulong get_thread_id() const { return thd_get_thread_id(get_thd()); } > > bool visit_subgraph(MDL_wait_for_graph_visitor *dvisitor); > > > void will_wait_for(MDL_wait_for_subgraph *waiting_for_arg) > { > inline_mysql_prlock_wrlock(&m_LOCK_waiting_for); > m_waiting_for= waiting_for_arg; > inline_mysql_prlock_unlock(&m_LOCK_waiting_for); > } > > > void done_waiting_for() > { > inline_mysql_prlock_wrlock(&m_LOCK_waiting_for); > m_waiting_for= __null; > inline_mysql_prlock_unlock(&m_LOCK_waiting_for); > } > void lock_deadlock_victim() > { > inline_mysql_prlock_rdlock(&m_LOCK_waiting_for); > } > void unlock_deadlock_victim() > { > inline_mysql_prlock_unlock(&m_LOCK_waiting_for); > } >private: > MDL_context(const MDL_context &rhs); > MDL_context &operator=(MDL_context &rhs); > > > friend int i_s_metadata_lock_info_fill_row(MDL_ticket*, void*); >}; > > >void mdl_init(); >void mdl_destroy(); > >extern "C" unsigned long thd_get_thread_id(const THD* thd); ># 1003 "/buildbot/mariadb-10.2.31/sql/mdl.h" >extern "C" int thd_is_connected(THD* thd); > > > > > > > >extern "C" ulong max_write_lock_count; > >extern >int mdl_iterate(int (*callback)(MDL_ticket *ticket, void *arg), void *arg); ># 38 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/sql/sql_analyze_stmt.h" 1 ># 44 "/buildbot/mariadb-10.2.31/sql/sql_analyze_stmt.h" >class Exec_time_tracker >{ >protected: > ulonglong count; > ulonglong cycles; > ulonglong last_start; > > void cycles_stop_tracking() > { > ulonglong end= my_timer_cycles(); > cycles += end - last_start; > if (__builtin_expect(((end < last_start) != 0),0)) > cycles += (9223372036854775807LL * 2ULL + 1); > } >public: > Exec_time_tracker() : count(0), cycles(0) {} > > > void start_tracking() > { > last_start= my_timer_cycles(); > } > > void stop_tracking() > { > count++; > cycles_stop_tracking(); > } > > > ulonglong get_loops() const { return count; } > double get_time_ms() const > { > > return 1000 * ((double)cycles) / sys_timer_info.cycles.frequency; > } >}; > > > > > > > >class Time_and_counter_tracker: public Exec_time_tracker >{ >public: > const bool timed; > > Time_and_counter_tracker(bool timed_arg) : timed(timed_arg) > {} > > > void incr_loops() { count++; } > > > > > void stop_tracking() > { > cycles_stop_tracking(); > } >}; ># 129 "/buildbot/mariadb-10.2.31/sql/sql_analyze_stmt.h" >class Table_access_tracker >{ >public: > Table_access_tracker() : > r_scans(0), r_rows(0), > r_rows_after_where(0) > {} > > ha_rows r_scans; > ha_rows r_rows; > ha_rows r_rows_after_where; > > bool has_scans() { return (r_scans != 0); } > ha_rows get_loops() { return r_scans; } > double get_avg_rows() > { > return r_scans ? ((double)r_rows / r_scans): 0; > } > > double get_filtered_after_where() > { > double r_filtered; > if (r_rows > 0) > r_filtered= (double)r_rows_after_where / r_rows; > else > r_filtered= 1.0; > > return r_filtered; > } > > inline void on_scan_init() { r_scans++; } > inline void on_record_read() { r_rows++; } > inline void on_record_after_where() { r_rows_after_where++; } >}; > > >class Json_writer; ># 177 "/buildbot/mariadb-10.2.31/sql/sql_analyze_stmt.h" >class Filesort_tracker : public Sql_alloc >{ >public: > Filesort_tracker(bool do_timing) : > time_tracker(do_timing), r_limit(0), r_used_pq(0), > r_examined_rows(0), r_sorted_rows(0), r_output_rows(0), > sort_passes(0), > sort_buffer_size(0) > {} > > > > inline void report_use(ha_rows r_limit_arg) > { > if (!time_tracker.get_loops()) > r_limit= r_limit_arg; > else > r_limit= (r_limit != r_limit_arg)? 0: r_limit_arg; > > { (&time_tracker)->incr_loops(); if (__builtin_expect((((&time_tracker)->timed) != 0),0)) { (&time_tracker)->start_tracking(); } }; > } > inline void incr_pq_used() { r_used_pq++; } > > inline void report_row_numbers(ha_rows examined_rows, > ha_rows sorted_rows, > ha_rows returned_rows) > { > r_examined_rows += examined_rows; > r_sorted_rows += sorted_rows; > r_output_rows += returned_rows; > } > > inline void report_merge_passes_at_start(ulong passes) > { > sort_passes -= passes; > } > inline void report_merge_passes_at_end(ulong passes) > { > if (__builtin_expect((((&time_tracker)->timed) != 0),0)) { (&time_tracker)->stop_tracking(); }; > sort_passes += passes; > } > > inline void report_sort_buffer_size(size_t bufsize) > { > if (sort_buffer_size) > sort_buffer_size= ulonglong(-1); > else > sort_buffer_size= bufsize; > } > > > void print_json_members(Json_writer *writer); > > ulonglong get_r_loops() const { return time_tracker.get_loops(); } > double get_avg_examined_rows() > { > return ((double)r_examined_rows) / get_r_loops(); > } > double get_avg_returned_rows() > { > return ((double)r_output_rows) / get_r_loops(); > } > double get_r_filtered() > { > if (r_examined_rows > 0) > return ((double)r_sorted_rows / r_examined_rows); > else > return 1.0; > } >private: > Time_and_counter_tracker time_tracker; ># 257 "/buildbot/mariadb-10.2.31/sql/sql_analyze_stmt.h" > ulonglong r_limit; > ulonglong r_used_pq; > > > ulonglong r_examined_rows; > > > > > > ulonglong r_sorted_rows; > > > > > > > ulonglong r_output_rows; > > > ulonglong sort_passes; > > > > > > > ulonglong sort_buffer_size; >}; ># 40 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 > > > ># 1 "/buildbot/mariadb-10.2.31/include/keycache.h" 1 ># 23 "/buildbot/mariadb-10.2.31/include/keycache.h" >extern "C" { ># 43 "/buildbot/mariadb-10.2.31/include/keycache.h" >typedef struct st_key_cache_statistics >{ > ulonglong mem_size; > ulonglong block_size; > ulonglong blocks_used; > ulonglong blocks_unused; > ulonglong blocks_changed; > ulonglong blocks_warm; > ulonglong read_requests; > ulonglong reads; > ulonglong write_requests; > ulonglong writes; >} KEY_CACHE_STATISTICS; > > > > >typedef enum key_cache_type >{ > SIMPLE_KEY_CACHE, > PARTITIONED_KEY_CACHE >} KEY_CACHE_TYPE; > > >typedef > int (*INIT_KEY_CACHE) > (void *, uint key_cache_block_size, > size_t use_mem, uint division_limit, uint age_threshold, > uint changed_blocks_hash_size); >typedef > int (*RESIZE_KEY_CACHE) > (void *, uint key_cache_block_size, > size_t use_mem, uint division_limit, uint age_threshold, > uint changed_blocks_hash_size); >typedef > void (*CHANGE_KEY_CACHE_PARAM) > (void *keycache_cb, > uint division_limit, uint age_threshold); >typedef > uchar* (*KEY_CACHE_READ) > (void *keycache_cb, > File file, my_off_t filepos, int level, > uchar *buff, uint length, > uint block_length, int return_buffer); >typedef > int (*KEY_CACHE_INSERT) > (void *keycache_cb, > File file, my_off_t filepos, int level, > uchar *buff, uint length); >typedef > int (*KEY_CACHE_WRITE) > (void *keycache_cb, > File file, void *file_extra, > my_off_t filepos, int level, > uchar *buff, uint length, > uint block_length, int force_write); >typedef > int (*FLUSH_KEY_BLOCKS) > (void *keycache_cb, > int file, void *file_extra, > enum flush_type type); >typedef > int (*RESET_KEY_CACHE_COUNTERS) > (const char *name, void *keycache_cb); >typedef > void (*END_KEY_CACHE) > (void *keycache_cb, my_bool cleanup); >typedef > void (*GET_KEY_CACHE_STATISTICS) > (void *keycache_cb, uint partition_no, > KEY_CACHE_STATISTICS *key_cache_stats); ># 126 "/buildbot/mariadb-10.2.31/include/keycache.h" >typedef struct st_key_cache_funcs >{ > INIT_KEY_CACHE init; > RESIZE_KEY_CACHE resize; > CHANGE_KEY_CACHE_PARAM change_param; > KEY_CACHE_READ read; > KEY_CACHE_INSERT insert; > KEY_CACHE_WRITE write; > FLUSH_KEY_BLOCKS flush; > RESET_KEY_CACHE_COUNTERS reset_counters; > END_KEY_CACHE end; > GET_KEY_CACHE_STATISTICS get_stats; >} KEY_CACHE_FUNCS; > > >typedef struct st_key_cache >{ > KEY_CACHE_TYPE key_cache_type; > void *keycache_cb; > KEY_CACHE_FUNCS *interface_funcs; > ulonglong param_buff_size; > ulonglong param_block_size; > ulonglong param_division_limit; > ulonglong param_age_threshold; > ulonglong param_partitions; > ulonglong changed_blocks_hash_size; > my_bool key_cache_inited; > my_bool can_be_used; > my_bool in_init; > uint partitions; > size_t key_cache_mem_size; > pthread_mutex_t op_lock; >} KEY_CACHE; > > > >extern KEY_CACHE dflt_key_cache_var, *dflt_key_cache; > >extern int init_key_cache(KEY_CACHE *keycache, uint key_cache_block_size, > size_t use_mem, uint division_limit, > uint age_threshold, uint changed_blocks_hash_size, > uint partitions); >extern int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size, > size_t use_mem, uint division_limit, > uint age_threshold, uint changed_blocks_hash_size); >extern void change_key_cache_param(KEY_CACHE *keycache, uint division_limit, > uint age_threshold); >extern uchar *key_cache_read(KEY_CACHE *keycache, > File file, my_off_t filepos, int level, > uchar *buff, uint length, > uint block_length,int return_buffer); >extern int key_cache_insert(KEY_CACHE *keycache, > File file, my_off_t filepos, int level, > uchar *buff, uint length); >extern int key_cache_write(KEY_CACHE *keycache, > File file, void *file_extra, > my_off_t filepos, int level, > uchar *buff, uint length, > uint block_length, int force_write); >extern int flush_key_blocks(KEY_CACHE *keycache, > int file, void *file_extra, > enum flush_type type); >extern void end_key_cache(KEY_CACHE *keycache, my_bool cleanup); >extern void get_key_cache_statistics(KEY_CACHE *keycache, > uint partition_no, > KEY_CACHE_STATISTICS *key_cache_stats); > > >extern my_bool multi_keycache_init(void); >extern void multi_keycache_free(void); >extern KEY_CACHE *multi_key_cache_search(uchar *key, uint length, > KEY_CACHE *def); >extern my_bool multi_key_cache_set(const uchar *key, uint length, > KEY_CACHE *key_cache); >extern void multi_key_cache_change(KEY_CACHE *old_data, > KEY_CACHE *new_data); >extern int reset_key_cache_counters(const char *name, > KEY_CACHE *key_cache, void *); >extern int repartition_key_cache(KEY_CACHE *keycache, > uint key_cache_block_size, > size_t use_mem, > uint division_limit, > uint age_threshold, > uint changed_blocks_hash_size, > uint partitions); >} ># 44 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/include/mysql/psi/mysql_table.h" 1 ># 45 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 > >class Alter_info; >class Virtual_column_info; ># 72 "/buildbot/mariadb-10.2.31/sql/handler.h" >enum enum_alter_inplace_result { > HA_ALTER_ERROR, > HA_ALTER_INPLACE_NOT_SUPPORTED, > HA_ALTER_INPLACE_EXCLUSIVE_LOCK, > HA_ALTER_INPLACE_SHARED_LOCK_AFTER_PREPARE, > HA_ALTER_INPLACE_SHARED_LOCK, > HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE, > HA_ALTER_INPLACE_NO_LOCK >}; ># 411 "/buildbot/mariadb-10.2.31/sql/handler.h" >static const uint MYSQL_START_TRANS_OPT_WITH_CONS_SNAPSHOT = 1; > >static const uint MYSQL_START_TRANS_OPT_READ_ONLY = 2; > >static const uint MYSQL_START_TRANS_OPT_READ_WRITE = 4; ># 424 "/buildbot/mariadb-10.2.31/sql/handler.h" >enum legacy_db_type >{ > > DB_TYPE_UNKNOWN=0, > DB_TYPE_HEAP=6, > DB_TYPE_MYISAM=9, > DB_TYPE_MRG_MYISAM=10, > DB_TYPE_INNODB=12, > DB_TYPE_EXAMPLE_DB=15, > DB_TYPE_ARCHIVE_DB=16, > DB_TYPE_CSV_DB=17, > DB_TYPE_FEDERATED_DB=18, > DB_TYPE_BLACKHOLE_DB=19, > DB_TYPE_PARTITION_DB=20, > DB_TYPE_BINLOG=21, > DB_TYPE_PBXT=23, > DB_TYPE_PERFORMANCE_SCHEMA=28, > DB_TYPE_ARIA=42, > DB_TYPE_TOKUDB=43, > DB_TYPE_FIRST_DYNAMIC=44, > DB_TYPE_DEFAULT=127 >}; > > > > > > >enum row_type { ROW_TYPE_NOT_USED=-1, ROW_TYPE_DEFAULT, ROW_TYPE_FIXED, > ROW_TYPE_DYNAMIC, ROW_TYPE_COMPRESSED, > ROW_TYPE_REDUNDANT, ROW_TYPE_COMPACT, ROW_TYPE_PAGE }; > > > > > >enum column_format_type { > COLUMN_FORMAT_TYPE_DEFAULT= 0, > COLUMN_FORMAT_TYPE_FIXED= 1, > COLUMN_FORMAT_TYPE_DYNAMIC= 2 >}; > >enum enum_binlog_func { > BFN_RESET_LOGS= 1, > BFN_RESET_SLAVE= 2, > BFN_BINLOG_WAIT= 3, > BFN_BINLOG_END= 4, > BFN_BINLOG_PURGE_FILE= 5 >}; > >enum enum_binlog_command { > LOGCOM_CREATE_TABLE, > LOGCOM_ALTER_TABLE, > LOGCOM_RENAME_TABLE, > LOGCOM_DROP_TABLE, > LOGCOM_CREATE_DB, > LOGCOM_ALTER_DB, > LOGCOM_DROP_DB >}; ># 537 "/buildbot/mariadb-10.2.31/sql/handler.h" >extern const char *mysqld_system_database; > > > > > >struct st_system_tablename >{ > const char *db; > const char *tablename; >}; > > >typedef ulonglong my_xid; ># 571 "/buildbot/mariadb-10.2.31/sql/handler.h" >struct xid_t { > long formatID; > long gtrid_length; > long bqual_length; > char data[128]; > > xid_t() {} > bool eq(struct xid_t *xid) const > { return !xid->is_null() && eq(xid->gtrid_length, xid->bqual_length, xid->data); } > bool eq(long g, long b, const char *d) const > { return !is_null() && g == gtrid_length && b == bqual_length && !memcmp(d, data, g+b); } > void set(struct xid_t *xid) > { memcpy(this, xid, xid->length()); } > void set(long f, const char *g, long gl, const char *b, long bl) > { > formatID= f; > memcpy(data, g, gtrid_length= gl); > memcpy(data+gl, b, bqual_length= bl); > } > void set(ulonglong xid) > { > my_xid tmp; > formatID= 1; > set(8, 0, "MySQLXid"); > memcpy(data+8, &server_id, sizeof(server_id)); > tmp= xid; > memcpy(data+(8 +sizeof(server_id)), &tmp, sizeof(tmp)); > gtrid_length=((8 +sizeof(server_id))+sizeof(my_xid)); > } > void set(long g, long b, const char *d) > { > formatID= 1; > gtrid_length= g; > bqual_length= b; > memcpy(data, d, g+b); > } > bool is_null() const { return formatID == -1; } > void null() { formatID= -1; } > my_xid quick_get_my_xid() > { > my_xid tmp; > memcpy(&tmp, data+(8 +sizeof(server_id)), sizeof(tmp)); > return tmp; > } > my_xid get_my_xid() > { > return gtrid_length == ((8 +sizeof(server_id))+sizeof(my_xid)) && bqual_length == 0 && > !memcmp(data, "MySQLXid", 8) ? > quick_get_my_xid() : 0; > } > uint length() > { > return static_cast<uint>(sizeof(formatID)) + key_length(); > } > uchar *key() const > { > return (uchar *)>rid_length; > } > uint key_length() const > { > return static_cast<uint>(sizeof(gtrid_length)+sizeof(bqual_length)+ > gtrid_length+bqual_length); > } >}; >typedef struct xid_t XID; ># 646 "/buildbot/mariadb-10.2.31/sql/handler.h" >enum ts_command_type >{ > TS_CMD_NOT_DEFINED = -1, > CREATE_TABLESPACE = 0, > ALTER_TABLESPACE = 1, > CREATE_LOGFILE_GROUP = 2, > ALTER_LOGFILE_GROUP = 3, > DROP_TABLESPACE = 4, > DROP_LOGFILE_GROUP = 5, > CHANGE_FILE_TABLESPACE = 6, > ALTER_ACCESS_MODE_TABLESPACE = 7 >}; > >enum ts_alter_tablespace_type >{ > TS_ALTER_TABLESPACE_TYPE_NOT_DEFINED = -1, > ALTER_TABLESPACE_ADD_FILE = 1, > ALTER_TABLESPACE_DROP_FILE = 2 >}; > >enum tablespace_access_mode >{ > TS_NOT_DEFINED= -1, > TS_READ_ONLY = 0, > TS_READ_WRITE = 1, > TS_NOT_ACCESSIBLE = 2 >}; > >struct handlerton; >class st_alter_tablespace : public Sql_alloc >{ > public: > const char *tablespace_name; > const char *logfile_group_name; > enum ts_command_type ts_cmd_type; > enum ts_alter_tablespace_type ts_alter_tablespace_type; > const char *data_file_name; > const char *undo_file_name; > const char *redo_file_name; > ulonglong extent_size; > ulonglong undo_buffer_size; > ulonglong redo_buffer_size; > ulonglong initial_size; > ulonglong autoextend_size; > ulonglong max_size; > uint nodegroup_id; > handlerton *storage_engine; > bool wait_until_completed; > const char *ts_comment; > enum tablespace_access_mode ts_access_mode; > st_alter_tablespace() > { > tablespace_name= __null; > logfile_group_name= "DEFAULT_LG"; > ts_cmd_type= TS_CMD_NOT_DEFINED; > data_file_name= __null; > undo_file_name= __null; > redo_file_name= __null; > extent_size= 1024*1024; > undo_buffer_size= 8*1024*1024; > redo_buffer_size= 8*1024*1024; > initial_size= 128*1024*1024; > autoextend_size= 0; > max_size= 0; > storage_engine= __null; > nodegroup_id= 65535; > wait_until_completed= (1); > ts_comment= __null; > ts_access_mode= TS_NOT_DEFINED; > } >}; > > > >struct TABLE; > > > > >enum enum_schema_tables >{ > SCH_ALL_PLUGINS, > SCH_APPLICABLE_ROLES, > SCH_CHARSETS, > SCH_CHECK_CONSTRAINTS, > SCH_COLLATIONS, > SCH_COLLATION_CHARACTER_SET_APPLICABILITY, > SCH_COLUMNS, > SCH_COLUMN_PRIVILEGES, > SCH_ENABLED_ROLES, > SCH_ENGINES, > SCH_EVENTS, > SCH_EXPLAIN, > SCH_FILES, > SCH_GLOBAL_STATUS, > SCH_GLOBAL_VARIABLES, > SCH_KEY_CACHES, > SCH_KEY_COLUMN_USAGE, > SCH_OPEN_TABLES, > SCH_PARAMETERS, > SCH_PARTITIONS, > SCH_PLUGINS, > SCH_PROCESSLIST, > SCH_PROFILES, > SCH_REFERENTIAL_CONSTRAINTS, > SCH_PROCEDURES, > SCH_SCHEMATA, > SCH_SCHEMA_PRIVILEGES, > SCH_SESSION_STATUS, > SCH_SESSION_VARIABLES, > SCH_STATISTICS, > SCH_SYSTEM_VARIABLES, > SCH_TABLES, > SCH_TABLESPACES, > SCH_TABLE_CONSTRAINTS, > SCH_TABLE_NAMES, > SCH_TABLE_PRIVILEGES, > SCH_TRIGGERS, > SCH_USER_PRIVILEGES, > SCH_VIEWS, > > SCH_GEOMETRY_COLUMNS, > SCH_SPATIAL_REF_SYS, > >}; > >struct TABLE_SHARE; >struct HA_CREATE_INFO; >struct st_foreign_key_info; >typedef struct st_foreign_key_info FOREIGN_KEY_INFO; >typedef bool (stat_print_fn)(THD *thd, const char *type, size_t type_len, > const char *file, size_t file_len, > const char *status, size_t status_len); >enum ha_stat_type { HA_ENGINE_STATUS, HA_ENGINE_LOGS, HA_ENGINE_MUTEX }; >extern st_plugin_int *hton2plugin[64]; > > >enum log_status >{ > HA_LOG_STATUS_FREE= 0, > HA_LOG_STATUS_INUSE= 1, > HA_LOG_STATUS_NOSUCHLOG= 2 > >}; ># 798 "/buildbot/mariadb-10.2.31/sql/handler.h" >void signal_log_not_needed(struct handlerton, char *log_file); > > > >struct handler_log_file_data { > LEX_STRING filename; > enum log_status status; >}; ># 846 "/buildbot/mariadb-10.2.31/sql/handler.h" >struct ha_table_option_struct; >struct ha_field_option_struct; >struct ha_index_option_struct; > >enum ha_option_type { HA_OPTION_TYPE_ULL, > HA_OPTION_TYPE_STRING, > HA_OPTION_TYPE_ENUM, > HA_OPTION_TYPE_BOOL, > HA_OPTION_TYPE_SYSVAR}; ># 910 "/buildbot/mariadb-10.2.31/sql/handler.h" >typedef struct st_ha_create_table_option { > enum ha_option_type type; > const char *name; > size_t name_length; > ptrdiff_t offset; > ulonglong def_value; > ulonglong min_value, max_value, block_size; > const char *values; > struct st_mysql_sys_var *var; >} ha_create_table_option; > >enum handler_iterator_type >{ > > HA_TRANSACTLOG_ITERATOR= 1 >}; >enum handler_create_iterator_result >{ > HA_ITERATOR_OK, > HA_ITERATOR_UNSUPPORTED, > HA_ITERATOR_ERROR >}; ># 940 "/buildbot/mariadb-10.2.31/sql/handler.h" >struct handler_iterator { > > > > > > > int (*next)(struct handler_iterator *, void *iterator_object); > > > > > void (*destroy)(struct handler_iterator *); > > > > > > void *buffer; >}; > >class handler; >class group_by_handler; >struct Query; >typedef class st_select_lex SELECT_LEX; >typedef struct st_order ORDER; ># 978 "/buildbot/mariadb-10.2.31/sql/handler.h" >struct handlerton >{ > > > > SHOW_COMP_OPTION state; > > > > > > > enum legacy_db_type db_type; ># 1000 "/buildbot/mariadb-10.2.31/sql/handler.h" > uint slot; ># 1010 "/buildbot/mariadb-10.2.31/sql/handler.h" > uint savepoint_offset; ># 1019 "/buildbot/mariadb-10.2.31/sql/handler.h" > int (*close_connection)(handlerton *hton, THD *thd); > > > > void (*kill_query)(handlerton *hton, THD *thd, enum thd_kill_levels level); > > > > > int (*savepoint_set)(handlerton *hton, THD *thd, void *sv); > > > > > int (*savepoint_rollback)(handlerton *hton, THD *thd, void *sv); > > > > > > > bool (*savepoint_rollback_can_release_mdl)(handlerton *hton, THD *thd); > int (*savepoint_release)(handlerton *hton, THD *thd, void *sv); > > > > > > > > int (*commit)(handlerton *hton, THD *thd, bool all); ># 1096 "/buildbot/mariadb-10.2.31/sql/handler.h" > void (*commit_ordered)(handlerton *hton, THD *thd, bool all); > int (*rollback)(handlerton *hton, THD *thd, bool all); > int (*prepare)(handlerton *hton, THD *thd, bool all); ># 1139 "/buildbot/mariadb-10.2.31/sql/handler.h" > void (*prepare_ordered)(handlerton *hton, THD *thd, bool all); > int (*recover)(handlerton *hton, XID *xid_list, uint len); > int (*commit_by_xid)(handlerton *hton, XID *xid); > int (*rollback_by_xid)(handlerton *hton, XID *xid); ># 1182 "/buildbot/mariadb-10.2.31/sql/handler.h" > void (*commit_checkpoint_request)(handlerton *hton, void *cookie); ># 1195 "/buildbot/mariadb-10.2.31/sql/handler.h" > int (*checkpoint_state)(handlerton *hton, bool disabled); > void *(*create_cursor_read_view)(handlerton *hton, THD *thd); > void (*set_cursor_read_view)(handlerton *hton, THD *thd, void *read_view); > void (*close_cursor_read_view)(handlerton *hton, THD *thd, void *read_view); > handler *(*create)(handlerton *hton, TABLE_SHARE *table, MEM_ROOT *mem_root); > void (*drop_database)(handlerton *hton, char* path); > int (*panic)(handlerton *hton, enum ha_panic_function flag); > int (*start_consistent_snapshot)(handlerton *hton, THD *thd); > bool (*flush_logs)(handlerton *hton); > bool (*show_status)(handlerton *hton, THD *thd, stat_print_fn *print, enum ha_stat_type stat); > uint (*partition_flags)(); > uint (*alter_table_flags)(uint flags); > int (*alter_tablespace)(handlerton *hton, THD *thd, st_alter_tablespace *ts_info); > int (*fill_is_table)(handlerton *hton, THD *thd, TABLE_LIST *tables, > class Item *cond, > enum enum_schema_tables); > uint32 flags; > > > > > int (*binlog_func)(handlerton *hton, THD *thd, enum_binlog_func fn, void *arg); > void (*binlog_log_query)(handlerton *hton, THD *thd, > enum_binlog_command binlog_command, > const char *query, uint query_length, > const char *db, const char *table_name); ># 1229 "/buildbot/mariadb-10.2.31/sql/handler.h" > enum log_status (*get_log_status)(handlerton *hton, char *log); > > > > > > enum handler_create_iterator_result > (*create_iterator)(handlerton *hton, enum handler_iterator_type type, > struct handler_iterator *fill_this_in); > int (*abort_transaction)(handlerton *hton, THD *bf_thd, > THD *victim_thd, my_bool signal); > int (*set_checkpoint)(handlerton *hton, const XID* xid); > int (*get_checkpoint)(handlerton *hton, XID* xid); > void (*fake_trx_id)(handlerton *hton, THD *thd); > > > > ha_create_table_option *table_options; > ha_create_table_option *field_options; > ha_create_table_option *index_options; ># 1266 "/buildbot/mariadb-10.2.31/sql/handler.h" > const char **tablefile_extensions; ># 1280 "/buildbot/mariadb-10.2.31/sql/handler.h" > group_by_handler *(*create_group_by)(THD *thd, Query *query); ># 1300 "/buildbot/mariadb-10.2.31/sql/handler.h" > int (*discover_table)(handlerton *hton, THD* thd, TABLE_SHARE *share); ># 1309 "/buildbot/mariadb-10.2.31/sql/handler.h" > class discovered_list > { > public: > virtual bool add_table(const char *tname, size_t tlen) = 0; > virtual bool add_file(const char *fname) = 0; > protected: virtual ~discovered_list() {} > }; ># 1326 "/buildbot/mariadb-10.2.31/sql/handler.h" > int (*discover_table_names)(handlerton *hton, LEX_STRING *db, MY_DIR *dir, > discovered_list *result); ># 1347 "/buildbot/mariadb-10.2.31/sql/handler.h" > int (*discover_table_existence)(handlerton *hton, const char *db, > const char *table_name); ># 1367 "/buildbot/mariadb-10.2.31/sql/handler.h" > int (*discover_table_structure)(handlerton *hton, THD* thd, > TABLE_SHARE *share, HA_CREATE_INFO *info); >}; > > >static inline LEX_STRING *hton_name(const handlerton *hton) >{ > return &(hton2plugin[hton->slot]->name); >} > >static inline handlerton *plugin_hton(plugin_ref plugin) >{ > return ((handlerton *)((plugin)->data)); >} > >static inline sys_var *find_hton_sysvar(handlerton *hton, st_mysql_sys_var *var) >{ > return find_plugin_sysvar(hton2plugin[hton->slot], var); >} > >handlerton *ha_default_handlerton(THD *thd); >handlerton *ha_default_tmp_handlerton(THD *thd); ># 1420 "/buildbot/mariadb-10.2.31/sql/handler.h" >class Ha_trx_info; > >struct THD_TRANS >{ > > bool no_2pc; > > Ha_trx_info *ha_list; ># 1456 "/buildbot/mariadb-10.2.31/sql/handler.h" > bool modified_non_trans_table; > > void reset() { > no_2pc= (0); > modified_non_trans_table= (0); > m_unsafe_rollback_flags= 0; > } > bool is_empty() const { return ha_list == __null; } > THD_TRANS() {} > > unsigned int m_unsafe_rollback_flags; > > > > > static unsigned int const MODIFIED_NON_TRANS_TABLE= 0x01; > static unsigned int const CREATED_TEMP_TABLE= 0x02; > static unsigned int const DROPPED_TEMP_TABLE= 0x04; > static unsigned int const DID_WAIT= 0x08; > static unsigned int const DID_DDL= 0x10; > > void mark_created_temp_table() > { > do { } while(0); > m_unsafe_rollback_flags|= CREATED_TEMP_TABLE; > } > void mark_dropped_temp_table() > { > do { } while(0); > m_unsafe_rollback_flags|= DROPPED_TEMP_TABLE; > } > bool has_created_dropped_temp_table() const { > return > (m_unsafe_rollback_flags & (CREATED_TEMP_TABLE|DROPPED_TEMP_TABLE)) != 0; > } > void mark_trans_did_wait() { m_unsafe_rollback_flags|= DID_WAIT; } > bool trans_did_wait() const { > return (m_unsafe_rollback_flags & DID_WAIT) != 0; > } > void mark_trans_did_ddl() { m_unsafe_rollback_flags|= DID_DDL; } > bool trans_did_ddl() const { > return (m_unsafe_rollback_flags & DID_DDL) != 0; > } > >}; ># 1520 "/buildbot/mariadb-10.2.31/sql/handler.h" >class Ha_trx_info >{ >public: > > void register_ha(THD_TRANS *trans, handlerton *ht_arg) > { > do { } while(0); > do { } while(0); > do { } while(0); > > m_ht= ht_arg; > m_flags= (int) TRX_READ_ONLY; > > m_next= trans->ha_list; > trans->ha_list= this; > } > > > void reset() > { > m_next= __null; > m_ht= __null; > m_flags= 0; > } > > Ha_trx_info() { reset(); } > > void set_trx_read_write() > { > do { } while(0); > m_flags|= (int) TRX_READ_WRITE; > } > bool is_trx_read_write() const > { > do { } while(0); > return m_flags & (int) TRX_READ_WRITE; > } > bool is_started() const { return m_ht != __null; } > > void coalesce_trx_with(const Ha_trx_info *stmt_trx) > { > > > > > > do { } while(0); > if (stmt_trx->is_trx_read_write()) > set_trx_read_write(); > } > Ha_trx_info *next() const > { > do { } while(0); > return m_next; > } > handlerton *ht() const > { > do { } while(0); > return m_ht; > } >private: > enum { TRX_READ_ONLY= 0, TRX_READ_WRITE= 1 }; > > Ha_trx_info *m_next; > > > > > > handlerton *m_ht; > > > > > > uchar m_flags; >}; > > >enum enum_tx_isolation { ISO_READ_UNCOMMITTED, ISO_READ_COMMITTED, > ISO_REPEATABLE_READ, ISO_SERIALIZABLE}; > > >typedef struct { > ulonglong data_file_length; > ulonglong max_data_file_length; > ulonglong index_file_length; > ulonglong delete_length; > ha_rows records; > ulong mean_rec_length; > time_t create_time; > time_t check_time; > time_t update_time; > ulonglong check_sum; >} PARTITION_STATS; > > >class Item; >struct st_table_log_memory_entry; > >class partition_info; > >struct st_partition_iter; > >enum ha_choice { HA_CHOICE_UNDEF, HA_CHOICE_NO, HA_CHOICE_YES, HA_CHOICE_MAX }; > >enum enum_stats_auto_recalc { HA_STATS_AUTO_RECALC_DEFAULT= 0, > HA_STATS_AUTO_RECALC_ON, > HA_STATS_AUTO_RECALC_OFF }; ># 1639 "/buildbot/mariadb-10.2.31/sql/handler.h" >struct Schema_specification_st >{ > CHARSET_INFO *default_table_charset; > void init() > { > memset((this),0,(sizeof(*this))); > } >}; ># 1663 "/buildbot/mariadb-10.2.31/sql/handler.h" >struct Table_scope_and_contents_source_st >{ > CHARSET_INFO *table_charset; > LEX_CUSTRING tabledef_version; > LEX_STRING connect_string; > const char *password, *tablespace; > LEX_STRING comment; > const char *data_file_name, *index_file_name; > const char *alias; > ulonglong max_rows,min_rows; > ulonglong auto_increment_value; > ulong table_options; > ulong avg_row_length; > ulong used_fields; > ulong key_block_size; > ulong expression_length; > ulong field_check_constraints; > > > > > uint stats_sample_pages; > uint null_bits; > uint options; > uint merge_insert_method; > uint extra_size; > handlerton *db_type; ># 1699 "/buildbot/mariadb-10.2.31/sql/handler.h" > enum row_type row_type; > enum ha_choice transactional; > enum ha_storage_media storage_media; > enum ha_choice page_checksum; > engine_option_value *option_list; > enum_stats_auto_recalc stats_auto_recalc; > bool varchar; > > List<Virtual_column_info> *check_constraint_list; > > > ha_table_option_struct *option_struct; > ha_field_option_struct **fields_option_struct; > ha_index_option_struct **indexes_option_struct; > > > TABLE *table; > TABLE_LIST *pos_in_locked_tables; > MDL_ticket *mdl_ticket; > bool table_was_deleted; > TABLE_LIST *merge_list; > > void init() > { > memset((this),0,(sizeof(*this))); > } > bool tmp_table() const { return options & 1U; } > void use_default_db_type(THD *thd) > { > db_type= tmp_table() ? ha_default_tmp_handlerton(thd) > : ha_default_handlerton(thd); > } >}; > > > > > > > >struct HA_CREATE_INFO: public Table_scope_and_contents_source_st, > public Schema_specification_st >{ > void init() > { > Table_scope_and_contents_source_st::init(); > Schema_specification_st::init(); > } > bool check_conflicting_charset_declarations(CHARSET_INFO *cs); > bool add_table_option_default_charset(CHARSET_INFO *cs) > { > > if (check_conflicting_charset_declarations(cs)) > return true; > default_table_charset= cs; > used_fields|= (1UL << 9); > return false; > } > bool add_alter_list_item_convert_to_charset(CHARSET_INFO *cs) > { ># 1767 "/buildbot/mariadb-10.2.31/sql/handler.h" > do { } while(0); > if (check_conflicting_charset_declarations(cs)) > return true; > table_charset= default_table_charset= cs; > used_fields|= ((1UL << 8) | (1UL << 9)); > return false; > } > ulong table_options_with_row_type() > { > if (row_type == ROW_TYPE_DYNAMIC || row_type == ROW_TYPE_PAGE) > return table_options | 1U; > else > return table_options; > } >}; > > > > > > >struct Table_specification_st: public HA_CREATE_INFO, > public DDL_options_st >{ > > void init() > { > HA_CREATE_INFO::init(); > DDL_options_st::init(); > } > void init(DDL_options_st::Options options_arg) > { > HA_CREATE_INFO::init(); > DDL_options_st::init(options_arg); > } > > > > > > > void lex_start() > { > HA_CREATE_INFO::options= 0; > DDL_options_st::init(); > } >}; ># 1831 "/buildbot/mariadb-10.2.31/sql/handler.h" >class inplace_alter_handler_ctx : public Sql_alloc >{ >public: > inplace_alter_handler_ctx() {} > > virtual ~inplace_alter_handler_ctx() {} > virtual void set_shared_data(const inplace_alter_handler_ctx& ctx) {} >}; ># 1849 "/buildbot/mariadb-10.2.31/sql/handler.h" >class Alter_inplace_info >{ >public: ># 1866 "/buildbot/mariadb-10.2.31/sql/handler.h" > typedef ulonglong HA_ALTER_FLAGS; > > > static const HA_ALTER_FLAGS ADD_INDEX = 1ULL << 0; > > > static const HA_ALTER_FLAGS DROP_INDEX = 1ULL << 1; > > > static const HA_ALTER_FLAGS ADD_UNIQUE_INDEX = 1ULL << 2; > > > static const HA_ALTER_FLAGS DROP_UNIQUE_INDEX = 1ULL << 3; > > > static const HA_ALTER_FLAGS ADD_PK_INDEX = 1ULL << 4; > > > static const HA_ALTER_FLAGS DROP_PK_INDEX = 1ULL << 5; > > > static const HA_ALTER_FLAGS ADD_VIRTUAL_COLUMN = 1ULL << 6; > > static const HA_ALTER_FLAGS ADD_STORED_BASE_COLUMN = 1ULL << 7; > > static const HA_ALTER_FLAGS ADD_STORED_GENERATED_COLUMN= 1ULL << 8; > > static const HA_ALTER_FLAGS ADD_COLUMN= ADD_VIRTUAL_COLUMN | > ADD_STORED_BASE_COLUMN | > ADD_STORED_GENERATED_COLUMN; > > > static const HA_ALTER_FLAGS DROP_VIRTUAL_COLUMN = 1ULL << 9; > static const HA_ALTER_FLAGS DROP_STORED_COLUMN = 1ULL << 10; > static const HA_ALTER_FLAGS DROP_COLUMN= DROP_VIRTUAL_COLUMN | > DROP_STORED_COLUMN; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_NAME = 1ULL << 11; > > > static const HA_ALTER_FLAGS ALTER_VIRTUAL_COLUMN_TYPE = 1ULL << 12; > static const HA_ALTER_FLAGS ALTER_STORED_COLUMN_TYPE = 1ULL << 13; > > > > > > > > static const HA_ALTER_FLAGS ALTER_COLUMN_EQUAL_PACK_LENGTH = 1ULL << 14; > > > static const HA_ALTER_FLAGS ALTER_STORED_COLUMN_ORDER = 1ULL << 15; > > > static const HA_ALTER_FLAGS ALTER_VIRTUAL_COLUMN_ORDER = 1ULL << 16; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_NULLABLE = 1ULL << 17; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_NOT_NULLABLE = 1ULL << 18; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_DEFAULT = 1ULL << 19; > > > static const HA_ALTER_FLAGS ALTER_VIRTUAL_GCOL_EXPR = 1ULL << 20; > static const HA_ALTER_FLAGS ALTER_STORED_GCOL_EXPR = 1ULL << 21; > > > static const HA_ALTER_FLAGS ADD_FOREIGN_KEY = 1ULL << 22; > > > static const HA_ALTER_FLAGS DROP_FOREIGN_KEY = 1ULL << 23; > > > static const HA_ALTER_FLAGS CHANGE_CREATE_OPTION = 1ULL << 24; > > > static const HA_ALTER_FLAGS ALTER_RENAME = 1ULL << 25; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_OPTION = 1ULL << 26; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_STORAGE_TYPE = 1ULL << 26; > > > static const HA_ALTER_FLAGS ALTER_COLUMN_COLUMN_FORMAT = 1ULL << 27; > > > static const HA_ALTER_FLAGS ADD_PARTITION = 1ULL << 28; > > > static const HA_ALTER_FLAGS DROP_PARTITION = 1ULL << 29; > > > static const HA_ALTER_FLAGS ALTER_PARTITION = 1ULL << 30; > > > static const HA_ALTER_FLAGS COALESCE_PARTITION = 1ULL << 31; > > > static const HA_ALTER_FLAGS REORGANIZE_PARTITION = 1ULL << 32; > > > static const HA_ALTER_FLAGS ALTER_TABLE_REORG = 1ULL << 33; > > > static const HA_ALTER_FLAGS ALTER_REMOVE_PARTITIONING = 1ULL << 34; > > > static const HA_ALTER_FLAGS ALTER_ALL_PARTITION = 1ULL << 35; > > > > > > static const HA_ALTER_FLAGS RECREATE_TABLE = 1ULL << 36; > > > > > > > static const HA_ALTER_FLAGS ALTER_COLUMN_VCOL = 1ULL << 37; > > > > > > static const HA_ALTER_FLAGS ALTER_PARTITIONED = 1ULL << 38; > > static const HA_ALTER_FLAGS ALTER_ADD_CHECK_CONSTRAINT = 1ULL << 39; > > static const HA_ALTER_FLAGS ALTER_DROP_CHECK_CONSTRAINT= 1ULL << 40; > > > > > static const HA_ALTER_FLAGS ALTER_COLUMN_INDEX_LENGTH= 1ULL << 41; ># 2019 "/buildbot/mariadb-10.2.31/sql/handler.h" > HA_CREATE_INFO *create_info; ># 2032 "/buildbot/mariadb-10.2.31/sql/handler.h" > Alter_info *alter_info; ># 2049 "/buildbot/mariadb-10.2.31/sql/handler.h" > KEY *key_info_buffer; > > > uint key_count; > > > uint index_drop_count; > > > > > > KEY **index_drop_buffer; > > > uint index_add_count; > > > > > > uint *index_add_buffer; > > > > > > > > inplace_alter_handler_ctx *handler_ctx; ># 2090 "/buildbot/mariadb-10.2.31/sql/handler.h" > inplace_alter_handler_ctx **group_commit_ctx; > > > > > HA_ALTER_FLAGS handler_flags; > > > > > > > > partition_info *modified_part_info; > > > const bool ignore; > > > bool online; ># 2124 "/buildbot/mariadb-10.2.31/sql/handler.h" > const char *unsupported_reason; > > Alter_inplace_info(HA_CREATE_INFO *create_info_arg, > Alter_info *alter_info_arg, > KEY *key_info_arg, uint key_count_arg, > partition_info *modified_part_info_arg, > bool ignore_arg) > : create_info(create_info_arg), > alter_info(alter_info_arg), > key_info_buffer(key_info_arg), > key_count(key_count_arg), > index_drop_count(0), > index_drop_buffer(__null), > index_add_count(0), > index_add_buffer(__null), > handler_ctx(__null), > group_commit_ctx(__null), > handler_flags(0), > modified_part_info(modified_part_info_arg), > ignore(ignore_arg), > online(false), > unsupported_reason(__null) > {} > > ~Alter_inplace_info() > { > delete handler_ctx; > } ># 2162 "/buildbot/mariadb-10.2.31/sql/handler.h" > void report_unsupported_error(const char *not_supported, > const char *try_instead); >}; > > >typedef struct st_key_create_information >{ > enum ha_key_alg algorithm; > ulong block_size; > LEX_STRING parser_name; > LEX_STRING comment; > > > > > > bool check_for_duplicate_indexes; >} KEY_CREATE_INFO; ># 2196 "/buildbot/mariadb-10.2.31/sql/handler.h" >class TABLEOP_HOOKS >{ >public: > TABLEOP_HOOKS() {} > virtual ~TABLEOP_HOOKS() {} > > inline void prelock(TABLE **tables, uint count) > { > do_prelock(tables, count); > } > > inline int postlock(TABLE **tables, uint count) > { > return do_postlock(tables, count); > } >private: > > virtual void do_prelock(TABLE **tables, uint count) > { > > } ># 2226 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int do_postlock(TABLE **tables, uint count) > { > return 0; > } >}; > >typedef struct st_savepoint SAVEPOINT; >extern ulong savepoint_alloc_size; >extern KEY_CREATE_INFO default_key_create_info; > > >typedef class Item COND; > >typedef struct st_ha_check_opt >{ > st_ha_check_opt() {} > uint flags; > uint sql_flags; > time_t start_time; > KEY_CACHE *key_cache; > void init(); >} HA_CHECK_OPT; > > > > > > >typedef void *range_seq_t; > >typedef struct st_range_seq_if >{ ># 2273 "/buildbot/mariadb-10.2.31/sql/handler.h" > void (*get_key_info)(void *init_params, uint *length, key_part_map *map); ># 2287 "/buildbot/mariadb-10.2.31/sql/handler.h" > range_seq_t (*init)(void *init_params, uint n_ranges, uint flags); ># 2302 "/buildbot/mariadb-10.2.31/sql/handler.h" > bool (*next) (range_seq_t seq, KEY_MULTI_RANGE *range); ># 2319 "/buildbot/mariadb-10.2.31/sql/handler.h" > bool (*skip_record) (range_seq_t seq, range_id_t range_info, uchar *rowid); ># 2332 "/buildbot/mariadb-10.2.31/sql/handler.h" > bool (*skip_index_tuple) (range_seq_t seq, range_id_t range_info); >} RANGE_SEQ_IF; > >typedef bool (*SKIP_INDEX_TUPLE_FUNC) (range_seq_t seq, range_id_t range_info); > >class Cost_estimate >{ >public: > double io_count; > double avg_io_cost; > double cpu_cost; > double import_cost; > double mem_cost; > > enum { IO_COEFF=1 }; > enum { CPU_COEFF=1 }; > enum { MEM_COEFF=1 }; > enum { IMPORT_COEFF=1 }; > > Cost_estimate() > { > reset(); > } > > double total_cost() > { > return IO_COEFF*io_count*avg_io_cost + CPU_COEFF * cpu_cost + > MEM_COEFF*mem_cost + IMPORT_COEFF*import_cost; > } > > > > > > > bool is_zero() const > { > return io_count == 0.0 && cpu_cost == 0.0 && > import_cost == 0.0 && mem_cost == 0.0; > } > > void reset() > { > avg_io_cost= 1.0; > io_count= cpu_cost= mem_cost= import_cost= 0.0; > } > > void multiply(double m) > { > io_count *= m; > cpu_cost *= m; > import_cost *= m; > > } > > void add(const Cost_estimate* cost) > { > double io_count_sum= io_count + cost->io_count; > add_io(cost->io_count, cost->avg_io_cost); > io_count= io_count_sum; > cpu_cost += cost->cpu_cost; > } > > void add_io(double add_io_cnt, double add_avg_cost) > { > > if (add_io_cnt > 0) > { > double io_count_sum= io_count + add_io_cnt; > avg_io_cost= (io_count * avg_io_cost + > add_io_cnt * add_avg_cost) / io_count_sum; > io_count= io_count_sum; > } > } > > > void add_cpu(double add_cpu_cost) { cpu_cost+= add_cpu_cost; } > > > void add_import(double add_import_cost) { import_cost+= add_import_cost; } > > > void add_mem(double add_mem_cost) { mem_cost+= add_mem_cost; } > > > > > > void convert_from_cost(double cost) > { > reset(); > io_count= cost; > } >}; > >void get_sweep_read_cost(TABLE *table, ha_rows nrows, bool interrupted, > Cost_estimate *cost); ># 2519 "/buildbot/mariadb-10.2.31/sql/handler.h" >typedef struct st_handler_buffer >{ > uchar *buffer; > uchar *buffer_end; > uchar *end_of_used_area; >} HANDLER_BUFFER; > >typedef struct system_status_var SSV; > >class ha_statistics >{ >public: > ulonglong data_file_length; > ulonglong max_data_file_length; > ulonglong index_file_length; > ulonglong max_index_file_length; > ulonglong delete_length; > ulonglong auto_increment_value; ># 2545 "/buildbot/mariadb-10.2.31/sql/handler.h" > ha_rows records; > ha_rows deleted; > ulong mean_rec_length; > time_t create_time; > time_t check_time; > time_t update_time; > uint block_size; > > > > > uint mrr_length_per_rec; > > ha_statistics(): > data_file_length(0), max_data_file_length(0), > index_file_length(0), delete_length(0), auto_increment_value(0), > records(0), deleted(0), mean_rec_length(0), create_time(0), > check_time(0), update_time(0), block_size(0), mrr_length_per_rec(0) > {} >}; > >extern "C" enum icp_result handler_index_cond_check(void* h_arg); > >uint calculate_key_len(TABLE *, uint, const uchar *, key_part_map); ># 2582 "/buildbot/mariadb-10.2.31/sql/handler.h" >class Handler_share >{ >public: > Handler_share() {} > virtual ~Handler_share() {} >}; ># 2638 "/buildbot/mariadb-10.2.31/sql/handler.h" >class handler :public Sql_alloc >{ >public: > typedef ulonglong Table_flags; >protected: > TABLE_SHARE *table_share; > TABLE *table; > Table_flags cached_table_flags; > > ha_rows estimation_rows_to_insert; >public: > handlerton *ht; > uchar *ref; > uchar *dup_ref; > > ha_statistics stats; > > > range_seq_t mrr_iter; > RANGE_SEQ_IF mrr_funcs; > HANDLER_BUFFER *multi_range_buffer; > uint ranges_in_seq; > > KEY_MULTI_RANGE mrr_cur_range; > > > key_range save_end_range, *end_range; > KEY_PART_INFO *range_key_part; > int key_compare_result_on_equal; > > > bool mrr_is_output_sorted; > > bool mrr_have_range; > bool eq_range; > bool internal_tmp_table; > bool implicit_emptied; > bool mark_trx_read_write_done; > bool check_table_binlog_row_based_done; > bool check_table_binlog_row_based_result; > > > > > bool in_range_check_pushed_down; > > uint errkey; > uint key_used_on_scan; > uint active_index, keyread; > > > uint ref_length; > FT_INFO *ft_handler; > enum {NONE=0, INDEX, RND} inited; > > const COND *pushed_cond; ># 2703 "/buildbot/mariadb-10.2.31/sql/handler.h" > ulonglong next_insert_id; > > > > > > > ulonglong insert_id_for_cur_row; > > > > > > ulonglong rows_read; > ulonglong rows_tmp_read; > ulonglong rows_changed; > > ulonglong index_rows_read[64 +1]; > >private: > > Exec_time_tracker *tracker; >public: > void set_time_tracker(Exec_time_tracker *tracker_arg) { tracker=tracker_arg;} > > Item *pushed_idx_cond; > uint pushed_idx_cond_keyno; > > Discrete_interval auto_inc_interval_for_cur_row; > > > > > > > uint auto_inc_intervals_count; ># 2752 "/buildbot/mariadb-10.2.31/sql/handler.h" > PSI_table *m_psi; > > virtual void unbind_psi(); > virtual void rebind_psi(); > >private: > > > > > > > int m_lock_type; > > > > > Handler_share **ha_share; > >public: > handler(handlerton *ht_arg, TABLE_SHARE *share_arg) > :table_share(share_arg), table(0), > estimation_rows_to_insert(0), ht(ht_arg), > ref(0), end_range(__null), > implicit_emptied(0), > mark_trx_read_write_done(0), > check_table_binlog_row_based_done(0), > check_table_binlog_row_based_result(0), > in_range_check_pushed_down((0)), > key_used_on_scan(64), > active_index(64), keyread(64), > ref_length(sizeof(my_off_t)), > ft_handler(0), inited(NONE), > pushed_cond(0), next_insert_id(0), insert_id_for_cur_row(0), > tracker(__null), > pushed_idx_cond(__null), > pushed_idx_cond_keyno(64), > auto_inc_intervals_count(0), > m_psi(__null), m_lock_type(2), ha_share(__null) > { > do { } while(0) > > ; > reset_statistics(); > } > virtual ~handler(void) > { > do { } while(0); > do { } while(0); > } > virtual handler *clone(const char *name, MEM_ROOT *mem_root); > > void init() > { > cached_table_flags= table_flags(); > } > > > int ha_open(TABLE *table, const char *name, int mode, uint test_if_locked); > int ha_index_init(uint idx, bool sorted) > { > do { } while(0); > int result; > ; > do { } while(0); > if (!(result= index_init(idx, sorted))) > { > inited= INDEX; > active_index= idx; > end_range= __null; > } > do { return(result); } while(0); > } > int ha_index_end() > { > ; > do { } while(0); > inited= NONE; > active_index= 64; > end_range= __null; > do { return(index_end()); } while(0); > } > > virtual int prepare_index_scan() { return 0; } > virtual int prepare_index_key_scan_map(const uchar * key, key_part_map keypart_map) > { > uint key_len= calculate_key_len(table, active_index, key, keypart_map); > return prepare_index_key_scan(key, key_len); > } > virtual int prepare_index_key_scan( const uchar * key, uint key_len ) > { return 0; } > virtual int prepare_range_scan(const key_range *start_key, const key_range *end_key) > { return 0; } > > int ha_rnd_init(bool scan) __attribute__ ((warn_unused_result)) > { > do { } while(0); > int result; > ; > do { } while(0); > inited= (result= rnd_init(scan)) ? NONE: RND; > end_range= __null; > do { return(result); } while(0); > } > int ha_rnd_end() > { > ; > do { } while(0); > inited=NONE; > end_range= __null; > do { return(rnd_end()); } while(0); > } > int ha_rnd_init_with_error(bool scan) __attribute__ ((warn_unused_result)); > int ha_reset(); > > int ha_index_or_rnd_end() > { > return inited == INDEX ? ha_index_end() : inited == RND ? ha_rnd_end() : 0; > } > > > > Table_flags ha_table_flags() const { return cached_table_flags; } > > > > > > > int ha_external_lock(THD *thd, int lock_type); > int ha_write_row(uchar * buf); > int ha_update_row(const uchar * old_data, uchar * new_data); > int ha_delete_row(const uchar * buf); > void ha_release_auto_increment(); > > bool keyread_enabled() { return keyread < 64; } > int ha_start_keyread(uint idx) > { > int res= keyread_enabled() ? 0 : extra_opt(HA_EXTRA_KEYREAD, idx); > keyread= idx; > return res; > } > int ha_end_keyread() > { > if (!keyread_enabled()) > return 0; > keyread= 64; > return extra(HA_EXTRA_NO_KEYREAD); > } > > int check_collation_compatibility(); > int ha_check_for_upgrade(HA_CHECK_OPT *check_opt); > > int ha_check(THD *thd, HA_CHECK_OPT *check_opt); > int ha_repair(THD* thd, HA_CHECK_OPT* check_opt); > void ha_start_bulk_insert(ha_rows rows, uint flags= 0) > { > ; > estimation_rows_to_insert= rows; > start_bulk_insert(rows, flags); > do { return; } while(0); > } > int ha_end_bulk_insert() > { > ; > estimation_rows_to_insert= 0; > int ret= end_bulk_insert(); > do { return(ret); } while(0); > } > int ha_bulk_update_row(const uchar *old_data, uchar *new_data, > uint *dup_key_found); > int ha_delete_all_rows(); > int ha_truncate(); > int ha_reset_auto_increment(ulonglong value); > int ha_optimize(THD* thd, HA_CHECK_OPT* check_opt); > int ha_analyze(THD* thd, HA_CHECK_OPT* check_opt); > bool ha_check_and_repair(THD *thd); > int ha_disable_indexes(uint mode); > int ha_enable_indexes(uint mode); > int ha_discard_or_import_tablespace(my_bool discard); > int ha_rename_table(const char *from, const char *to); > int ha_delete_table(const char *name); > void ha_drop_table(const char *name); > > int ha_create(const char *name, TABLE *form, HA_CREATE_INFO *info); > > int ha_create_partitioning_metadata(const char *name, const char *old_name, > int action_flag); > > int ha_change_partitions(HA_CREATE_INFO *create_info, > const char *path, > ulonglong * const copied, > ulonglong * const deleted, > const uchar *pack_frm_data, > size_t pack_frm_len); > int ha_drop_partitions(const char *path); > int ha_rename_partitions(const char *path); > > void adjust_next_insert_id_after_explicit_value(ulonglong nr); > int update_auto_increment(); > virtual void print_error(int error, myf errflag); > virtual bool get_error_message(int error, String *buf); > uint get_dup_key(int error); ># 2973 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool get_foreign_dup_key(char *child_table_name, > uint child_table_name_len, > char *child_key_name, > uint child_key_name_len) > { do { } while(0); return(false); } > void reset_statistics() > { > rows_read= rows_changed= rows_tmp_read= 0; > memset((index_rows_read),0,(sizeof(index_rows_read))); > } > virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share) > { > table= table_arg; > table_share= share; > reset_statistics(); > } > virtual double scan_time() > { return ((double) (ulonglong) (stats.data_file_length)) / 4096U + 2; } ># 3003 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual double read_time(uint index, uint ranges, ha_rows rows) > { return ((double) (ulonglong) (ranges+rows)); } ># 3013 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual double keyread_time(uint index, uint ranges, ha_rows rows); > > virtual const key_map *keys_to_use_for_scanning() { return &key_map_empty; } > bool has_transactions() > { return (ha_table_flags() & (1ULL << 0)) == 0; } ># 3029 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool is_fatal_error(int error, uint flags) > { > if (!error || > ((flags & 1U) && > (error == 121 || > error == 141)) || > error == 167 || > ((flags & 4U) && > (error == 152 || > error == 151))) > return (0); > return (1); > } > > > > > > virtual ha_rows records() { return stats.records; } > > > > > > > virtual ha_rows estimate_rows_upper_bound() > { return stats.records+10; } > > > > > > virtual enum row_type get_row_type() const { return ROW_TYPE_NOT_USED; } > > virtual const char *index_type(uint key_number) { do { } while(0); return "";} ># 3073 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual void column_bitmaps_signal(); > > > > > uint get_index(void) const > { return inited == INDEX ? active_index : 64; } > int ha_close(void); > > > > > > virtual bool start_bulk_update() { return 1; } > > > > > virtual bool start_bulk_delete() { return 1; } ># 3103 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int exec_bulk_update(uint *dup_key_found) > { > do { } while(0); > return 131; > } > > > > > virtual void end_bulk_update() { return; } > > > > > > > virtual int end_bulk_delete() > { > do { } while(0); > return 131; > } > > > > > > >protected: > virtual int index_read_map(uchar * buf, const uchar * key, > key_part_map keypart_map, > enum ha_rkey_function find_flag) > { > uint key_len= calculate_key_len(table, active_index, key, keypart_map); > return index_read(buf, key, key_len, find_flag); > } > > > > > > > virtual int index_read_idx_map(uchar * buf, uint index, const uchar * key, > key_part_map keypart_map, > enum ha_rkey_function find_flag); > virtual int index_next(uchar * buf) > { return 131; } > virtual int index_prev(uchar * buf) > { return 131; } > virtual int index_first(uchar * buf) > { return 131; } > virtual int index_last(uchar * buf) > { return 131; } > virtual int index_next_same(uchar *buf, const uchar *key, uint keylen); > virtual int close(void)=0; > inline void update_rows_read() > { > if (__builtin_expect(((!internal_tmp_table) != 0),1)) > rows_read++; > else > rows_tmp_read++; > } > inline void update_index_statistics() > { > index_rows_read[active_index]++; > update_rows_read(); > } >public: > > int ha_index_read_map(uchar * buf, const uchar * key, > key_part_map keypart_map, > enum ha_rkey_function find_flag); > int ha_index_read_idx_map(uchar * buf, uint index, const uchar * key, > key_part_map keypart_map, > enum ha_rkey_function find_flag); > int ha_index_next(uchar * buf); > int ha_index_prev(uchar * buf); > int ha_index_first(uchar * buf); > int ha_index_last(uchar * buf); > int ha_index_next_same(uchar *buf, const uchar *key, uint keylen); > > > > > virtual ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, > void *seq_init_param, > uint n_ranges, uint *bufsz, > uint *mrr_mode, > Cost_estimate *cost); > virtual ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys, > uint key_parts, uint *bufsz, > uint *mrr_mode, Cost_estimate *cost); > virtual int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, > uint n_ranges, uint mrr_mode, > HANDLER_BUFFER *buf); > virtual int multi_range_read_next(range_id_t *range_info); ># 3220 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int multi_range_read_explain_info(uint mrr_mode, char *str, > size_t size) > { return 0; } > > virtual int read_range_first(const key_range *start_key, > const key_range *end_key, > bool eq_range, bool sorted); > virtual int read_range_next(); > void set_end_range(const key_range *end_key); > int compare_key(key_range *range); > int compare_key2(key_range *range) const; > virtual int ft_init() { return 131; } > void ft_end() { ft_handler=__null; } > virtual FT_INFO *ft_init_ext(uint flags, uint inx,String *key) > { return __null; } >private: > virtual int ft_read(uchar *buf) { return 131; } > virtual int rnd_next(uchar *buf)=0; > virtual int rnd_pos(uchar * buf, uchar *pos)=0; > > > > > > virtual int rnd_pos_by_record(uchar *record) > { > int error; > do { } while(0); > > error = ha_rnd_init(false); > if (error != 0) > return error; > > position(record); > error = ha_rnd_pos(record, ref); > ha_rnd_end(); > return error; > } > virtual int read_first_row(uchar *buf, uint primary_key); >public: > > > inline int ha_ft_read(uchar *buf); > int ha_rnd_next(uchar *buf); > int ha_rnd_pos(uchar *buf, uchar *pos); > inline int ha_rnd_pos_by_record(uchar *buf); > inline int ha_read_first_row(uchar *buf, uint primary_key); > > > > > > virtual int remember_rnd_pos() > { return 131; } > virtual int restart_rnd_next(uchar *buf) > { return 131; } > virtual int rnd_same(uchar *buf, uint inx) > { return 131; } > > virtual ha_rows records_in_range(uint inx, key_range *min_key, > key_range *max_key) > { return (ha_rows) 10; } > > > > > > > virtual void position(const uchar *record)=0; > virtual int info(uint)=0; > virtual void get_dynamic_partition_info(PARTITION_STATS *stat_info, > uint part_id); > virtual int extra(enum ha_extra_function operation) > { return 0; } > virtual int extra_opt(enum ha_extra_function operation, ulong arg) > { return extra(operation); } ># 3309 "/buildbot/mariadb-10.2.31/sql/handler.h" > bool ha_was_semi_consistent_read(); > virtual bool was_semi_consistent_read() { return 0; } > > > > > > > virtual void try_semi_consistent_read(bool) {} > virtual void unlock_row() {} > virtual int start_stmt(THD *thd, thr_lock_type lock_type) {return 0;} > virtual void get_auto_increment(ulonglong offset, ulonglong increment, > ulonglong nb_desired_values, > ulonglong *first_value, > ulonglong *nb_reserved_values); > void set_next_insert_id(ulonglong id) > { > do { } while(0); > next_insert_id= id; > } > void restore_auto_increment(ulonglong prev_insert_id) > { ># 3341 "/buildbot/mariadb-10.2.31/sql/handler.h" > next_insert_id= (prev_insert_id > 0) ? prev_insert_id : > insert_id_for_cur_row; > } > > virtual void update_create_info(HA_CREATE_INFO *create_info) {} > int check_old_types(); > virtual int assign_to_keycache(THD* thd, HA_CHECK_OPT* check_opt) > { return -1; } > virtual int preload_keys(THD* thd, HA_CHECK_OPT* check_opt) > { return -1; } > > > virtual int indexes_are_disabled(void) {return 0;} > virtual char *update_table_comment(const char * comment) > { return (char*) comment;} > virtual void append_create_info(String *packet) {} ># 3367 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool is_fk_defined_on_table_or_index(uint index) > { return (0); } > virtual char* get_foreign_key_create_info() > { return(__null);} ># 3379 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool can_switch_engines() { return true; } > virtual int can_continue_handler_scan() { return 0; } ># 3392 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int > get_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list) > { return 0; } ># 3406 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int > get_parent_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list) > { return 0; } > virtual uint referenced_by_foreign_key() { return 0;} > virtual void init_table_handle_for_HANDLER() > { return; } > virtual void free_foreign_key_create_info(char* str) {} > > const char *table_type() const { return hton_name(ht)->str; } > const char **bas_ext() const { return ht->tablefile_extensions; } > > virtual int get_default_no_partitions(HA_CREATE_INFO *create_info) > { return 1;} > virtual void set_auto_partitions(partition_info *part_info) { return; } > virtual bool get_no_parts(const char *name, > uint *no_parts) > { > *no_parts= 0; > return 0; > } > virtual void set_part_info(partition_info *part_info) {return;} > > virtual ulong index_flags(uint idx, uint part, bool all_parts) const =0; > > uint max_record_length() const > { return ((65535) < (max_supported_record_length()) ? (65535) : (max_supported_record_length())); } > uint max_keys() const > { return ((64) < (max_supported_keys()) ? (64) : (max_supported_keys())); } > uint max_key_parts() const > { return ((32) < (max_supported_key_parts()) ? (32) : (max_supported_key_parts())); } > uint max_key_length() const > { return ((3072) < (max_supported_key_length()) ? (3072) : (max_supported_key_length())); } > uint max_key_part_length() const > { return ((3072) < (max_supported_key_part_length()) ? (3072) : (max_supported_key_part_length())); } > > virtual uint max_supported_record_length() const { return 65535; } > virtual uint max_supported_keys() const { return 0; } > virtual uint max_supported_key_parts() const { return 32; } > virtual uint max_supported_key_length() const { return 3072; } > virtual uint max_supported_key_part_length() const { return 255; } > virtual uint min_record_length(uint options) const { return 1; } > > virtual uint checksum() const { return 0; } > virtual bool is_crashed() const { return 0; } > virtual bool auto_repair(int error) const { return 0; } > > void update_global_table_stats(); > void update_global_index_stats(); ># 3463 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual uint lock_count(void) const { return 1; } ># 3477 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual THR_LOCK_DATA **store_lock(THD *thd, > THR_LOCK_DATA **to, > enum thr_lock_type lock_type)=0; > > > virtual uint8 table_cache_type() { return 0; } ># 3515 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual my_bool register_query_cache_table(THD *thd, char *table_key, > uint key_length, > qc_engine_callback > *engine_callback, > ulonglong *engine_data) > { > *engine_callback= 0; > return (1); > } ># 3534 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual uint count_query_cache_dependant_tables(uint8 *tables_type > __attribute__((unused))) > { > return 0; > } ># 3554 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual my_bool > register_query_cache_dependant_tables(THD *thd > __attribute__((unused)), > Query_cache *cache > __attribute__((unused)), > Query_cache_block_table **block > __attribute__((unused)), > uint *n __attribute__((unused))) > { > return (0); > } ># 3590 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool primary_key_is_clustered() { return (0); } > virtual int cmp_ref(const uchar *ref1, const uchar *ref2) > { > return memcmp(ref1, ref2, ref_length); > } ># 3622 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual const COND *cond_push(const COND *cond) { return cond; }; > > > > > > virtual void cond_pop() { return; }; ># 3654 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual Item *idx_cond_push(uint keyno, Item* idx_cond) { return idx_cond; } > > > virtual void cancel_pushed_idx_cond() > { > pushed_idx_cond= __null; > pushed_idx_cond_keyno= 64; > in_range_check_pushed_down= false; > } > > > > virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info, > uint table_changes) > { return 1; } ># 3776 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual enum_alter_inplace_result > check_if_supported_inplace_alter(TABLE *altered_table, > Alter_inplace_info *ha_alter_info); > > > > > > > bool ha_prepare_inplace_alter_table(TABLE *altered_table, > Alter_inplace_info *ha_alter_info); > > > > > > > bool ha_inplace_alter_table(TABLE *altered_table, > Alter_inplace_info *ha_alter_info) > { > return inplace_alter_table(altered_table, ha_alter_info); > } > > > > > > > > bool ha_commit_inplace_alter_table(TABLE *altered_table, > Alter_inplace_info *ha_alter_info, > bool commit); > > > > > > > void ha_notify_table_changed() > { > notify_table_changed(); > } > > >protected: ># 3849 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool prepare_inplace_alter_table(TABLE *altered_table, > Alter_inplace_info *ha_alter_info) > { return false; } ># 3873 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool inplace_alter_table(TABLE *altered_table, > Alter_inplace_info *ha_alter_info) > { return false; } ># 3910 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual bool commit_inplace_alter_table(TABLE *altered_table, > Alter_inplace_info *ha_alter_info, > bool commit) >{ > > ha_alter_info->group_commit_ctx= __null; > return false; >} > > > > > > > > virtual void notify_table_changed() { } > >public: ># 3936 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual void use_hidden_primary_key(); > virtual uint alter_table_flags(uint flags) > { > if (ht->alter_table_flags) > return ht->alter_table_flags(flags); > return 0; > } > > LEX_STRING *engine_name() { return hton_name(ht); } > > TABLE* get_table() { return table; } > TABLE_SHARE* get_table_share() { return table_share; } >protected: > > void **ha_data(THD *) const; > THD *ha_thd(void) const; > > > > > > PSI_table_share *ha_table_share_psi() const; ># 3966 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int rename_table(const char *from, const char *to); > > > > > virtual int delete_table(const char *name); > >public: > inline bool check_table_binlog_row_based(bool binlog_row); > inline void clear_cached_table_binlog_row_based_flag() > { > check_table_binlog_row_based_done= 0; > check_table_binlog_row_based_result= 0; > } >private: > > inline void mark_trx_read_write() > { > if (__builtin_expect(((!mark_trx_read_write_done) != 0),0)) > { > mark_trx_read_write_done= 1; > mark_trx_read_write_internal(); > } > } > void mark_trx_read_write_internal(); > bool check_table_binlog_row_based_internal(bool binlog_row); > >protected: > > > > > > inline void increment_statistics(ulong SSV::*offset) const; > inline void decrement_statistics(ulong SSV::*offset) const; > >private: > > > > > > > virtual int open(const char *name, int mode, uint test_if_locked)=0; > > virtual int index_init(uint idx, bool sorted) { return 0; } > virtual int index_end() { return 0; } > > > > > > > > virtual int rnd_init(bool scan)= 0; > virtual int rnd_end() { return 0; } > virtual int write_row(uchar *buf __attribute__((unused))) > { > return 131; > } ># 4035 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int update_row(const uchar *old_data __attribute__((unused)), > uchar *new_data __attribute__((unused))) > { > return 131; > } > > virtual int delete_row(const uchar *buf __attribute__((unused))) > { > return 131; > } > > > > > > virtual int reset() { return 0; } > virtual Table_flags table_flags(void) const= 0; ># 4074 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int external_lock(THD *thd __attribute__((unused)), > int lock_type __attribute__((unused))) > { > return 0; > } > virtual void release_auto_increment() { return; }; > > virtual int check_for_upgrade(HA_CHECK_OPT *check_opt) > { return 0; } > virtual int check(THD* thd, HA_CHECK_OPT* check_opt) > { return -1; } > > > > > > > virtual int repair(THD* thd, HA_CHECK_OPT* check_opt) > { > do { } while(0); > return -1; > } > virtual void start_bulk_insert(ha_rows rows, uint flags) {} > virtual int end_bulk_insert() { return 0; } >protected: > virtual int index_read(uchar * buf, const uchar * key, uint key_len, > enum ha_rkey_function find_flag) > { return 131; } > friend class ha_partition; >public: ># 4117 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int bulk_update_row(const uchar *old_data, uchar *new_data, > uint *dup_key_found) > { > do { } while(0); > return 131; > } > > > > > > > virtual int delete_all_rows() > { return ((_my_thread_var())->thr_errno=131); } ># 4149 "/buildbot/mariadb-10.2.31/sql/handler.h" > virtual int truncate() > { > int error= delete_all_rows(); > return error ? error : reset_auto_increment(0); > } > > > > > virtual int reset_auto_increment(ulonglong value) > { return 0; } > virtual int optimize(THD* thd, HA_CHECK_OPT* check_opt) > { return -1; } > virtual int analyze(THD* thd, HA_CHECK_OPT* check_opt) > { return -1; } > virtual bool check_and_repair(THD *thd) { return (1); } > virtual int disable_indexes(uint mode) { return 131; } > virtual int enable_indexes(uint mode) { return 131; } > virtual int discard_or_import_tablespace(my_bool discard) > { return ((_my_thread_var())->thr_errno=131); } > virtual void prepare_for_alter() { return; } > virtual void drop_table(const char *name); > virtual int create(const char *name, TABLE *form, HA_CREATE_INFO *info)=0; > > virtual int create_partitioning_metadata(const char *name, const char *old_name, > int action_flag) > { return (0); } > > virtual int change_partitions(HA_CREATE_INFO *create_info, > const char *path, > ulonglong * const copied, > ulonglong * const deleted, > const uchar *pack_frm_data, > size_t pack_frm_len) > { return 131; } > virtual int drop_partitions(const char *path) > { return 131; } > virtual int rename_partitions(const char *path) > { return 131; } > virtual bool set_ha_share_ref(Handler_share **arg_ha_share) > { > do { } while(0); > do { } while(0); > if (ha_share || !arg_ha_share) > return true; > ha_share= arg_ha_share; > return false; > } > int get_lock_type() const { return m_lock_type; } >public: > > virtual handlerton *partition_ht() const > { return ht; } > inline int ha_write_tmp_row(uchar *buf); > inline int ha_update_tmp_row(const uchar * old_data, uchar * new_data); > > virtual void set_lock_type(enum thr_lock_type lock); > > friend enum icp_result handler_index_cond_check(void* h_arg); >protected: > Handler_share *get_ha_share_ptr(); > void set_ha_share_ptr(Handler_share *arg_ha_share); > void lock_shared_ha_data(); > void unlock_shared_ha_data(); >}; > ># 1 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" 1 ># 65 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" ># 1 "/buildbot/mariadb-10.2.31/sql/sql_lifo_buffer.h" 1 ># 22 "/buildbot/mariadb-10.2.31/sql/sql_lifo_buffer.h" >class Forward_lifo_buffer; >class Backward_lifo_buffer; ># 44 "/buildbot/mariadb-10.2.31/sql/sql_lifo_buffer.h" >class Lifo_buffer >{ >protected: > size_t size1; > size_t size2; > >public: > > > > > > uchar *write_ptr1; > uchar *write_ptr2; > > > > > > > uchar *read_ptr1; > uchar *read_ptr2; > >protected: > uchar *start; > uchar *end; >public: > > enum enum_direction { > BACKWARD=-1, > FORWARD=1 > }; > > virtual enum_direction type() = 0; > > > > > void set_buffer_space(uchar *start_arg, uchar *end_arg) > { > start= start_arg; > end= end_arg; > if (end != start) > do { do { ((void) ((start)), (void) ((end - start))); } while (0); ((void) (start), (void) (end - start)); } while(0); > reset(); > } > > > > > > void setup_writing(size_t len1, size_t len2) > { > size1= len1; > size2= len2; > } > > > > > > void setup_reading(size_t len1, size_t len2) > { > do { } while(0); > do { } while(0); > } > > bool can_write() > { > return have_space_for(size1 + size2); > } > virtual void write() = 0; > > bool is_empty() { return used_size() == 0; } > virtual bool read() = 0; > > void sort(qsort2_cmp cmp_func, void *cmp_func_arg) > { > size_t elem_size= size1 + size2; > size_t n_elements= used_size() / elem_size; > my_qsort2(used_area(), n_elements, elem_size, cmp_func, cmp_func_arg); > } > > virtual void reset() = 0; > virtual uchar *end_of_space() = 0; >protected: > virtual size_t used_size() = 0; > > > virtual uchar *get_pos()= 0; > virtual bool read(uchar **position, uchar **ptr1, uchar **ptr2)= 0; > friend class Lifo_buffer_iterator; >public: > virtual bool have_space_for(size_t bytes) = 0; > > virtual void remove_unused_space(uchar **unused_start, uchar **unused_end)=0; > virtual uchar *used_area() = 0; > virtual ~Lifo_buffer() {}; >}; ># 161 "/buildbot/mariadb-10.2.31/sql/sql_lifo_buffer.h" >class Forward_lifo_buffer: public Lifo_buffer >{ > uchar *pos; >public: > enum_direction type() { return FORWARD; } > size_t used_size() > { > return (size_t)(pos - start); > } > void reset() > { > pos= start; > } > uchar *end_of_space() { return pos; } > bool have_space_for(size_t bytes) > { > return (pos + bytes < end); > } > > void write() > { > write_bytes(write_ptr1, size1); > if (size2) > write_bytes(write_ptr2, size2); > } > void write_bytes(const uchar *data, size_t bytes) > { > do { } while(0); > memcpy(pos, data, bytes); > pos += bytes; > } > bool have_data(uchar *position, size_t bytes) > { > return ((position - start) >= (ptrdiff_t)bytes); > } > uchar *read_bytes(uchar **position, size_t bytes) > { > do { } while(0); > *position= (*position) - bytes; > return *position; > } > bool read() { return read(&pos, &read_ptr1, &read_ptr2); } > bool read(uchar **position, uchar **ptr1, uchar **ptr2) > { > if (!have_data(*position, size1 + size2)) > return (1); > if (size2) > *ptr2= read_bytes(position, size2); > *ptr1= read_bytes(position, size1); > return (0); > } > void remove_unused_space(uchar **unused_start, uchar **unused_end) > { > do { } while(0); > } > > > > > > > > void grow(uchar *unused_start, uchar *unused_end) > { > do { } while(0); > do { } while(0); > do { do { ((void) ((unused_start)), (void) ((unused_end - unused_start))); } while (0); ((void) (unused_start), (void) (unused_end - unused_start)); } while(0); > end= unused_end; > } > > uchar *used_area() { return start; } > friend class Lifo_buffer_iterator; > uchar *get_pos() { return pos; } >}; ># 253 "/buildbot/mariadb-10.2.31/sql/sql_lifo_buffer.h" >class Backward_lifo_buffer: public Lifo_buffer >{ > uchar *pos; >public: > enum_direction type() { return BACKWARD; } > > size_t used_size() > { > return (size_t)(end - pos); > } > void reset() > { > pos= end; > } > uchar *end_of_space() { return end; } > bool have_space_for(size_t bytes) > { > return (pos - bytes >= start); > } > void write() > { > if (write_ptr2) > write_bytes(write_ptr2, size2); > write_bytes(write_ptr1, size1); > } > void write_bytes(const uchar *data, size_t bytes) > { > do { } while(0); > pos -= bytes; > memcpy(pos, data, bytes); > } > bool read() > { > return read(&pos, &read_ptr1, &read_ptr2); > } > bool read(uchar **position, uchar **ptr1, uchar **ptr2) > { > if (!have_data(*position, size1 + size2)) > return (1); > *ptr1= read_bytes(position, size1); > if (size2) > *ptr2= read_bytes(position, size2); > return (0); > } > bool have_data(uchar *position, size_t bytes) > { > return ((end - position) >= (ptrdiff_t)bytes); > } > uchar *read_bytes(uchar **position, size_t bytes) > { > do { } while(0); > uchar *ret= *position; > *position= *position + bytes; > return ret; > } > > > > > > void remove_unused_space(uchar **unused_start, uchar **unused_end) > { > *unused_start= start; > *unused_end= pos; > start= pos; > } > void grow(uchar *unused_start, uchar *unused_end) > { > do { } while(0); > } > > uchar *used_area() { return pos; } > friend class Lifo_buffer_iterator; > uchar *get_pos() { return pos; } >}; > > > >class Lifo_buffer_iterator >{ > uchar *pos; > Lifo_buffer *buf; > >public: > > uchar *read_ptr1; > uchar *read_ptr2; > > void init(Lifo_buffer *buf_arg) > { > buf= buf_arg; > pos= buf->get_pos(); > } > > > > > > > > bool read() > { > return buf->read(&pos, &read_ptr1, &read_ptr2); > } >}; ># 66 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" 2 > >class DsMrr_impl; >class Mrr_ordered_index_reader; > > > >class Key_parameters >{ >public: > uint key_tuple_length; > key_part_map key_tuple_map; > > > > > > > uint key_size_in_keybuf; > > > bool use_key_pointers; > > > bool index_ranges_unique; >}; ># 132 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" >class Key_value_records_iterator >{ > > Mrr_ordered_index_reader *owner; > > > Lifo_buffer_iterator identical_key_it; > > > > > > uchar *last_identical_key_ptr; > > > > > > bool get_next_row; > >public: > int init(Mrr_ordered_index_reader *owner_arg); > int get_next(range_id_t *range_info); > void move_to_next_key_value(); >}; > > > > > > >typedef struct st_buffer_manager >{ >public: > > void *arg; > > > > > > > void (*redistribute_buffer_space)(void *arg); > > > > > > > void (*reset_buffer_sizes)(void *arg); > >} Buffer_manager; ># 202 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" >class Mrr_reader >{ >public: > virtual int get_next(range_id_t *range_info) = 0; > virtual int refill_buffer(bool initial) = 0; > virtual ~Mrr_reader() {}; >}; > > > > > > >class Mrr_index_reader : public Mrr_reader >{ >protected: > handler *file; >public: > virtual int init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, > void *seq_init_param, uint n_ranges, > uint mode, Key_parameters *key_par, > Lifo_buffer *key_buffer, > Buffer_manager *buf_manager_arg) = 0; > > > virtual uchar *get_rowid_ptr() = 0; > > virtual void position(); > virtual bool skip_record(range_id_t range_id, uchar *rowid) = 0; > > virtual void interrupt_read() {} > virtual void resume_read() {} >}; ># 243 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" >class Mrr_simple_index_reader : public Mrr_index_reader >{ >public: > int init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, > void *seq_init_param, uint n_ranges, > uint mode, Key_parameters *key_par, > Lifo_buffer *key_buffer, > Buffer_manager *buf_manager_arg); > int get_next(range_id_t *range_info); > int refill_buffer(bool initial) { return initial? 0: 137; } > uchar *get_rowid_ptr() { return file->ref; } > bool skip_record(range_id_t range_id, uchar *rowid) > { > return (file->mrr_funcs.skip_record && > file->mrr_funcs.skip_record(file->mrr_iter, range_id, rowid)); > } >}; > > > > > > >class Mrr_ordered_index_reader : public Mrr_index_reader >{ >public: > int init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, > void *seq_init_param, uint n_ranges, > uint mode, Key_parameters *key_par, > Lifo_buffer *key_buffer, > Buffer_manager *buf_manager_arg); > int get_next(range_id_t *range_info); > int refill_buffer(bool initial); > uchar *get_rowid_ptr() { return file->ref; } > > bool skip_record(range_id_t range_info, uchar *rowid) > { > return (mrr_funcs.skip_record && > mrr_funcs.skip_record(mrr_iter, range_info, rowid)); > } > > bool skip_index_tuple(range_id_t range_info) > { > return (mrr_funcs.skip_index_tuple && > mrr_funcs.skip_index_tuple(mrr_iter, range_info)); > } > > bool set_interruption_temp_buffer(uint rowid_length, uint key_len, > uint saved_pk_len, > uchar **space_start, uchar *space_end); > void set_no_interruption_temp_buffer(); > > void interrupt_read(); > void resume_read(); > void position(); >private: > Key_value_records_iterator kv_it; > > bool scanning_key_val_iter; > > > Lifo_buffer *key_buffer; > > > Buffer_manager *buf_manager; > > Key_parameters keypar; > > > bool is_mrr_assoc; > > > RANGE_SEQ_IF mrr_funcs; > range_seq_t mrr_iter; > > > bool source_exhausted; ># 333 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" > bool support_scan_interruptions; > > uchar *saved_rowid; > > > bool have_saved_rowid; > > uchar *saved_key_tuple; > uchar *saved_primary_key; > > > > > > bool read_was_interrupted; > > static int compare_keys(void* arg, uchar* key1, uchar* key2); > static int compare_keys_reverse(void* arg, uchar* key1, uchar* key2); > > friend class Key_value_records_iterator; > friend class DsMrr_impl; > friend class Mrr_ordered_rndpos_reader; >}; > > > > > > > >class Mrr_ordered_rndpos_reader : public Mrr_reader >{ >public: > int init(handler *file, Mrr_index_reader *index_reader, uint mode, > Lifo_buffer *buf); > int get_next(range_id_t *range_info); > int refill_buffer(bool initial); >private: > handler *file; > > > Mrr_index_reader *index_reader; > > > uchar *index_rowid; > > > bool index_reader_exhausted; > > > > > > > > bool index_reader_needs_refill; > > > bool is_mrr_assoc; > > > > > > uchar *last_identical_rowid; > > > Lifo_buffer *rowid_buffer; > > int refill_from_index_reader(); >}; > > > > > > > >class Mrr_reader_factory >{ >public: > Mrr_ordered_rndpos_reader ordered_rndpos_reader; > Mrr_ordered_index_reader ordered_index_reader; > Mrr_simple_index_reader simple_index_reader; >}; ># 551 "/buildbot/mariadb-10.2.31/sql/multi_range_read.h" >class DsMrr_impl >{ >public: > typedef void (handler::*range_check_toggle_func_t)(bool on); > > DsMrr_impl() > : secondary_file(__null) {}; > > void init(handler *h_arg, TABLE *table_arg) > { > primary_file= h_arg; > table= table_arg; > } > int dsmrr_init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, > void *seq_init_param, uint n_ranges, uint mode, > HANDLER_BUFFER *buf); > void dsmrr_close(); > int dsmrr_next(range_id_t *range_info); > > ha_rows dsmrr_info(uint keyno, uint n_ranges, uint keys, uint key_parts, > uint *bufsz, uint *flags, Cost_estimate *cost); > > ha_rows dsmrr_info_const(uint keyno, RANGE_SEQ_IF *seq, > void *seq_init_param, uint n_ranges, uint *bufsz, > uint *flags, Cost_estimate *cost); > > int dsmrr_explain_info(uint mrr_mode, char *str, size_t size); >private: > > Lifo_buffer *key_buffer; > > > > > > handler *primary_file; > TABLE *table; > > > > > > handler *secondary_file; > > uint keyno; > > bool is_mrr_assoc; > > Mrr_reader_factory reader_factory; > > Mrr_reader *strategy; > bool strategy_exhausted; > > Mrr_index_reader *index_strategy; > > > uchar *full_buf; > uchar *full_buf_end; > > > > > > > > uchar *rowid_buffer_end; > > > > > > > Forward_lifo_buffer forward_key_buf; > Backward_lifo_buffer backward_key_buf; > > > > > > Forward_lifo_buffer rowid_buffer; > > bool choose_mrr_impl(uint keyno, ha_rows rows, uint *flags, uint *bufsz, > Cost_estimate *cost); > bool get_disk_sweep_mrr_cost(uint keynr, ha_rows rows, uint flags, > uint *buffer_size, Cost_estimate *cost); > bool check_cpk_scan(THD *thd, TABLE_SHARE *share, uint keyno, uint mrr_flags); > > bool setup_buffer_sharing(uint key_size_in_keybuf, key_part_map key_tuple_map); > > > Buffer_manager buf_manager; > static void redistribute_buffer_space(void *dsmrr_arg); > static void reset_buffer_sizes(void *dsmrr_arg); > static void do_nothing(void *dsmrr_arg); > > Lifo_buffer* get_key_buffer() { return key_buffer; } > > friend class Key_value_records_iterator; > friend class Mrr_ordered_index_reader; > friend class Mrr_ordered_rndpos_reader; > > int setup_two_handlers(); > void close_second_handler(); >}; ># 4216 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/group_by_handler.h" 1 ># 49 "/buildbot/mariadb-10.2.31/sql/group_by_handler.h" >struct Query >{ > List<Item> *select; > bool distinct; > TABLE_LIST *from; > Item *where; > ORDER *group_by; > ORDER *order_by; > Item *having; > >}; > >class group_by_handler >{ >public: > THD *thd; > handlerton *ht; > > > > > > TABLE *table; > > group_by_handler(THD *thd_arg, handlerton *ht_arg) > : thd(thd_arg), ht(ht_arg), table(0) {} > virtual ~group_by_handler() {} ># 87 "/buildbot/mariadb-10.2.31/sql/group_by_handler.h" > virtual int init_scan()= 0; > > > > > > > virtual int next_row()= 0; > > > virtual int end_scan()=0; > > > virtual void print_error(int error, myf errflag); >}; ># 4217 "/buildbot/mariadb-10.2.31/sql/handler.h" 2 > >bool key_uses_partial_cols(TABLE_SHARE *table, uint keyno); > > > >extern const char *ha_row_type[]; >extern const char *tx_isolation_names[]; >extern const char *binlog_format_names[]; >extern TYPELIB tx_isolation_typelib; >extern const char *myisam_stats_method_names[]; >extern ulong total_ha, total_ha_2pc; > > >plugin_ref ha_resolve_by_name(THD *thd, const LEX_STRING *name, bool tmp_table); >plugin_ref ha_lock_engine(THD *thd, const handlerton *hton); >handlerton *ha_resolve_by_legacy_type(THD *thd, enum legacy_db_type db_type); >handler *get_new_handler(TABLE_SHARE *share, MEM_ROOT *alloc, > handlerton *db_type); >handlerton *ha_checktype(THD *thd, handlerton *hton, bool no_substitute); > >static inline handlerton *ha_checktype(THD *thd, enum legacy_db_type type, > bool no_substitute = 0) >{ > return ha_checktype(thd, ha_resolve_by_legacy_type(thd, type), no_substitute); >} > >static inline enum legacy_db_type ha_legacy_type(const handlerton *db_type) >{ > return (db_type == __null) ? DB_TYPE_UNKNOWN : db_type->db_type; >} > >static inline const char *ha_resolve_storage_engine_name(const handlerton *db_type) >{ > return db_type == __null ? "UNKNOWN" : hton_name(db_type)->str; >} > >static inline bool ha_check_storage_engine_flag(const handlerton *db_type, uint32 flag) >{ > return db_type == __null ? (0) : ((db_type->flags & flag) ? 1 : 0); >} > >static inline bool ha_storage_engine_is_enabled(const handlerton *db_type) >{ > return (db_type && db_type->create) ? > (db_type->state == SHOW_OPTION_YES) : (0); >} > > > > >int ha_init_errors(void); >int ha_init(void); >int ha_end(void); >int ha_initialize_handlerton(st_plugin_int *plugin); >int ha_finalize_handlerton(st_plugin_int *plugin); > >TYPELIB *ha_known_exts(void); >int ha_panic(enum ha_panic_function flag); >void ha_close_connection(THD* thd); >void ha_kill_query(THD* thd, enum thd_kill_levels level); >bool ha_flush_logs(handlerton *db_type); >void ha_drop_database(char* path); >void ha_checkpoint_state(bool disable); >void ha_commit_checkpoint_request(void *cookie, void (*pre_hook)(void *)); >int ha_create_table(THD *thd, const char *path, > const char *db, const char *table_name, > HA_CREATE_INFO *create_info, LEX_CUSTRING *frm); >int ha_delete_table(THD *thd, handlerton *db_type, const char *path, > const char *db, const char *alias, bool generate_warning); > > >bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat); ># 4321 "/buildbot/mariadb-10.2.31/sql/handler.h" >extern "C" int ha_init_key_cache(const char *name, KEY_CACHE *key_cache, void *); >int ha_resize_key_cache(KEY_CACHE *key_cache); >int ha_change_key_cache_param(KEY_CACHE *key_cache); >int ha_repartition_key_cache(KEY_CACHE *key_cache); >int ha_change_key_cache(KEY_CACHE *old_key_cache, KEY_CACHE *new_key_cache); > > >int ha_start_consistent_snapshot(THD *thd); >int ha_commit_or_rollback_by_xid(XID *xid, bool commit); >int ha_commit_one_phase(THD *thd, bool all); >int ha_commit_trans(THD *thd, bool all); >int ha_rollback_trans(THD *thd, bool all); >int ha_prepare(THD *thd); >int ha_recover(HASH *commit_list); > > >int ha_enable_transaction(THD *thd, bool on); > > >int ha_rollback_to_savepoint(THD *thd, SAVEPOINT *sv); >bool ha_rollback_to_savepoint_can_release_mdl(THD *thd); >int ha_savepoint(THD *thd, SAVEPOINT *sv); >int ha_release_savepoint(THD *thd, SAVEPOINT *sv); > >int ha_abort_transaction(THD *bf_thd, THD *victim_thd, my_bool signal); >void ha_fake_trx_id(THD *thd); > > > > > >void trans_register_ha(THD *thd, bool all, handlerton *ht); ># 4362 "/buildbot/mariadb-10.2.31/sql/handler.h" >const char *get_canonical_filename(handler *file, const char *path, > char *tmp_path); >bool mysql_xa_recover(THD *thd); >void commit_checkpoint_notify_ha(handlerton *hton, void *cookie); > >inline const char *table_case_name(HA_CREATE_INFO *info, const char *name) >{ > return ((lower_case_table_names == 2 && info->alias) ? info->alias : name); >} ># 4385 "/buildbot/mariadb-10.2.31/sql/handler.h" >void print_keydup_error(TABLE *table, KEY *key, const char *msg, myf errflag); >void print_keydup_error(TABLE *table, KEY *key, myf errflag); > >int del_global_index_stat(THD *thd, TABLE* table, KEY* key_info); >int del_global_table_stat(THD *thd, LEX_STRING *db, LEX_STRING *table); ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0xa.h" 2 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" 2 > > > > > > > >struct mtr_t; >class ReadView; >class FlushObserver; >class ut_stage_alter_t; > > > >void >trx_set_detailed_error( > > trx_t* trx, > const char* msg); > > > >void >trx_set_detailed_error_from_file( > > trx_t* trx, > FILE* file); > > > >static inline >const dict_index_t* >trx_get_error_info( > > const trx_t* trx); > > > >trx_t* >trx_allocate_for_mysql(void); > > > > >trx_t* >trx_allocate_for_background(void); > > > > >void >trx_free_resurrected(trx_t* trx); > > > >void >trx_free_for_background(trx_t* trx); > > > >void >trx_free_prepared( > > trx_t* trx); > > > >void >trx_free_for_mysql(trx_t* trx); > > > >void >trx_disconnect_plain(trx_t* trx); > > > >void >trx_disconnect_prepared(trx_t* trx); > > >void >trx_lists_init_at_db_start(); > > > >void >trx_start_if_not_started_xa_low( > > trx_t* trx, > bool read_write); > > >void >trx_start_if_not_started_low( > > trx_t* trx, > bool read_write); > > > >void >trx_start_internal_low( > > trx_t* trx); > > > >void >trx_start_internal_read_only_low( > trx_t* trx); ># 191 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >void >trx_start_for_ddl_low( > > trx_t* trx, > trx_dict_op_t op); ># 212 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >void >trx_commit( > > trx_t* trx); > > > >void >trx_commit_low( > > trx_t* trx, > mtr_t* mtr); > > > > > >void >trx_cleanup_at_db_startup( > > trx_t* trx); > > > >dberr_t >trx_commit_for_mysql( > > trx_t* trx); > > >void trx_prepare_for_mysql(trx_t* trx); > > > > >int >trx_recover_for_mysql( > > XID* xid_list, > ulint len); > > > > > > >trx_t* trx_get_trx_by_xid(const XID* xid); > > > >void >trx_commit_complete_for_mysql( > > trx_t* trx); > > >void >trx_mark_sql_stat_end( > > trx_t* trx); > > > > >ReadView* >trx_assign_read_view( > > trx_t* trx); > > > >static inline >ReadView* >trx_get_read_view( > > trx_t* trx); > > > >static inline >const ReadView* >trx_get_read_view( > > const trx_t* trx); > > > >void >trx_commit_or_rollback_prepare( > > trx_t* trx); > > > >commit_node_t* >trx_commit_node_create( > > mem_heap_t* heap); > > > >que_thr_t* >trx_commit_step( > > que_thr_t* thr); > > > > >void >trx_print_low( > > FILE* f, > > const trx_t* trx, > > ulint max_query_len, > > > ulint n_rec_locks, > > ulint n_trx_locks, > > ulint heap_size); > > > > > > >void >trx_print_latched( > > FILE* f, > const trx_t* trx, > ulint max_query_len); ># 357 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >__attribute__((visibility ("hidden"))) >void >wsrep_trx_print_locking( > FILE* f, > const trx_t* trx, > ulint max_query_len) > > __attribute__((nonnull)); > > > > >void >trx_print( > > FILE* f, > const trx_t* trx, > ulint max_query_len); > > > > > >static inline >enum trx_dict_op_t >trx_get_dict_operation( > > const trx_t* trx) > __attribute__((warn_unused_result)); > > >static inline >void >trx_set_dict_operation( > > trx_t* trx, > enum trx_dict_op_t op); ># 402 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >static inline >bool >trx_state_eq( > > const trx_t* trx, > trx_state_t state, > > > > bool relaxed = false) > > > > __attribute__((nonnull, warn_unused_result)); ># 431 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >ulint >trx_is_interrupted( > > const trx_t* trx); > > > >ulint >trx_is_strict( > > trx_t* trx); ># 455 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >bool >trx_weight_ge( > > const trx_t* a, > const trx_t* b); ># 468 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >static inline >const char* >trx_get_que_state_str( > > const trx_t* trx); ># 482 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >static inline >trx_id_t >trx_get_id_for_print( > const trx_t* trx); > > >void >trx_pool_init(); > > >void >trx_pool_close(); > > > > > >void >trx_set_rw_mode( > trx_t* trx); ># 607 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >typedef std::vector<ib_lock_t*, ut_allocator<ib_lock_t*> > lock_list; ># 631 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >struct trx_lock_t { > ulint n_active_thrs; > > trx_que_t que_state; > > > > ib_lock_t* wait_lock; ># 648 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > ib_uint64_t deadlock_mark; > > > bool was_chosen_as_deadlock_victim; > > > > > > > time_t wait_started; > > > que_thr_t* wait_thr; ># 670 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > struct { > ib_lock_t lock; byte pad[256]; > } rec_pool[8]; > > > ib_lock_t table_pool[8]; > > > unsigned rec_cached; > > > unsigned table_cached; > > mem_heap_t* lock_heap; > > > trx_lock_list_t trx_locks; > > > > > lock_list table_locks; > > > bool cancel; ># 705 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > ulint n_rec_locks; >}; > > > > > >typedef std::set< > dict_table_t*, > std::less<dict_table_t*>, > ut_allocator<dict_table_t*> > trx_mod_tables_t; ># 761 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >struct trx_undo_ptr_t { > trx_rseg_t* rseg; > > > trx_undo_t* insert_undo; > > trx_undo_t* update_undo; > >}; > > >struct trx_temp_undo_t { > > trx_rseg_t* rseg; > > trx_undo_t* undo; >}; > > >struct trx_rsegs_t { > > > > trx_undo_ptr_t m_redo; > > > > trx_temp_undo_t m_noredo; >}; > >struct trx_t { >private: ># 801 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > int32_t n_ref; > > >public: > TrxMutex mutex; > > > > > trx_id_t id; > > trx_id_t no; ># 878 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > trx_state_t state; > > > > bool is_recovered; > > ReadView* read_view; > > > ut_list_node<trx_t> > trx_list; > > ut_list_node<trx_t> > no_list; > > > > trx_lock_t lock; > > > > > > const char* op_info; > > > ulint isolation_level; > bool check_foreigns; ># 914 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > bool is_registered; > > > > > unsigned active_commit_ordered:1; > > bool check_unique_secondary; > > > > > > > bool flush_log_later; > > > > > > bool must_flush_log_later; > > > > > > ulint duplicates; > trx_dict_op_t dict_operation; > > > bool declared_to_be_inside_innodb; > > > > > ib_uint32_t n_tickets_to_enter_innodb; > > > > > ib_uint32_t dict_operation_lock_mode; > > > > > > > > time_t start_time; > > ulonglong start_time_micro; > lsn_t commit_lsn; > table_id_t table_id; > > > THD* mysql_thd; > > > const char* mysql_log_file_name; > > > > > int64_t mysql_log_offset; > > > > > ib_uint32_t n_mysql_tables_in_use; > > > ib_uint32_t mysql_n_tables_locked; ># 997 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > ut_list_node<trx_t> > mysql_trx_list; > > > > > > > > dberr_t error_state; > > > > > const dict_index_t*error_info; > > > ulint error_key_num; > > > que_t* graph; > > > > > > > ut_list_base<trx_named_savept_t, ut_list_node<trx_named_savept_t> trx_named_savept_t::*> > trx_savepoints; > > > UndoMutex undo_mutex; > > > > > > undo_no_t undo_no; > > > > > > > ulint undo_rseg_space; > > > trx_savept_t last_sql_stat_start; > > > > > trx_rsegs_t rsegs; > undo_no_t roll_limit; > > > > > > ulint pages_undone; > > > ulint n_autoinc_rows; > > > ib_vector_t* autoinc_locks; > > > > > > > bool read_only; > > > > > > > > bool auto_commit; > ib_uint32_t will_lock; > > > > fts_trx_t* fts_trx; > > > doc_id_t fts_next_doc_id; > > ib_uint32_t flush_tables; > > > > bool ddl; > > bool internal; ># 1104 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" > XID* xid; > > > trx_mod_tables_t mod_tables; > > > char* detailed_error; > >private: > > > FlushObserver* flush_observer; >public: > > ulint n_rec_lock_waits; > > > ulint n_table_lock_waits; > > > ulint total_rec_lock_wait_time; > > > ulint total_table_lock_wait_time; > > > > > os_event_t wsrep_event; > > > ulint magic_n; > > > bool has_logged_persistent() const > { > return(rsegs.m_redo.insert_undo || rsegs.m_redo.update_undo); > } > > > bool has_logged() const > { > return(has_logged_persistent() || rsegs.m_noredo.undo); > } > > > trx_rseg_t* get_temp_rseg() > { > if (trx_rseg_t* rseg = rsegs.m_noredo.rseg) { > do { } while(0); > return(rseg); > } > > return(assign_temp_rseg()); > } > > > > > void set_flush_observer(ulint space_id, ut_stage_alter_t* stage); > > > void remove_flush_observer(); > > > FlushObserver* get_flush_observer() const > { > return flush_observer; > } > > > inline void commit_state(); > > > inline void release_locks(); > > > bool is_referenced() > { > return __atomic_load_n((&n_ref), (0)) > 0; > } > > > void reference() > { > > > > __atomic_fetch_add((&n_ref), (1), (0)); > do { } while(0); > } > > > void release_reference() > { > > > > __atomic_fetch_add((&n_ref), (-1), (0)); > do { } while(0); > } > > >private: > > > trx_rseg_t* assign_temp_rseg(); >}; > > > > > >inline bool trx_is_started(const trx_t* trx) >{ > return trx->state != TRX_STATE_NOT_STARTED; >} ># 1264 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" >enum commit_node_state { > COMMIT_NODE_SEND = 1, > > COMMIT_NODE_WAIT > >}; > > >struct commit_node_t{ > que_common_t common; > enum commit_node_state > state; >}; ># 1292 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/read0read.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/read0read.h" >class MVCC { >public: > > > explicit MVCC(ulint size); > > > > ~MVCC(); > > > > > > > void view_open(ReadView*& view, trx_t* trx); > > > > > > void view_close(ReadView*& view, bool own_mutex); > > > > > > void view_release(ReadView*& view); > > > > > > > void clone_oldest_view(ReadView* view); > > > > ulint size() const; > > > > static bool is_view_active(ReadView* view) > { > do { if (__builtin_expect(!(ulint) (view != reinterpret_cast<ReadView*>(0x1)), (0))) { ut_dbg_assertion_failed("view != reinterpret_cast<ReadView*>(0x1)", "/buildbot/mariadb-10.2.31/storage/innobase/include/read0read.h", 79); } } while (0); > > return(view != __null && !(intptr_t(view) & 0x1)); > } > > > > > static void set_view_creator_trx_id(ReadView* view, trx_id_t id); > >private: > > > > bool validate() const; > > > > > > > inline ReadView* get_view(); > > > > > > inline ReadView* get_oldest_view() const; > >private: > > MVCC(const MVCC&); > MVCC& operator=(const MVCC&); > >private: > typedef ut_list_base<ReadView, ut_list_node<ReadView> ReadView::*> view_list_t; > > > view_list_t m_free; > > > > view_list_t m_views; >}; ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" 2 > > > > > > > >static inline >bool >trx_state_eq( > > const trx_t* trx, > trx_state_t state, > > > > bool relaxed) > > > >{ ># 78 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" > return(trx->state == state); >} > > > > >static inline >const dict_index_t* >trx_get_error_info( > > const trx_t* trx) >{ > return(trx->error_info); >} > > > > > >static inline >const char* >trx_get_que_state_str( > > const trx_t* trx) >{ > > switch (trx->lock.que_state) { > case TRX_QUE_RUNNING: > return("RUNNING"); > case TRX_QUE_LOCK_WAIT: > return("LOCK WAIT"); > case TRX_QUE_ROLLING_BACK: > return("ROLLING BACK"); > case TRX_QUE_COMMITTING: > return("COMMITTING"); > default: > return("UNKNOWN"); > } >} ># 126 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" >static inline >trx_id_t >trx_get_id_for_print( > const trx_t* trx) >{ ># 144 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" > static const trx_id_t max_trx_id > = (1ULL << (6 * 8)) - 1; > > do { } while(0); > > return(trx->id != 0 > ? trx->id > : reinterpret_cast<trx_id_t>(trx) | (max_trx_id + 1)); >} > > > > >static inline >enum trx_dict_op_t >trx_get_dict_operation( > > const trx_t* trx) >{ > trx_dict_op_t op = static_cast<trx_dict_op_t>(trx->dict_operation); ># 174 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" > return(op); >} > > >static inline >void >trx_set_dict_operation( > > trx_t* trx, > enum trx_dict_op_t op) > >{ ># 209 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.ic" > trx->ddl = true; > trx->dict_operation = op; >} > > > > >static inline >ReadView* >trx_get_read_view( > trx_t* trx) >{ > return(!MVCC::is_view_active(trx->read_view) ? __null : trx->read_view); >} > > > > >static inline >const ReadView* >trx_get_read_view( > const trx_t* trx) >{ > return(!MVCC::is_view_active(trx->read_view) ? __null : trx->read_view); >} ># 1293 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0trx.h" 2 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" 2 > > > > >typedef ut_list_base<trx_t, ut_list_node<trx_t> trx_t::*> trx_ut_list_t; > > >class MVCC; >class ReadView; > > >extern trx_sys_t* trx_sys; > > > > >inline bool trx_sys_hdr_page(const page_id_t page_id); > > >void trx_sys_init_at_db_start(); > > > >void >trx_sys_create(void); > > > >void >trx_sys_create_sys_pages(void); > > > >ulint >trx_sysf_rseg_find_free(mtr_t* mtr); > > > >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 >trx_id_t >trx_sys_get_new_trx_id(); > > > > > >static inline >trx_id_t >trx_sys_get_max_trx_id(void); ># 155 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" >static inline >void >trx_write_trx_id( > > byte* ptr, > trx_id_t id); > > > > > >static inline >trx_id_t >trx_read_trx_id( > > const byte* ptr); > > > >static inline >trx_t* >trx_get_rw_trx_by_id( > > trx_id_t trx_id); > > > > > > >static inline >trx_id_t >trx_rw_min_trx_id(void); > > > > > > >inline trx_t* trx_rw_is_active_low(trx_id_t trx_id, bool* corrupt); > > > > > > > >inline trx_t* trx_rw_is_active(trx_id_t trx_id, bool* corrupt, bool ref_count); ># 220 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" >void >trx_sys_update_mysql_binlog_offset( > > const char* file_name, > int64_t offset, > trx_sysf_t* sys_header, > mtr_t* mtr); > > >void >trx_sys_print_mysql_binlog_offset(); > > > > > > >__attribute__((visibility ("hidden"))) >void >trx_sys_update_wsrep_checkpoint( > const XID* xid, > trx_sysf_t* sys_header, > mtr_t* mtr); > > > > >__attribute__((visibility ("hidden"))) >bool >trx_sys_read_wsrep_checkpoint(XID* xid); > > > >void >trx_sys_file_format_init(void); > > > > >void >trx_sys_file_format_close(void); > > > > > > > >void >trx_sys_file_format_tag_init(void); > > > > >void >trx_sys_close(void); > > > > >const char* >trx_sys_file_format_id_to_name( > > const ulint id); > > > > >ulint >trx_sys_file_format_max_set( > > ulint format_id, > const char** name); > > > >bool >trx_sys_create_rsegs(); > > > >static inline >ulint >trx_sys_get_n_rw_trx(void); > > > > > >ulint >trx_sys_any_active_transactions(void); > > > > >const char* >trx_sys_file_format_max_get(void); > > > > >dberr_t >trx_sys_file_format_max_check( > > ulint max_format_id); > > > > >ulint >trx_sys_file_format_max_upgrade( > > const char** name, > ulint format_id); > > > >const char* >trx_sys_file_format_id_to_name( > > const ulint id); > > > > >static inline >void >trx_sys_rw_trx_add(trx_t* trx); ># 556 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" >struct trx_sys_t { > > TrxSysMutex mutex; > > > > MVCC* mvcc; > > volatile trx_id_t > max_trx_id; > > > > > > trx_ut_list_t serialisation_list; ># 580 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" > const char pad1[128]; > trx_ut_list_t rw_trx_list; > > > > > > const char pad2[128]; > trx_ut_list_t mysql_trx_list; ># 598 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" > trx_ids_t rw_trx_ids; ># 608 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" > const char pad3[128]; > > trx_rseg_t* temp_rsegs[128]; > > const char pad4[128]; > > trx_rseg_t* rseg_array[128]; > > > > > > > ulint rseg_history_len; > > > > > > TrxIdSet rw_trx_set; > >}; ># 649 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" >typedef byte trx_sysf_rseg_t; ># 50 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" >void >trx_sys_flush_max_trx_id(void); > > > > > >inline bool trx_sys_hdr_page(const page_id_t page_id) >{ > return(page_id.space() == TRX_SYS_SPACE > && page_id.page_no() == 5); >} > > > > >static inline >trx_sysf_t* >trx_sysf_get( > > mtr_t* mtr) >{ > buf_block_t* block = __null; > trx_sysf_t* header = __null; > > do { } while(0); > > block = buf_page_get_gen(page_id_t(TRX_SYS_SPACE, 5), univ_page_size, RW_X_LATCH, __null, 10, > "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" ># 77 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" > , > 78 ># 77 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" > , mtr, __null) > ; > > if (block) { > ; > > header = 38U + (block)->frame; > } > > return(header); >} > > > > > >static inline >ulint >trx_sysf_rseg_get_space( > > trx_sysf_t* sys_header, > ulint i, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > return((mtr)->read_ulint((sys_header + (8 + 10) + i * 8 + 0), (MLOG_4BYTES)) > > ); >} > > > > > >static inline >ulint >trx_sysf_rseg_get_page_no( > > trx_sysf_t* sys_header, > ulint i, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > return((mtr)->read_ulint((sys_header + (8 + 10) + i * 8 + 4), (MLOG_4BYTES)) > > ); >} > > > > >static inline >void >trx_sysf_rseg_set_space( > > trx_sysf_t* sys_header, > ulint i, > ulint space, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > mlog_write_ulint(sys_header + (8 + 10) > + i * 8 > + 0, > space, > MLOG_4BYTES, mtr); >} > > > > >static inline >void >trx_sysf_rseg_set_page_no( > > trx_sysf_t* sys_header, > ulint i, > ulint page_no, > > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > mlog_write_ulint(sys_header + (8 + 10) > + i * 8 > + 4, > page_no, > MLOG_4BYTES, mtr); >} > > > > > >static inline >void >trx_write_trx_id( > > byte* ptr, > trx_id_t id) >{ > > > > do { } while(0); > mach_write_to_6(ptr, id); >} > > > > > > >static inline >trx_id_t >trx_read_trx_id( > > const byte* ptr) >{ > > > > return(mach_read_from_6(ptr)); >} > > > > > > > >static inline >trx_t* >trx_get_rw_trx_by_id( > > trx_id_t trx_id) >{ > do { } while(0); > do { } while(0); > > if (trx_sys->rw_trx_set.empty()) { > return(__null); > } > > TrxIdSet::iterator it; > > it = trx_sys->rw_trx_set.find(TrxTrack(trx_id)); > > return(it == trx_sys->rw_trx_set.end() ? __null : it->m_trx); >} > > > > > > > >static inline >trx_id_t >trx_rw_min_trx_id_low(void) > >{ > trx_id_t id; > > do { } while(0); > > const trx_t* trx = (trx_sys->rw_trx_list).end; > > if (trx == __null) { > id = trx_sys->max_trx_id; > } else { > do { do { } while(0); do { } while(0); do { do { } while(0); switch ((trx)->state) { case TRX_STATE_PREPARED: case TRX_STATE_PREPARED_RECOVERED: case TRX_STATE_ACTIVE: case TRX_STATE_COMMITTED_IN_MEMORY: continue; case TRX_STATE_NOT_STARTED: break; } ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic", 255); } while (0); } while (0); > id = trx->id; > } > > return(id); >} ># 291 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" >static inline >trx_id_t >trx_rw_min_trx_id(void) > >{ > do { (&trx_sys->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic", 296); } while (0); > > trx_id_t id = trx_rw_min_trx_id_low(); > > do { trx_sys->mutex.exit(); } while (0); > > return(id); >} > > > > > > >inline trx_t* trx_rw_is_active_low(trx_id_t trx_id, bool* corrupt) >{ > do { } while(0); > > if (trx_id < trx_rw_min_trx_id_low()) { > } else if (trx_id >= trx_sys->max_trx_id) { > > > > > if (corrupt != __null) { > *corrupt = true; > } > } else if (trx_t* trx = trx_get_rw_trx_by_id(trx_id)) { > return trx; > } > > return __null; >} > > > > > > > >inline trx_t* trx_rw_is_active(trx_id_t trx_id, bool* corrupt, bool ref_count) >{ > do { } while(0); > > do { (&trx_sys->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic", 340); } while (0); > > trx_t* trx = trx_rw_is_active_low(trx_id, corrupt); > > if (trx && ref_count) { > TrxMutex* trx_mutex = &trx->mutex; > (trx_mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic", 346); > do { } while(0); > do { } while(0); > if (trx_state_eq(trx, TRX_STATE_COMMITTED_IN_MEMORY)) { > > > > > > > > trx = __null; > } else { > > > > > > trx->reference(); > } > (trx_mutex)->exit(); > } > > do { trx_sys->mutex.exit(); } while (0); > > return(trx); >} > > > > >static inline >trx_id_t >trx_sys_get_new_trx_id() > >{ > > do { } while(0); ># 392 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" > if (!(trx_sys->max_trx_id % ((trx_id_t) 256))) { > > trx_sys_flush_max_trx_id(); > } > > return(trx_sys->max_trx_id++); >} > > > > > >static inline >trx_id_t >trx_sys_get_max_trx_id(void) > >{ > do { } while(0); ># 425 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic" > return(trx_sys->max_trx_id); > >} > > > > >static inline >ulint >trx_sys_get_n_rw_trx(void) > >{ > ulint n_trx; > > do { (&trx_sys->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.ic", 439); } while (0); > > n_trx = (trx_sys->rw_trx_list).count; > > do { trx_sys->mutex.exit(); } while (0); > > return(n_trx); >} > > > > >static inline >void >trx_sys_rw_trx_add(trx_t* trx) >{ > do { } while(0); > > trx_sys->rw_trx_set.insert(TrxTrack(trx->id, trx)); > ; >} ># 650 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0sys.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" 2 ># 45 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" >static inline >roll_ptr_t >trx_undo_build_roll_ptr( > > ulint is_insert, > ulint rseg_id, > ulint page_no, > ulint offset); > > >static inline >void >trx_undo_decode_roll_ptr( > > roll_ptr_t roll_ptr, > ulint* is_insert, > ulint* rseg_id, > ulint* page_no, > ulint* offset); > > > > >static inline >ulint >trx_undo_roll_ptr_is_insert( > > roll_ptr_t roll_ptr); > > > >static inline >bool >trx_undo_trx_id_is_insert( > > const byte* trx_id) > __attribute__((warn_unused_result)); > > > > >static inline >void >trx_write_roll_ptr( > > byte* ptr, > > roll_ptr_t roll_ptr); > > > > > >static inline >roll_ptr_t >trx_read_roll_ptr( > > const byte* ptr); > > > > > >static inline >ib_page_t* >trx_undo_page_get(const page_id_t page_id, mtr_t* mtr); > > > > > >static inline >ib_page_t* >trx_undo_page_get_s_latched(const page_id_t page_id, 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, > bool shared, > 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); ># 193 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" >trx_undo_rec_t* >trx_undo_get_first_rec( > ulint space, > ulint page_no, > ulint offset, > ulint mode, > mtr_t* mtr); > > > > > > > >buf_block_t* >trx_undo_add_page(trx_t* trx, trx_undo_t* undo, mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); > > > > > >void >trx_undo_free_last_page(trx_undo_t* undo, mtr_t* mtr) > __attribute__((nonnull)); > > > > > >void >trx_undo_truncate_end(trx_undo_t* undo, undo_no_t limit, bool is_temp) > __attribute__((nonnull)); ># 235 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" >void >trx_undo_truncate_start( > trx_rseg_t* rseg, > ulint hdr_page_no, > ulint hdr_offset, > undo_no_t limit); > > > > > >ulint >trx_undo_lists_init( > > trx_rseg_t* rseg); > > > > >void trx_undo_mark_as_dict(const trx_t* trx, trx_undo_t* undo, mtr_t* mtr); ># 266 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" >dberr_t >trx_undo_assign_undo( > trx_t* trx, > trx_rseg_t* rseg, > trx_undo_t** undo, > ulint type) > __attribute__((nonnull, warn_unused_result)); > > > >ib_page_t* >trx_undo_set_state_at_finish( > > trx_undo_t* undo, > mtr_t* mtr); > > > > > > > >ib_page_t* >trx_undo_set_state_at_prepare( > trx_t* trx, > trx_undo_t* undo, > bool rollback, > mtr_t* mtr); > > > > > >void >trx_undo_update_cleanup( > > trx_t* trx, > > ib_page_t* undo_page, > > mtr_t* mtr); > > > > > > >void >trx_undo_commit_cleanup(trx_undo_t* undo, bool is_temp); > > > >void >trx_undo_free_prepared( > > trx_t* trx) > __attribute__((cold)) __attribute__((nonnull)); > > > > >byte* >trx_undo_parse_page_init( > > const byte* ptr, > const byte* end_ptr, > ib_page_t* page, > mtr_t* mtr); > > > > > > > >byte* >trx_undo_parse_page_header( > mlog_id_t type, > const byte* ptr, > const byte* end_ptr, > ib_page_t* page, > mtr_t* mtr); > > >void >trx_undo_mem_free( > > trx_undo_t* undo); ># 379 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" >struct trx_undo_t { > > ulint id; > > ulint type; > > ulint state; > > ulint del_marks; > > > > > > > > trx_id_t trx_id; > > XID xid; > > ulint dict_operation; > table_id_t 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; > > > undo_no_t top_undo_no; > buf_block_t* guess_block; > > ulint withdraw_clock; > > > ut_list_node<trx_undo_t> undo_list; > > >}; ># 563 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" >static inline >roll_ptr_t >trx_undo_build_roll_ptr( > > ulint is_insert, > ulint rseg_id, > ulint page_no, > ulint offset) >{ > roll_ptr_t roll_ptr; > > > > do { } while(0); > do { } while(0); > do { } while(0); > > roll_ptr = (roll_ptr_t) is_insert << 55 > | (roll_ptr_t) rseg_id << 48 > | (roll_ptr_t) page_no << 16 > | offset; > return(roll_ptr); >} > > > >static inline >void >trx_undo_decode_roll_ptr( > > roll_ptr_t roll_ptr, > ulint* is_insert, > ulint* rseg_id, > ulint* page_no, > ulint* offset) > >{ > > > > > > > do { } while(0); > *offset = (ulint) roll_ptr & 0xFFFF; > roll_ptr >>= 16; > *page_no = (ulint) roll_ptr & 0xFFFFFFFF; > roll_ptr >>= 32; > *rseg_id = (ulint) roll_ptr & 0x7F; > roll_ptr >>= 7; > *is_insert = (ulint) roll_ptr; >} > > > > >static inline >ulint >trx_undo_roll_ptr_is_insert( > > roll_ptr_t roll_ptr) >{ > > > > > > > do { } while(0); > return((ulint) (roll_ptr >> 55)); >} > > > > >static inline >bool >trx_undo_trx_id_is_insert( > > const byte* trx_id) >{ > > > > return(static_cast<bool>(trx_id[6] >> 7)); >} > > > > > >static inline >void >trx_write_roll_ptr( > > byte* ptr, > > roll_ptr_t roll_ptr) >{ > > > > mach_write_to_7(ptr, roll_ptr); >} > > > > > > >static inline >roll_ptr_t >trx_read_roll_ptr( > > const byte* ptr) >{ > > > > return(mach_read_from_7(ptr)); >} > > > > > >static inline >ib_page_t* >trx_undo_page_get(const page_id_t page_id, mtr_t* mtr) >{ > buf_block_t* block = buf_page_get_gen(page_id, univ_page_size, RW_X_LATCH, __null, 10, > "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" ># 163 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" > , > 164 ># 163 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" > , mtr, __null) > ; > > ; > > return((block)->frame); >} > > > > > >static inline >ib_page_t* >trx_undo_page_get_s_latched(const page_id_t page_id, mtr_t* mtr) >{ > buf_block_t* block = buf_page_get_gen(page_id, univ_page_size, RW_S_LATCH, __null, 10, > "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" ># 179 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" > , > 180 ># 179 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.ic" > , mtr, __null) > ; > > ; > > return((block)->frame); >} > > > > > >static inline >ulint >trx_undo_page_get_start( > > ib_page_t* undo_page, > ulint page_no, > ulint offset) >{ > ulint start; > > if (page_no == page_get_page_no(undo_page)) { > > start = mach_read_from_2(offset + undo_page > + 18); > } else { > start = 38U + (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 == page_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 + 38U > + 4); > } > } else { > end = mach_read_from_2(undo_page + 38U > + 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 = (ib_page_t*) ut_align_down(rec, ((ulint) srv_page_size)); > > start = trx_undo_page_get_start(undo_page, page_no, offset); > > if (start + undo_page == rec) { > > return(__null); > } > > 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 = (ib_page_t*) ut_align_down(rec, ((ulint) srv_page_size)); > > end = trx_undo_page_get_end(undo_page, page_no, offset); > > next = mach_read_from_2(rec); > > if (next == end) { > > return(__null); > } > > 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(__null); > } > > 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(__null); > } > > return(undo_page + start); >} ># 564 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0undo.h" 2 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic" 2 > > > > > >static inline >ulint >row_get_trx_id_offset( > > const dict_index_t* index, > const offset_t* offsets) >{ > ulint pos; > ulint offset; > ulint len; > > do { } while(0); > do { } while(0); > > pos = dict_index_get_sys_col_pos(index, 1); > > offset = rec_get_nth_field_offs(offsets, pos, &len); > > do { } while(0); > > return(offset); >} > > > > >static inline >trx_id_t >row_get_rec_trx_id( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets) >{ > ulint offset; > > do { } while(0); > do { } while(0); > > offset = index->trx_id_offset; > > if (!offset) { > offset = row_get_trx_id_offset(index, offsets); > } > > return(trx_read_trx_id(rec + offset)); >} > > > > >static inline >roll_ptr_t >row_get_rec_roll_ptr( > > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets) >{ > ulint offset; > > do { } while(0); > do { } while(0); > > offset = index->trx_id_offset; > > if (!offset) { > offset = row_get_trx_id_offset(index, offsets); > } > > return(trx_read_roll_ptr(rec + offset + 6)); >} > > > > > > > >static inline >dtuple_t* >row_build_index_entry( > > const dtuple_t* row, > > const row_ext_t* ext, > > dict_index_t* index, > mem_heap_t* heap) > > >{ > dtuple_t* entry; > > do { } while(0); > entry = row_build_index_entry_low(row, ext, index, heap, > 0); > do { } while(0); > return(entry); >} > > > > >static inline >void >row_build_row_ref_fast( > > dtuple_t* ref, > > const ulint* map, > > > const rec_t* rec, > > > const offset_t* offsets) >{ > dfield_t* dfield; > const byte* field; > ulint len; > ulint ref_len; > ulint field_no; > ulint i; > > do { } while(0); > do { } while(0); > 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) + rec_get_nth_field_offs(offsets, field_no, &len)) > ; > dfield_set_data(dfield, field, len); > } > } >} ># 185 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic" >ib_uint64_t >row_parse_int( > const byte* data, > ulint len, > ulint mtype, > bool unsigned_type) >{ > ib_uint64_t value = 0; > > switch (mtype) { > case 6: > > do { if (__builtin_expect(!(ulint) (len <= sizeof value), (0))) { ut_dbg_assertion_failed("len <= sizeof value", "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic", 197); } } while (0); > value = mach_read_int_type(data, len, unsigned_type); > break; > > case 9: > > do { if (__builtin_expect(!(ulint) (len == sizeof(float)), (0))) { ut_dbg_assertion_failed("len == sizeof(float)", "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic", 203); } } while (0); > value = static_cast<ib_uint64_t>(mach_float_read(data)); > break; > > case 10: > > do { if (__builtin_expect(!(ulint) (len == sizeof(double)), (0))) { ut_dbg_assertion_failed("len == sizeof(double)", "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic", 209); } } while (0); > value = static_cast<ib_uint64_t>(mach_double_read(data)); > break; > > default: > ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.ic", 214); > > } > > if (!unsigned_type && static_cast<int64_t>(value) < 0) { > value = 0; > } > > return(value); >} ># 417 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" 2 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ins.h" 1 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ins.h" >dberr_t >row_ins_check_foreign_constraint( > > ulint check_ref, > > > dict_foreign_t* foreign, > > > dict_table_t* table, > > dtuple_t* entry, > que_thr_t* thr) > __attribute__((nonnull, warn_unused_result)); > > > >ins_node_t* >ins_node_create( > > ulint ins_type, > dict_table_t* table, > mem_heap_t* heap); > > > > >void >ins_node_set_new_row( > > ins_node_t* node, > dtuple_t* row); ># 84 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ins.h" >dberr_t >row_ins_clust_index_entry_low( > > ulint flags, > ulint mode, > > > dict_index_t* index, > ulint n_uniq, > dtuple_t* entry, > ulint n_ext, > que_thr_t* thr) > __attribute__((warn_unused_result)); ># 106 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ins.h" >dberr_t >row_ins_sec_index_entry_low( > > ulint flags, > ulint mode, > > > dict_index_t* index, > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > dtuple_t* entry, > trx_id_t trx_id, > > que_thr_t* thr) > __attribute__((warn_unused_result)); > > > > > > > >dberr_t >row_ins_clust_index_entry( > > dict_index_t* index, > dtuple_t* entry, > que_thr_t* thr, > ulint n_ext) > __attribute__((warn_unused_result)); > > > > > > >dberr_t >row_ins_sec_index_entry( > > dict_index_t* index, > dtuple_t* entry, > que_thr_t* thr) > __attribute__((warn_unused_result)); > > > > >que_thr_t* >row_ins_step( > > que_thr_t* thr); > > > >struct ins_node_t{ > que_common_t common; > ulint ins_type; > dtuple_t* row; > dict_table_t* table; > sel_node_t* select; > que_node_t* values_list; > > ulint state; > dict_index_t* index; > > dtuple_t* entry; > > > ut_list_base<dtuple_t, ut_list_node<dtuple_t> dtuple_t::*> > entry_list; > > byte sys_buf[6 > + 6 + 7]; > trx_id_t trx_id; > > mem_heap_t* entry_sys_heap; > > > > > ulint magic_n; >}; ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" 1 ># 80 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >static inline >void >page_cur_set_before_first( > > const buf_block_t* block, > page_cur_t* cur); > > > >static inline >void >page_cur_set_after_last( > > const buf_block_t* block, > 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( > > const rec_t* rec, > const buf_block_t* block, > > 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); ># 148 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >static inline >rec_t* >page_cur_tuple_insert( > > page_cur_t* cursor, > const dtuple_t* tuple, > dict_index_t* index, > offset_t** offsets, > mem_heap_t** heap, > ulint n_ext, > mtr_t* mtr, > bool use_cache = false) > > > __attribute__((nonnull(1,2,3,4,5), warn_unused_result)); ># 175 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >static inline >rec_t* >page_cur_rec_insert( > > page_cur_t* cursor, > const rec_t* rec, > dict_index_t* index, > offset_t* offsets, > mtr_t* mtr); > > > > > >rec_t* >page_cur_insert_rec_low( > > rec_t* current_rec, > > dict_index_t* index, > const rec_t* rec, > offset_t* offsets, > mtr_t* mtr) > __attribute__((nonnull(1,2,3,4), warn_unused_result)); ># 212 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >rec_t* >page_cur_insert_rec_zip( > > page_cur_t* cursor, > dict_index_t* index, > const rec_t* rec, > offset_t* offsets, > mtr_t* mtr) > __attribute__((nonnull(1,2,3,4), warn_unused_result)); ># 229 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >void >page_copy_rec_list_end_to_created_page( > > ib_page_t* new_page, > rec_t* rec, > dict_index_t* index, > mtr_t* mtr); > > > >void >page_cur_delete_rec( > > page_cur_t* cursor, > const dict_index_t* index, > const offset_t* offsets, > > mtr_t* mtr); ># 255 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >static inline >ulint >page_cur_search( > const buf_block_t* block, > const dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > page_cur_t* cursor); > > > > > > > >static inline >ulint >page_cur_search( > const buf_block_t* block, > const dict_index_t* index, > const dtuple_t* tuple, > page_cur_t* cursor); > > > >void >page_cur_search_with_match( > > const buf_block_t* block, > const dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > ulint* iup_matched_fields, > > > ulint* ilow_matched_fields, > > > page_cur_t* cursor, > rtr_info_t* rtr_info); ># 312 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" >void >page_cur_search_with_match_bytes( > const buf_block_t* block, > const dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t 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( > > buf_block_t* block, > page_cur_t* cursor); > > > > > > >void >page_cur_insert_rec_write_log( > const rec_t* insert_rec, > ulint rec_size, > const rec_t* cursor_rec, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); > > > >byte* >page_cur_parse_insert_rec( > > ulint is_short, > const byte* ptr, > const byte* end_ptr, > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr); > > > >byte* >page_parse_copy_rec_list_to_created_page( > > byte* ptr, > byte* end_ptr, > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr); > > > >byte* >page_cur_parse_delete_rec( > > byte* ptr, > byte* end_ptr, > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr); > > > > >bool >page_delete_rec( > > const dict_index_t* index, > > page_cur_t* pcur, > > page_zip_des_t* page_zip, > const offset_t* offsets); > > > >struct page_cur_t{ > const dict_index_t* index; > rec_t* rec; > offset_t* offsets; > buf_block_t* block; >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.ic" 1 ># 103 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.ic" >static inline >void >page_cur_set_before_first( > > const buf_block_t* block, > page_cur_t* cur) >{ > cur->block = (buf_block_t*) block; > cur->rec = (((cur->block)->frame) + page_get_infimum_offset((cur->block)->frame)); >} > > > > >static inline >void >page_cur_set_after_last( > > const buf_block_t* block, > page_cur_t* cur) >{ > cur->block = (buf_block_t*) block; > cur->rec = (((cur->block)->frame) + page_get_supremum_offset((cur->block)->frame)); >} > > > > >static inline >ulint >page_cur_is_before_first( > > const page_cur_t* cur) >{ > do { } while(0); > do { } while(0); > return(page_rec_is_infimum(cur->rec)); >} > > > > >static inline >ulint >page_cur_is_after_last( > > const page_cur_t* cur) >{ > do { } while(0); > do { } while(0); > return(page_rec_is_supremum(cur->rec)); >} > > > >static inline >void >page_cur_position( > > const rec_t* rec, > const buf_block_t* block, > > page_cur_t* cur) >{ > do { } while(0); > do { } while(0); > > cur->rec = (rec_t*) rec; > cur->block = (buf_block_t*) block; >} > > > >static inline >void >page_cur_move_to_next( > > page_cur_t* cur) >{ > do { } while(0); > > cur->rec = page_rec_get_next(cur->rec); >} > > > >static inline >void >page_cur_move_to_prev( > > page_cur_t* cur) >{ > do { } while(0); > > cur->rec = page_rec_get_prev(cur->rec); >} ># 207 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.ic" >static inline >ulint >page_cur_search( > const buf_block_t* block, > const dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > page_cur_t* cursor) >{ > ulint low_match = 0; > ulint up_match = 0; > > do { } while(0); > > page_cur_search_with_match(block, index, tuple, mode, > &up_match, &low_match, cursor, __null); > return(low_match); >} > > > > > > > >static inline >ulint >page_cur_search( > const buf_block_t* block, > const dict_index_t* index, > const dtuple_t* tuple, > page_cur_t* cursor) >{ > return(page_cur_search(block, index, tuple, PAGE_CUR_LE, cursor)); >} ># 255 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.ic" >static inline >rec_t* >page_cur_tuple_insert( > > page_cur_t* cursor, > const dtuple_t* tuple, > dict_index_t* index, > offset_t** offsets, > mem_heap_t** heap, > ulint n_ext, > mtr_t* mtr, > bool use_cache) > > >{ > rec_t* rec; > ulint size = rec_get_converted_size(index, tuple, n_ext); > > if (!*heap) { > *heap = mem_heap_create_func((size + (4 + REC_OFFS_HEADER_SIZE + dtuple_get_n_fields(tuple)) * sizeof **offsets), 0) > > > ; > } > > rec = rec_convert_dtuple_to_rec((byte*) mem_heap_alloc(*heap, size), > index, tuple, n_ext); > > *offsets = rec_get_offsets_func(rec, index, *offsets, ((ulint)(-1)), heap) > > ; > > if (((cursor->block)->page.zip.data ? &(cursor->block)->page.zip : __null)) { > rec = page_cur_insert_rec_zip( > cursor, index, rec, *offsets, mtr); > } else { > rec = page_cur_insert_rec_low(cursor->rec, > index, rec, *offsets, mtr); > } > > do { } while(0); > return(rec); >} ># 311 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.ic" >static inline >rec_t* >page_cur_rec_insert( > > page_cur_t* cursor, > const rec_t* rec, > dict_index_t* index, > offset_t* offsets, > mtr_t* mtr) >{ > if (((cursor->block)->page.zip.data ? &(cursor->block)->page.zip : __null)) { > return(page_cur_insert_rec_zip( > cursor, index, rec, offsets, mtr)); > } else { > return(page_cur_insert_rec_low(cursor->rec, > index, rec, offsets, mtr)); > } >} ># 404 "/buildbot/mariadb-10.2.31/storage/innobase/include/page0cur.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" 2 > > > > > >enum { > > BTR_NO_UNDO_LOG_FLAG = 1, > > BTR_NO_LOCKING_FLAG = 2, > > > BTR_KEEP_SYS_FLAG = 4, > > > BTR_KEEP_POS_FLAG = 8, > > > BTR_CREATE_FLAG = 16, > > > > BTR_KEEP_IBUF_BITMAP = 32 >}; > > >struct btr_latch_leaves_t { > > buf_block_t* blocks[3]; > ulint savepoints[3]; >}; > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" 1 ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" >static inline >const rec_t* >ha_search_and_get_data( > > hash_table_t* table, > ulint fold); > > > > >ulint >ha_search_and_update_if_found_func( > > hash_table_t* table, > ulint fold, > const rec_t* data, > > > > const rec_t* new_data); ># 88 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" >hash_table_t* >ib_create( > > ulint n, > latch_id_t id, > ulint n_mutexes, > > ulint type); ># 107 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" >hash_table_t* >ib_recreate( > hash_table_t* table, > ulint n); > > > >void >ha_clear( > > hash_table_t* table); > > > > > > > >ulint >ha_insert_for_fold_func( > > hash_table_t* table, > ulint fold, > > > > > > > const rec_t* data); ># 172 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" >static inline >ulint >ha_search_and_delete_if_found( > > hash_table_t* table, > ulint fold, > const rec_t* data); > > > > >void >ha_remove_all_nodes_to_page( > > hash_table_t* table, > ulint fold, > const ib_page_t* page); ># 202 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" >struct ha_node_t { > ulint fold; > ha_node_t* next; > > > > const rec_t* data; >}; ># 239 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.ic" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.ic" >static inline >const rec_t* >ha_node_get_data( > > const ha_node_t* node) >{ > return(node->data); >} > > > >static inline >void >ha_node_set_data_func( > > ha_node_t* node, > > > > const rec_t* data) >{ > > > > node->data = data; >} ># 79 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.ic" >static inline >ha_node_t* >ha_chain_get_next( > > const ha_node_t* node) >{ > return(node->next); >} > > > > >static inline >ha_node_t* >ha_chain_get_first( > > hash_table_t* table, > ulint fold) >{ > return((ha_node_t*) > hash_get_nth_cell(table, hash_calc_hash(fold, table))->node); >} ># 153 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.ic" >static inline >const rec_t* >ha_search_and_get_data( > > hash_table_t* table, > ulint fold) >{ > ; > do { } while(0); > > for (const ha_node_t* node = ha_chain_get_first(table, fold); > node != __null; > node = ha_chain_get_next(node)) { > > if (node->fold == fold) { > > return(node->data); > } > } > > return(__null); >} > > > > >static inline >ha_node_t* >ha_search_with_data( > > hash_table_t* table, > ulint fold, > const rec_t* data) >{ > ha_node_t* node; > > ; > > do { } while(0); > > node = ha_chain_get_first(table, fold); > > while (node) { > if (node->data == data) { > > return(node); > } > > node = ha_chain_get_next(node); > } > > return(__null); >} > > > >void >ha_delete_hash_node( > > hash_table_t* table, > ha_node_t* del_node); > > > > > >static inline >ulint >ha_search_and_delete_if_found( > > hash_table_t* table, > ulint fold, > const rec_t* data) >{ > ha_node_t* node; > > ; > do { } while(0); > > node = ha_search_with_data(table, fold, data); > > if (node) { > ha_delete_hash_node(table, node); > > return((1)); > } > > return((0)); >} ># 240 "/buildbot/mariadb-10.2.31/storage/innobase/include/ha0ha.h" 2 ># 67 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" 2 ># 101 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >static inline >page_zip_des_t* >btr_cur_get_page_zip( > > btr_cur_t* cursor); > > > >static inline >ib_page_t* >btr_cur_get_page( > > btr_cur_t* cursor); > > > > > > > >static inline >void >btr_cur_position( > > dict_index_t* index, > rec_t* rec, > buf_block_t* block, > btr_cur_t* cursor); ># 139 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >bool >btr_cur_optimistic_latch_leaves( > buf_block_t* block, > ib_uint64_t modify_clock, > ulint* latch_mode, > btr_cur_t* cursor, > const char* file, > unsigned line, > mtr_t* mtr); ># 156 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >dberr_t >btr_cur_search_to_nth_level( > > dict_index_t* index, > ulint level, > const dtuple_t* tuple, > > > page_cur_mode_t mode, > > > > > > > ulint latch_mode, ># 182 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" > btr_cur_t* cursor, > > ulint has_search_latch, > > > > const char* file, > unsigned line, > mtr_t* mtr, > ib_uint64_t autoinc = 0); > > > > > > >dberr_t >btr_cur_open_at_index_side_func( > > bool from_left, > > dict_index_t* index, > ulint latch_mode, > btr_cur_t* cursor, > ulint level, > > const char* file, > unsigned line, > mtr_t* mtr) > __attribute__((nonnull)); ># 220 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >bool >btr_cur_open_at_rnd_pos_func( > > dict_index_t* index, > ulint latch_mode, > btr_cur_t* cursor, > const char* file, > unsigned line, > mtr_t* mtr); ># 238 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >dberr_t >btr_cur_optimistic_insert( > > ulint flags, > > > btr_cur_t* cursor, > > offset_t** offsets, > mem_heap_t** heap, > dtuple_t* entry, > rec_t** rec, > > big_rec_t** big_rec, > > ulint n_ext, > que_thr_t* thr, > > > > mtr_t* mtr) > > > > > > __attribute__((nonnull(2,3,4,5,6,7,10), warn_unused_result)); > > > > > > >dberr_t >btr_cur_pessimistic_insert( > > ulint flags, > > > > > > btr_cur_t* cursor, > > offset_t** offsets, > mem_heap_t** heap, > > dtuple_t* entry, > rec_t** rec, > > big_rec_t** big_rec, > > ulint n_ext, > que_thr_t* thr, > > > > mtr_t* mtr) > __attribute__((nonnull(2,3,4,5,6,7,10), warn_unused_result)); ># 309 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >bool >btr_cur_update_alloc_zip_func( > > page_zip_des_t* page_zip, > page_cur_t* cursor, > dict_index_t* index, > > > > ulint length, > bool create, > > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); ># 336 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >dberr_t >btr_cur_update_in_place( > > ulint flags, > btr_cur_t* cursor, > > > offset_t* offsets, > const upd_t* update, > ulint cmpl_info, > > que_thr_t* thr, > trx_id_t trx_id, > mtr_t* mtr) > > > > __attribute__((warn_unused_result, nonnull)); > > >void >btr_cur_update_in_place_log( > > ulint flags, > const rec_t* rec, > dict_index_t* index, > const upd_t* update, > trx_id_t trx_id, > roll_ptr_t roll_ptr, > mtr_t* mtr) > __attribute__((nonnull)); ># 378 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >dberr_t >btr_cur_optimistic_update( > > ulint flags, > btr_cur_t* cursor, > > > offset_t** offsets, > mem_heap_t** heap, > const upd_t* update, > > ulint cmpl_info, > > que_thr_t* thr, > trx_id_t trx_id, > mtr_t* mtr) > > > > __attribute__((warn_unused_result, nonnull)); > > > > > > >dberr_t >btr_cur_pessimistic_update( > > ulint flags, > > btr_cur_t* cursor, > > > offset_t** offsets, > mem_heap_t** offsets_heap, > > > mem_heap_t* entry_heap, > > > big_rec_t** big_rec, > > upd_t* update, > > > > ulint cmpl_info, > > que_thr_t* thr, > trx_id_t trx_id, > mtr_t* mtr) > > __attribute__((warn_unused_result, nonnull)); > > > > > > >dberr_t >btr_cur_del_mark_set_clust_rec( > > buf_block_t* block, > rec_t* rec, > dict_index_t* index, > const offset_t* offsets, > que_thr_t* thr, > const dtuple_t* entry, > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); > > > >dberr_t >btr_cur_del_mark_set_sec_rec( > > ulint flags, > btr_cur_t* cursor, > ulint val, > que_thr_t* thr, > mtr_t* mtr) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >ulint >btr_cur_compress_if_useful( > > btr_cur_t* cursor, > > > ulint adjust, > > mtr_t* mtr) > __attribute__((nonnull)); > > > > > >ulint >btr_cur_optimistic_delete_func( > > btr_cur_t* cursor, > > > > > > > mtr_t* mtr) > > > > __attribute__((nonnull, warn_unused_result)); ># 513 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >ulint >btr_cur_pessimistic_delete( > > dberr_t* err, > > > > > ulint has_reserved_extents, > > > > btr_cur_t* cursor, > > > > ulint flags, > bool rollback, > mtr_t* mtr) > __attribute__((nonnull)); > > > >void btr_cur_node_ptr_delete(btr_cur_t* parent, mtr_t* mtr) > __attribute__((nonnull)); > > > >byte* >btr_cur_parse_update_in_place( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip, > dict_index_t* index); > > > > >byte* >btr_cur_parse_del_mark_set_clust_rec( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip, > dict_index_t* index); > > > > >byte* >btr_cur_parse_del_mark_set_sec_rec( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > page_zip_des_t* page_zip); ># 580 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >int64_t >btr_estimate_n_rows_in_range( > dict_index_t* index, > const dtuple_t* tuple1, > page_cur_mode_t mode1, > const dtuple_t* tuple2, > page_cur_mode_t mode2); ># 599 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >bool >btr_estimate_number_of_different_key_vals( > > dict_index_t* index); > > > > > >ulint >btr_rec_get_externally_stored_len( > const rec_t* rec, > const offset_t* offsets); > > > > > > >void >btr_cur_disown_inherited_fields( > > page_zip_des_t* page_zip, > > rec_t* rec, > dict_index_t* index, > const offset_t* offsets, > const upd_t* update, > mtr_t* mtr) > __attribute__((nonnull(2,3,4,5,6))); > > >enum blob_op { > > BTR_STORE_INSERT = 0, > > BTR_STORE_INSERT_UPDATE, > > BTR_STORE_UPDATE, > > BTR_STORE_INSERT_BULK >}; > > > > >static inline >ulint >btr_blob_op_is_update( > > enum blob_op op) > __attribute__((warn_unused_result)); > > > > > > > >dberr_t >btr_store_big_rec_extern_fields( > > btr_pcur_t* pcur, > > > offset_t* offsets, > > > > const big_rec_t*big_rec_vec, > > mtr_t* btr_mtr, > > > enum blob_op op) > __attribute__((warn_unused_result)); > > > > > > >void >btr_free_externally_stored_field( > > dict_index_t* index, > > > > > > > > byte* field_ref, > const rec_t* rec, > > const offset_t* offsets, > > page_zip_des_t* page_zip, > > ulint i, > > bool rollback, > mtr_t* local_mtr); ># 714 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >ulint >btr_copy_externally_stored_field_prefix( > byte* buf, > ulint len, > const page_size_t& page_size, > const byte* data, > ulint local_len); ># 732 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >byte* >btr_copy_externally_stored_field( > ulint* len, > const byte* data, > const page_size_t& page_size, > ulint local_len, > mem_heap_t* heap); ># 749 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >byte* >btr_rec_copy_externally_stored_field( > const rec_t* rec, > const offset_t* offsets, > const page_size_t& page_size, > ulint no, > ulint* len, > mem_heap_t* heap); > > > > > > >ulint >btr_push_update_extern_fields( > > dtuple_t* tuple, > const upd_t* update, > mem_heap_t* heap) > __attribute__((nonnull)); > > > >void >btr_cur_set_deleted_flag_for_ibuf( > > rec_t* rec, > page_zip_des_t* page_zip, > > > ulint val, > mtr_t* mtr); > > > >static inline >void >btr_rec_set_deleted_flag( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint flag); ># 800 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >btr_latch_leaves_t >btr_cur_latch_leaves( > buf_block_t* block, > const page_id_t page_id, > const page_size_t& page_size, > ulint latch_mode, > btr_cur_t* cursor, > mtr_t* mtr); ># 818 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >struct btr_path_t { ># 828 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" > ulint nth_rec; > > > > ulint n_recs; > > > ulint page_no; > > > > > ulint page_level; >}; > > > > >enum btr_cur_method { > BTR_CUR_HASH = 1, > > BTR_CUR_HASH_FAIL, > > > > > BTR_CUR_BINARY, > BTR_CUR_INSERT_TO_IBUF, > > BTR_CUR_DEL_MARK_IBUF, > > BTR_CUR_DELETE_IBUF, > > BTR_CUR_DELETE_REF >}; > > > >struct btr_cur_t { > dict_index_t* index; > page_cur_t page_cur; > purge_node_t* purge_node; > buf_block_t* left_block; > > > > > > que_thr_t* thr; ># 886 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" > enum btr_cur_method flag; > ulint tree_height; > > > ulint up_match; ># 904 "/buildbot/mariadb-10.2.31/storage/innobase/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; > > > > rtr_info_t* rtr_info; > btr_cur_t():thr(__null), rtr_info(__null) {} > > > void init() > { > index = __null; > memset(&page_cur, 0, sizeof page_cur); > purge_node = __null; > left_block = __null; > thr = __null; > flag = btr_cur_method(0); > tree_height = 0; > up_match = 0; > up_bytes = 0; > low_match = 0; > low_bytes = 0; > n_fields = 0; > n_bytes = 0; > fold = 0; > path_arr = __null; > rtr_info = __null; > } >}; > > > >static inline >void >btr_rec_set_deleted_flag( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint flag); ># 1007 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" >extern ulint btr_cur_n_non_sea; > > > >extern ulint btr_cur_n_non_sea_old; > > > >extern ulint btr_cur_n_sea; > > > >extern ulint btr_cur_n_sea_old; > > > > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.ic" 1 ># 27 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" 1 ># 54 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >enum btr_latch_mode { > > BTR_SEARCH_LEAF = RW_S_LATCH, > > BTR_MODIFY_LEAF = RW_X_LATCH, > > BTR_NO_LATCHES = RW_NO_LATCH, > > BTR_MODIFY_TREE = 33, > > BTR_CONT_MODIFY_TREE = 34, > > BTR_SEARCH_PREV = 35, > > BTR_MODIFY_PREV = 36, > > BTR_SEARCH_TREE = 37, > > BTR_CONT_SEARCH_TREE = 38, > > > > > > > BTR_INSERT = 512, > > > > > BTR_DELETE_MARK = 4096, > > > > BTR_DELETE = 8192, > > > BTR_ALREADY_S_LATCHED = 16384, > > > BTR_SEARCH_LEAF_ALREADY_S_LATCHED = BTR_SEARCH_LEAF > | BTR_ALREADY_S_LATCHED, > > > BTR_SEARCH_TREE_ALREADY_S_LATCHED = BTR_SEARCH_TREE > | BTR_ALREADY_S_LATCHED, > > > BTR_MODIFY_LEAF_ALREADY_S_LATCHED = BTR_MODIFY_LEAF > | BTR_ALREADY_S_LATCHED, > > > BTR_DELETE_MARK_LEAF = BTR_MODIFY_LEAF | BTR_DELETE_MARK, > > > BTR_DELETE_MARK_LEAF_ALREADY_S_LATCHED = BTR_DELETE_MARK_LEAF > | BTR_ALREADY_S_LATCHED, > > BTR_PURGE_LEAF = BTR_MODIFY_LEAF | BTR_DELETE, > > > BTR_PURGE_LEAF_ALREADY_S_LATCHED = BTR_PURGE_LEAF > | BTR_ALREADY_S_LATCHED, > > > > > BTR_LATCH_FOR_DELETE = 65536, > > > BTR_PURGE_TREE = BTR_MODIFY_TREE | BTR_LATCH_FOR_DELETE >}; ># 172 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >void >btr_corruption_report( > > const buf_block_t* block, > const dict_index_t* index) > __attribute__((cold)) __attribute__((nonnull)); ># 192 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >ib_page_t* >btr_root_get( > > const dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); > > > > >dberr_t >btr_root_adjust_on_import( > > const dict_index_t* index) > __attribute__((warn_unused_result)); > > > > > > >ulint >btr_height_get( > > dict_index_t* index, > mtr_t* mtr) > __attribute__((warn_unused_result)); ># 229 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >static inline >buf_block_t* >btr_block_get_func( > const page_id_t page_id, > const page_size_t& page_size, > ulint mode, > const char* file, > unsigned line, > dict_index_t* index, > mtr_t* mtr); ># 253 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >static inline >index_id_t >btr_page_get_index_id( > > const ib_page_t* page) > __attribute__((warn_unused_result)); > > > >static inline >ulint >btr_page_get_level_low( > > const ib_page_t* page) > __attribute__((warn_unused_result)); > > > > > >inline uint32_t btr_page_get_next(const ib_page_t* page) >{ > return mach_read_from_4(page + 12); >} > > > > >inline uint32_t btr_page_get_prev(const ib_page_t* page) >{ > return mach_read_from_4(page + 8); >} > > > >static inline >void >btr_leaf_page_release( > > buf_block_t* block, > ulint latch_mode, > > mtr_t* mtr) > __attribute__((nonnull)); > > > > > > > >static inline >ulint >btr_node_ptr_get_child_page_no( > > const rec_t* rec, > const offset_t* offsets) > __attribute__((warn_unused_result)); ># 323 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >ulint >btr_create( > ulint type, > ulint space, > const page_size_t& page_size, > index_id_t index_id, > dict_index_t* index, > const btr_create_t* btr_redo_create_info, > mtr_t* mtr); > > > > > > >void >btr_free_if_exists( > const page_id_t page_id, > const page_size_t& page_size, > index_id_t index_id, > mtr_t* mtr); > > > > >void >btr_free( > const page_id_t page_id, > const page_size_t& page_size); > > > > > >ib_uint64_t >btr_read_autoinc(dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >ib_uint64_t >btr_read_autoinc_with_fallback(const dict_table_t* table, unsigned col_no) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >void >btr_write_autoinc(dict_index_t* index, ib_uint64_t autoinc, bool reset = false) > __attribute__((nonnull)); ># 388 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >rec_t* >btr_root_raise_and_insert( > > ulint flags, > btr_cur_t* cursor, > > > > offset_t** offsets, > mem_heap_t** heap, > > const dtuple_t* tuple, > ulint n_ext, > mtr_t* mtr) > __attribute__((warn_unused_result)); ># 414 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >bool >btr_page_reorganize_low( > > bool recovery, > > > > > ulint z_level, > > page_cur_t* cursor, > dict_index_t* index, > mtr_t* mtr) > __attribute__((warn_unused_result)); ># 439 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >bool >btr_page_reorganize( > > page_cur_t* cursor, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); > > > > > >rec_t* btr_page_get_split_rec_to_left(const btr_cur_t* cursor); ># 460 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >bool >btr_page_get_split_rec_to_right(const btr_cur_t* cursor, rec_t** split_rec); ># 472 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >rec_t* >btr_page_split_and_insert( > > ulint flags, > btr_cur_t* cursor, > > > offset_t** offsets, > mem_heap_t** heap, > > const dtuple_t* tuple, > ulint n_ext, > mtr_t* mtr) > __attribute__((warn_unused_result)); > > > >void >btr_insert_on_non_leaf_level_func( > > ulint flags, > dict_index_t* index, > ulint level, > dtuple_t* tuple, > const char* file, > unsigned line, > mtr_t* mtr); > > > > >void btr_set_min_rec_mark(rec_t* rec, mtr_t* mtr) __attribute__((nonnull)); > > > > > > >void btr_page_get_father(dict_index_t* index, buf_block_t* block, mtr_t* mtr, > btr_cur_t* cursor) > __attribute__((nonnull)); ># 535 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >ulint >btr_compress( > > btr_cur_t* cursor, > > > > ulint adjust, > > mtr_t* mtr) > __attribute__((nonnull)); > > > > >void >btr_discard_page( > > btr_cur_t* cursor, > > mtr_t* mtr); > > > > >byte* >btr_parse_set_min_rec_mark( > > byte* ptr, > byte* end_ptr, > ulint comp, > ib_page_t* page, > mtr_t* mtr) > __attribute__((nonnull(1,2), warn_unused_result)); > > > >byte* >btr_parse_page_reorganize( > > byte* ptr, > byte* end_ptr, > dict_index_t* index, > bool compressed, > buf_block_t* block, > mtr_t* mtr) > __attribute__((warn_unused_result)); > > > >ulint >btr_get_size( > > dict_index_t* index, > ulint flag, > mtr_t* mtr) > > __attribute__((warn_unused_result)); > > > > >__attribute__((visibility ("hidden"))) >ulint >btr_get_size_and_reserved( > > dict_index_t* index, > ulint flag, > ulint* used, > mtr_t* mtr) > > __attribute__((nonnull)); ># 615 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >buf_block_t* >btr_page_alloc( > > dict_index_t* index, > ulint hint_page_no, > byte file_direction, > > ulint level, > > mtr_t* mtr, > > mtr_t* init_mtr) > > > __attribute__((warn_unused_result)); > > > >void >btr_page_create( > > buf_block_t* block, > page_zip_des_t* page_zip, > dict_index_t* index, > ulint level, > mtr_t* mtr); > > > > > > >__attribute__((nonnull)) >void btr_page_free(dict_index_t* index, buf_block_t* block, mtr_t* mtr, > bool blob = false); > > > > >buf_block_t* >btr_root_block_get( > > const dict_index_t* index, > ulint mode, > > mtr_t* mtr); ># 673 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >__attribute__((visibility ("hidden"))) >bool >btr_page_reorganize_block( > > bool recovery, > > > > > ulint z_level, > > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr) > __attribute__((nonnull)); ># 711 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >ulint >btr_index_rec_validate( > > const rec_t* rec, > const dict_index_t* index, > ulint dump_on_error) > > > __attribute__((warn_unused_result)); > > > >dberr_t >btr_validate_index( > > dict_index_t* index, > const trx_t* trx, > bool lockout) > __attribute__((warn_unused_result)); > > > >__attribute__((visibility ("hidden"))) >void >btr_level_list_remove_func( > > ulint space, > const page_size_t& page_size, > ib_page_t* page, > dict_index_t* index, > mtr_t* mtr); ># 756 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" >__attribute__((visibility ("hidden"))) >buf_block_t* >btr_lift_page_up( > > dict_index_t* index, > buf_block_t* block, > > > > mtr_t* mtr) > __attribute__((nonnull)); > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.ic" 1 ># 47 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.ic" >static inline >buf_block_t* >btr_block_get_func( > const page_id_t page_id, > const page_size_t& page_size, > ulint mode, > const char* file, > unsigned line, > dict_index_t* index, > mtr_t* mtr) >{ > buf_block_t* block; > dberr_t err=DB_SUCCESS; > > block = buf_page_get_gen( > page_id, page_size, mode, __null, 10, file, line, mtr, &err); > > if (err == DB_DECRYPTION_FAILED) { > if (index && index->table) { > index->table->file_unreadable = true; > } > } > > if (block) { > if (mode != RW_NO_LATCH) { > > > > ; > } > } > > return(block); >} > > > >static inline >void >btr_page_set_index_id( > > ib_page_t* page, > page_zip_des_t* page_zip, > > index_id_t id, > mtr_t* mtr) >{ > if (page_zip) { > mach_write_to_8(page + (38U + 28), id); > page_zip_write_header(page_zip, > page + (38U + 28), > 8, mtr); > } else { > mlog_write_ull(page + (38U + 28), id, mtr); > } >} > > > > >static inline >index_id_t >btr_page_get_index_id( > > const ib_page_t* page) >{ > return(mach_read_from_8(page + 38U + 28)); >} > > > > >static inline >ulint >btr_page_get_level_low( > > const ib_page_t* page) >{ > ulint level; > > do { } while(0); > > level = mach_read_from_2(page + 38U + 26); > > do { } while(0); > > return(level); >} > > > >static inline >void >btr_page_set_level( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint level, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > do { } while(0); > > if (page_zip) { > mach_write_to_2(page + (38U + 26), level); > page_zip_write_header(page_zip, > page + (38U + 26), > 2, mtr); > } else { > mlog_write_ulint(page + (38U + 26), level, > MLOG_2BYTES, mtr); > } >} > > > >static inline >void >btr_page_set_next( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint next, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > if (page_zip) { > mach_write_to_4(page + 12, next); > page_zip_write_header(page_zip, page + 12, 4, mtr); > } else { > mlog_write_ulint(page + 12, next, MLOG_4BYTES, mtr); > } >} > > > >static inline >void >btr_page_set_prev( > > ib_page_t* page, > page_zip_des_t* page_zip, > > ulint prev, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > if (page_zip) { > mach_write_to_4(page + 8, prev); > page_zip_write_header(page_zip, page + 8, 4, mtr); > } else { > mlog_write_ulint(page + 8, prev, MLOG_4BYTES, mtr); > } >} ># 216 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.ic" >static inline >ulint >btr_node_ptr_get_child_page_no( > > const rec_t* rec, > const offset_t* offsets) >{ > const byte* field; > ulint len; > ulint page_no; > > do { } while(0); > > > field = ((rec) + rec_get_nth_field_offs(offsets, rec_offs_n_fields(offsets) - 1, &len)) > ; > > do { } while(0); > > page_no = mach_read_from_4(field); > do { } while(0); > > return(page_no); >} > > > >static inline >void >btr_leaf_page_release( > > buf_block_t* block, > ulint latch_mode, > > mtr_t* mtr) >{ > do { } while(0) > > ; > > do { } while(0); > > ulint mode; > switch (latch_mode) { > case BTR_SEARCH_LEAF: > mode = MTR_MEMO_PAGE_S_FIX; > break; > case BTR_MODIFY_LEAF: > mode = MTR_MEMO_PAGE_X_FIX; > break; > case BTR_NO_LATCHES: > mode = MTR_MEMO_BUF_FIX; > break; > default: > do { if (__builtin_expect(!(ulint) (0), (0))) { ut_dbg_assertion_failed("0", "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.ic", 270); } } while (0); > } > > mtr->memo_release(block, mode); >} ># 772 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0btr.h" 2 > > > >extern my_bool srv_immediate_scrub_data_uncompressed; ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.ic" 2 ># 80 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.ic" >static inline >page_zip_des_t* >btr_cur_get_page_zip( > > btr_cur_t* cursor) >{ > return(((((cursor)->page_cur.block))->page.zip.data ? &(((cursor)->page_cur.block))->page.zip : __null)); >} > > > > >static inline >ib_page_t* >btr_cur_get_page( > > btr_cur_t* cursor) >{ > return(page_align((&(cursor->page_cur))->rec)); >} > > > >static inline >void >btr_cur_position( > > dict_index_t* index, > rec_t* rec, > buf_block_t* block, > btr_cur_t* cursor) >{ > do { } while(0); > > page_cur_position(rec, block, (&(cursor)->page_cur)); > > cursor->index = index; >} > > > > > >static inline >ulint >btr_cur_compress_recommendation( > > btr_cur_t* cursor, > mtr_t* mtr) >{ > const ib_page_t* page; > > do { } while(0) > > ; > > page = btr_cur_get_page(cursor); > > > ; > > if (page_get_data_size(page) > < ((((ulint) srv_page_size) * (ulint)((cursor->index)->merge_threshold)) / 100) > || !page_has_siblings(page)) { > > > > > > > return(dict_index_get_page(cursor->index) > != page_get_page_no(page)); > } > > 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; > > do { } while(0) > ; > > page = btr_cur_get_page(cursor); > > if (page_get_data_size(page) - rec_size > < ((((ulint) srv_page_size) * (ulint)((cursor->index)->merge_threshold)) / 100) > || !page_has_siblings(page) || page_get_n_recs(page) < 2) { > > > > > > > return(dict_index_get_page(cursor->index) > == page_get_page_no(page)); > } > > return((1)); >} > > > > >static inline >ulint >btr_blob_op_is_update( > > enum blob_op op) >{ > switch (op) { > case BTR_STORE_INSERT: > case BTR_STORE_INSERT_BULK: > return((0)); > case BTR_STORE_INSERT_UPDATE: > case BTR_STORE_UPDATE: > return((1)); > } > > do { } while(0); > return((0)); >} > > > >static inline >void >btr_rec_set_deleted_flag( > > rec_t* rec, > page_zip_des_t* page_zip, > ulint flag) >{ > if (page_rec_is_comp(rec)) { > rec_set_deleted_flag_new(rec, page_zip, flag); > } else { > do { } while(0); > rec_set_deleted_flag_old(rec, flag); > } >} ># 1028 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0cur.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.h" 1 ># 65 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.h" >dtuple_t* >rtr_index_build_node_ptr( > > const dict_index_t* index, > const rtr_mbr_t* mbr, > const rec_t* rec, > > ulint page_no, > > mem_heap_t* heap, > > ulint level); ># 87 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.h" >rec_t* >rtr_page_split_and_insert( > > ulint flags, > btr_cur_t* cursor, > > > offset_t** offsets, > mem_heap_t** heap, > const dtuple_t* tuple, > ulint n_ext, > mtr_t* mtr); > > > >static inline >void >rtr_page_cal_mbr( > > const dict_index_t* index, > const buf_block_t* block, > rtr_mbr_t* mbr, > mem_heap_t* heap); > > > > > > > >bool >rtr_pcur_move_to_next( > > const dtuple_t* tuple, > > > page_cur_mode_t mode, > btr_pcur_t* cursor, > > ulint cur_level, > > mtr_t* mtr); > > > >bool >rtr_cur_search_with_match( > > const buf_block_t* block, > dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > page_cur_t* cursor, > rtr_info_t* rtr_info); > > > > >double >rtr_rec_cal_increase( > > const dtuple_t* dtuple, > > const rec_t* rec, > > > > const offset_t* offsets, > double* area); > > > > >dberr_t >rtr_ins_enlarge_mbr( > > btr_cur_t* cursor, > que_thr_t* thr, > mtr_t* mtr); > > > >void >rtr_get_father_node( > > dict_index_t* index, > ulint level, > const dtuple_t* tuple, > > > btr_cur_t* sea_cur, > btr_cur_t* cursor, > > ulint page_no, > mtr_t* mtr); > > > >static inline >void >rtr_non_leaf_stack_push( > > rtr_node_path_t* path, > ulint pageno, > node_seq_t seq_no, > ulint level, > ulint child_no, > btr_pcur_t* cursor, > double mbr_inc); > > > > >void >rtr_non_leaf_insert_stack_push( > > dict_index_t* index, > rtr_node_path_t* path, > ulint level, > const buf_block_t* block, > const rec_t* rec, > double mbr_inc); > > > > > >static inline >node_seq_t >rtr_get_new_ssn_id( > > dict_index_t* index); > > > > >static inline >node_seq_t >rtr_get_current_ssn_id( > > dict_index_t* index); > > > >rtr_info_t* >rtr_create_rtr_info( > > bool need_prdt, > > bool init_matches, > > > btr_cur_t* cursor, > dict_index_t* index); > > > >void >rtr_info_update_btr( > > btr_cur_t* cursor, > rtr_info_t* rtr_info); > > > > >void >rtr_init_rtr_info( > > rtr_info_t* rtr_info, > > bool need_prdt, > > btr_cur_t* cursor, > dict_index_t* index, > bool reinit); > > > >void >rtr_clean_rtr_info( > > rtr_info_t* rtr_info, > bool free_all); > > > >void >rtr_get_mbr_from_rec( > > const rec_t* rec, > const offset_t* offsets, > rtr_mbr_t* mbr); > > > >void >rtr_get_mbr_from_tuple( > > const dtuple_t* dtuple, > rtr_mbr* mbr); ># 300 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.h" >void >rtr_page_get_father( > dict_index_t* index, > buf_block_t* block, > mtr_t* mtr, > btr_cur_t* sea_cur, > btr_cur_t* cursor); > > > > > >offset_t* >rtr_page_get_father_block( > > offset_t* offsets, > mem_heap_t* heap, > dict_index_t* index, > buf_block_t* block, > mtr_t* mtr, > btr_cur_t* sea_cur, > > btr_cur_t* cursor); > > > > >ulint >rtr_store_parent_path( > > const buf_block_t* block, > btr_cur_t* btr_cur, > ulint latch_mode, > > ulint level, > mtr_t* mtr); > > > > >void >rtr_pcur_open_low( > > dict_index_t* index, > ulint level, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > > > > ulint latch_mode, > btr_pcur_t* cursor, > const char* file, > unsigned line, > mtr_t* mtr); > > > > >struct btr_cur_t; > > > > >static inline >node_visit_t* >rtr_get_parent_node( > > btr_cur_t* btr_cur, > ulint level, > ulint is_insert); > > > > >static inline >btr_pcur_t* >rtr_get_parent_cursor( > > btr_cur_t* btr_cur, > ulint level, > ulint is_insert); > > > >void >rtr_page_copy_rec_list_end_no_locks( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* rec, > dict_index_t* index, > mem_heap_t* heap, > rtr_rec_move_t* rec_move, > ulint max_move, > ulint* num_moved, > mtr_t* mtr); > > > >void >rtr_page_copy_rec_list_start_no_locks( > > buf_block_t* new_block, > buf_block_t* block, > rec_t* rec, > dict_index_t* index, > mem_heap_t* heap, > rtr_rec_move_t* rec_move, > ulint max_move, > ulint* num_moved, > mtr_t* mtr); > > > >dberr_t >rtr_merge_and_update_mbr( > > btr_cur_t* cursor, > btr_cur_t* cursor2, > offset_t* offsets, > offset_t* offsets2, > ib_page_t* child_page, > buf_block_t* merge_block, > buf_block_t* block, > dict_index_t* index, > mtr_t* mtr); > > > >void >rtr_node_ptr_delete( > > dict_index_t* index, > btr_cur_t* sea_cur, > > buf_block_t* block, > mtr_t* mtr); > > > >bool >rtr_merge_mbr_changed( > > btr_cur_t* cursor, > btr_cur_t* cursor2, > offset_t* offsets, > offset_t* offsets2, > rtr_mbr_t* new_mbr, > buf_block_t* merge_block, > buf_block_t* block, > dict_index_t* index); > > > > > >bool >rtr_update_mbr_field( > > btr_cur_t* cursor, > offset_t* offsets, > btr_cur_t* cursor2, > > > > ib_page_t* child_page, > rtr_mbr_t* new_mbr, > rec_t* new_rec, > mtr_t* mtr); > > > > >bool >rtr_check_same_block( > > dict_index_t* index, > btr_cur_t* cur, > > buf_block_t* parentb, > buf_block_t* childb, > mem_heap_t* heap); > > > >static inline >void >rtr_write_mbr( > > byte* data, > const rtr_mbr_t* mbr); > > > >static inline >void >rtr_read_mbr( > > const byte* data, > rtr_mbr_t* mbr); > > > >void >rtr_check_discard_page( > > dict_index_t* index, > btr_cur_t* cursor, > > buf_block_t* block); > > > >static inline >void >rtr_info_reinit_in_cursor( > > btr_cur_t* cursor, > dict_index_t* index, > bool need_prdt); > > > > > > > >int64_t >rtr_estimate_n_rows_in_range( > dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode); > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.ic" >static inline >void >rtr_page_cal_mbr( > > const dict_index_t* index, > const buf_block_t* block, > rtr_mbr_t* rtr_mbr, > mem_heap_t* heap) > >{ > ib_page_t* page; > rec_t* rec; > byte* field; > ulint len; > offset_t* offsets = __null; > double bmin, bmax; > double* amin; > double* amax; > ulint inc = 0; > double* mbr; > > rtr_mbr->xmin = double(1.79769313486231570814527423731704357e+308L); > rtr_mbr->ymin = double(1.79769313486231570814527423731704357e+308L); > rtr_mbr->xmax = -double(1.79769313486231570814527423731704357e+308L); > rtr_mbr->ymax = -double(1.79769313486231570814527423731704357e+308L); > > mbr = reinterpret_cast<double*>(rtr_mbr); > > page = (block)->frame; > > rec = page_rec_get_next(((page) + page_get_infimum_offset(page))); > offsets = rec_get_offsets_func(rec, index, offsets, ((ulint)(-1)), &heap) > ; > > do { > > field = ((rec) + rec_get_nth_field_offs(offsets, 0, &len)); > > do { } while(0); > inc = 0; > for (unsigned i = 0; i < 2; i++) { > bmin = mach_double_read(field + inc); > bmax = mach_double_read(field + inc + sizeof(double)); > > amin = mbr + i * 2; > amax = mbr + i * 2 + 1; > > if (*amin > bmin) > *amin = bmin; > if (*amax < bmax) > *amax = bmax; > > inc += 2 * sizeof(double); > } > > rec = page_rec_get_next(rec); > > if (rec == __null) { > break; > } > } while (!page_rec_is_supremum(rec)); >} > > > >static inline >void >rtr_non_leaf_stack_push( > > rtr_node_path_t* path, > ulint pageno, > node_seq_t seq_no, > ulint level, > ulint child_no, > btr_pcur_t* cursor, > double mbr_inc) > >{ > node_visit_t insert_val; > > insert_val.page_no = pageno; > insert_val.seq_no = seq_no; > insert_val.level = level; > insert_val.child_no = child_no; > insert_val.cursor = cursor; > insert_val.mbr_inc = mbr_inc; > > path->push_back(insert_val); > > > > > > > >} > > > > >static inline >node_seq_t >rtr_get_new_ssn_id( > > dict_index_t* index) >{ > node_seq_t ssn; > > (&(index->rtr_ssn.mutex))->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.ic", 137); > ssn = ++index->rtr_ssn.seq_no; > (&(index->rtr_ssn.mutex))->exit(); > > return(ssn); >} > > > >static inline >node_seq_t >rtr_get_current_ssn_id( > > dict_index_t* index) >{ > node_seq_t ssn; > > (&(index->rtr_ssn.mutex))->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.ic", 154); > ssn = index->rtr_ssn.seq_no; > (&(index->rtr_ssn.mutex))->exit(); > > return(ssn); >} > > > >static inline >void >rtr_write_mbr( > > byte* data, > const rtr_mbr_t* mbr) >{ > const double* my_mbr = reinterpret_cast<const double*>(mbr); > > for (unsigned i = 0; i < 2 * 2; i++) { > mach_double_write(data + i * sizeof(double), my_mbr[i]); > } >} > > > >static inline >void >rtr_read_mbr( > > const byte* data, > rtr_mbr_t* mbr) >{ > for (unsigned i = 0; i < 2 * 2; i++) { > (reinterpret_cast<double*>(mbr))[i] = mach_double_read( > data > + i * sizeof(double)); > } >} > > > > > >static inline >node_visit_t* >rtr_get_parent_node( > > btr_cur_t* btr_cur, > ulint level, > ulint is_insert) >{ > ulint num; > ulint tree_height = btr_cur->tree_height; > node_visit_t* found_node = __null; > > if (level >= tree_height) { > return(__null); > } > > (&btr_cur->rtr_info->rtr_path_mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.ic", 213); > > num = btr_cur->rtr_info->parent_path->size(); > > if (!num) { > (&btr_cur->rtr_info->rtr_path_mutex)->exit(); > return(__null); > } > > if (is_insert) { > ulint idx = tree_height - level - 1; > do { } while(0); > > found_node = &(*btr_cur->rtr_info->parent_path)[idx]; > } else { > node_visit_t* node; > > while (num > 0) { > node = &(*btr_cur->rtr_info->parent_path)[num - 1]; > > if (node->level == level) { > found_node = node; > break; > } > num--; > } > } > > (&btr_cur->rtr_info->rtr_path_mutex)->exit(); > > return(found_node); >} > > > > >static inline >btr_pcur_t* >rtr_get_parent_cursor( > > btr_cur_t* btr_cur, > ulint level, > ulint is_insert) >{ > node_visit_t* found_node = rtr_get_parent_node( > btr_cur, level, is_insert); > > return((found_node) ? found_node->cursor : __null); >} > > > >static inline >void >rtr_info_reinit_in_cursor( > > btr_cur_t* cursor, > dict_index_t* index, > bool need_prdt) > >{ > rtr_clean_rtr_info(cursor->rtr_info, false); > rtr_init_rtr_info(cursor->rtr_info, need_prdt, cursor, index, true); >} ># 537 "/buildbot/mariadb-10.2.31/storage/innobase/include/gis0rtree.h" 2 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" 2 > > >enum btr_pcur_pos_t { > BTR_PCUR_ON = 1, > BTR_PCUR_BEFORE = 2, > BTR_PCUR_AFTER = 3, > > > > > BTR_PCUR_BEFORE_FIRST_IN_TREE = 4, > BTR_PCUR_AFTER_LAST_IN_TREE = 5 >}; > > > > >btr_pcur_t* >btr_pcur_create_for_mysql(void); > > > > > >void >btr_pcur_reset( > > btr_pcur_t* cursor); > > > >void >btr_pcur_free_for_mysql( > > btr_pcur_t* cursor); > > >void >btr_pcur_copy_stored_position( > > btr_pcur_t* pcur_receive, > > btr_pcur_t* pcur_donate); > > > >static inline >void >btr_pcur_init( > > btr_pcur_t* pcur); > > > >static inline >void >btr_pcur_free( > btr_pcur_t* pcur); > > > > >static inline >dberr_t >btr_pcur_open_low( > > dict_index_t* index, > ulint level, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > > > > ulint latch_mode, > btr_pcur_t* cursor, > const char* file, > unsigned line, > ib_uint64_t autoinc, > > mtr_t* mtr); > > > > > >static inline >dberr_t >btr_pcur_open_with_no_init_func( > > dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > > > > ulint latch_mode, > > > > > btr_pcur_t* cursor, > ulint has_search_latch, > > > > const char* file, > unsigned line, > mtr_t* mtr); > > > > > >static inline >dberr_t >btr_pcur_open_at_index_side( > > bool from_left, > > dict_index_t* index, > ulint latch_mode, > btr_pcur_t* pcur, > bool init_pcur, > ulint level, > > mtr_t* mtr) > __attribute__((nonnull)); > > > > >static inline >ulint >btr_pcur_get_up_match( > > const btr_pcur_t* cursor); > > > > >static inline >ulint >btr_pcur_get_low_match( > > const btr_pcur_t* cursor); > > > > > > > >void >btr_pcur_open_on_user_rec_func( > > dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > ulint latch_mode, > > btr_pcur_t* cursor, > > const char* file, > unsigned line, > mtr_t* mtr); > > > > > > >static inline >bool >btr_pcur_open_at_rnd_pos_func( > > dict_index_t* index, > ulint latch_mode, > btr_pcur_t* cursor, > const char* file, > unsigned line, > mtr_t* mtr); ># 233 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" >static inline >void >btr_pcur_close( > > btr_pcur_t* cursor); > > > > > > > >void >btr_pcur_store_position( > > btr_pcur_t* cursor, > mtr_t* mtr); ># 265 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" >ulint >btr_pcur_restore_position_func( > > ulint latch_mode, > btr_pcur_t* cursor, > const char* file, > unsigned line, > mtr_t* mtr); > > > > > >static inline >ulint >btr_pcur_get_rel_pos( > > const btr_pcur_t* cursor); > > > > > >static inline >void >btr_pcur_commit_specify_mtr( > > btr_pcur_t* pcur, > mtr_t* mtr); ># 302 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" >static inline >void >btr_pcurs_commit_specify_mtr( > btr_pcur_t* pcur, > btr_pcur_t* sec_pcur, > mtr_t* mtr); > > > > > >static inline >ulint >btr_pcur_move_to_next( > > btr_pcur_t* cursor, > > mtr_t* mtr); > > > > >ulint >btr_pcur_move_to_prev( > > btr_pcur_t* cursor, > > mtr_t* mtr); > > > > >static inline >ulint >btr_pcur_move_to_next_user_rec( > > btr_pcur_t* cursor, > > mtr_t* mtr); > > > > > >void >btr_pcur_move_to_next_page( > > btr_pcur_t* cursor, > > mtr_t* mtr); ># 402 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" >static inline >ulint >btr_pcur_is_on_user_rec( > > const btr_pcur_t* cursor); > > > >static inline >ulint >btr_pcur_is_after_last_on_page( > > const btr_pcur_t* cursor); > > > >static inline >ulint >btr_pcur_is_before_first_on_page( > > const btr_pcur_t* cursor); > > > >static inline >ulint >btr_pcur_is_before_first_in_tree( > > btr_pcur_t* cursor, > mtr_t* mtr); > > > >static inline >ulint >btr_pcur_is_after_last_in_tree( > > btr_pcur_t* cursor, > mtr_t* mtr); > > >static inline >void >btr_pcur_move_to_next_on_page( > > btr_pcur_t* cursor); > > >static inline >void >btr_pcur_move_to_prev_on_page( > > btr_pcur_t* cursor); > > >static inline >void >btr_pcur_move_before_first_on_page( > > btr_pcur_t* cursor); > > >enum pcur_pos_t { > > BTR_PCUR_NOT_POSITIONED = 0, > > > > > > > > BTR_PCUR_WAS_POSITIONED, > > > > > BTR_PCUR_IS_POSITIONED_OPTIMISTIC, > > > BTR_PCUR_IS_POSITIONED >}; > > > > >struct btr_pcur_t{ > > btr_cur_t btr_cur; > > > > > > > > ulint latch_mode; > > bool old_stored; > > > rec_t* old_rec; > > ulint old_n_fields; > > > enum btr_pcur_pos_t rel_pos; > > buf_block_t* block_when_stored; > > > ib_uint64_t modify_clock; > > > ulint withdraw_clock; > > enum pcur_pos_t pos_state; > > page_cur_mode_t search_mode; > > > trx_t* trx_if_known; > > > > > > byte* old_rec_buf; > > ulint buf_size; > > btr_pcur_t() : > btr_cur(), latch_mode(0), old_stored(false), old_rec(__null), > old_n_fields(0), rel_pos(btr_pcur_pos_t(0)), > block_when_stored(__null), > modify_clock(0), withdraw_clock(0), > pos_state(BTR_PCUR_NOT_POSITIONED), > search_mode(PAGE_CUR_UNSUPP), trx_if_known(__null), > old_rec_buf(__null), buf_size(0) > { > btr_cur.init(); > } > > > dict_index_t* index() const { return(btr_cur.index); } >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" >static inline >ulint >btr_pcur_get_rel_pos( > > const btr_pcur_t* cursor) >{ > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0) > ; > > return(cursor->rel_pos); >} ># 120 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" >static inline >ulint >btr_pcur_get_up_match( > > const btr_pcur_t* cursor) >{ > const btr_cur_t* btr_cursor; > > do { } while(0) > ; > > btr_cursor = (&(cursor)->btr_cur); > > do { } while(0); > > return(btr_cursor->up_match); >} > > > > > >static inline >ulint >btr_pcur_get_low_match( > > const btr_pcur_t* cursor) >{ > const btr_cur_t* btr_cursor; > > do { } while(0) > ; > > btr_cursor = (&(cursor)->btr_cur); > do { } while(0); > > return(btr_cursor->low_match); >} > > > > >static inline >ulint >btr_pcur_is_after_last_on_page( > > const btr_pcur_t* cursor) >{ > do { } while(0); > do { } while(0); > > return(page_cur_is_after_last((&(cursor)->btr_cur.page_cur))); >} > > > > >static inline >ulint >btr_pcur_is_before_first_on_page( > > const btr_pcur_t* cursor) >{ > do { } while(0); > do { } while(0); > > return(page_cur_is_before_first((&(cursor)->btr_cur.page_cur))); >} > > > >static inline >ulint >btr_pcur_is_on_user_rec( > > const btr_pcur_t* cursor) >{ > do { } while(0); > do { } while(0); > > if (btr_pcur_is_before_first_on_page(cursor) > || btr_pcur_is_after_last_on_page(cursor)) { > > return((0)); > } > > return((1)); >} > > > > >static inline >ulint >btr_pcur_is_before_first_in_tree( > > btr_pcur_t* cursor, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > return !page_has_prev(((cursor)->btr_cur.page_cur.block->frame)) > && page_cur_is_before_first((&(cursor)->btr_cur.page_cur)); >} > > > > >static inline >ulint >btr_pcur_is_after_last_in_tree( > > btr_pcur_t* cursor, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > return !page_has_next(((cursor)->btr_cur.page_cur.block->frame)) > && page_cur_is_after_last((&(cursor)->btr_cur.page_cur)); >} > > > >static inline >void >btr_pcur_move_to_next_on_page( > > btr_pcur_t* cursor) >{ > do { } while(0); > do { } while(0); > > page_cur_move_to_next((&(cursor)->btr_cur.page_cur)); > > cursor->old_stored = false; >} > > > >static inline >void >btr_pcur_move_to_prev_on_page( > > btr_pcur_t* cursor) >{ > do { } while(0); > do { } while(0); > > page_cur_move_to_prev((&(cursor)->btr_cur.page_cur)); > > cursor->old_stored = false; >} > > > > > >static inline >ulint >btr_pcur_move_to_next_user_rec( > > btr_pcur_t* cursor, > > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > cursor->old_stored = false; >loop: > if (btr_pcur_is_after_last_on_page(cursor)) { > > if (btr_pcur_is_after_last_in_tree(cursor, mtr)) { > > return((0)); > } > > btr_pcur_move_to_next_page(cursor, mtr); > } else { > btr_pcur_move_to_next_on_page(cursor); > } > > if (btr_pcur_is_on_user_rec(cursor)) { > > return((1)); > } > > goto loop; >} > > > > > >static inline >ulint >btr_pcur_move_to_next( > > btr_pcur_t* cursor, > > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > cursor->old_stored = false; > > if (btr_pcur_is_after_last_on_page(cursor)) { > > if (btr_pcur_is_after_last_in_tree(cursor, mtr)) { > > return((0)); > } > > btr_pcur_move_to_next_page(cursor, mtr); > > return((1)); > } > > btr_pcur_move_to_next_on_page(cursor); > > return((1)); >} > > > > > > >static inline >void >btr_pcur_commit_specify_mtr( > > btr_pcur_t* pcur, > mtr_t* mtr) >{ > do { } while(0); > > pcur->latch_mode = BTR_NO_LATCHES; > > (mtr)->commit(); > > pcur->pos_state = BTR_PCUR_WAS_POSITIONED; >} ># 373 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" >static inline >void >btr_pcurs_commit_specify_mtr( > btr_pcur_t* pcur, > btr_pcur_t* sec_pcur, > mtr_t* mtr) >{ > do { } while(0); > do { } while(0); > > pcur->latch_mode = BTR_NO_LATCHES; > sec_pcur->latch_mode = BTR_NO_LATCHES; > > (mtr)->commit(); > > pcur->pos_state = BTR_PCUR_WAS_POSITIONED; > sec_pcur->pos_state = BTR_PCUR_WAS_POSITIONED; >} > > > >static inline >void >btr_pcur_init( > > btr_pcur_t* pcur) >{ > pcur->old_stored = false; > pcur->old_rec_buf = __null; > pcur->old_rec = __null; > > pcur->btr_cur.rtr_info = __null; >} > > > >static inline >void >btr_pcur_free( > btr_pcur_t* pcur) >{ > ::free(pcur->old_rec_buf); >} > > > > >static inline >dberr_t >btr_pcur_open_low( > > dict_index_t* index, > ulint level, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > > > > ulint latch_mode, > btr_pcur_t* cursor, > const char* file, > unsigned line, > ib_uint64_t autoinc, > > mtr_t* mtr) >{ > btr_cur_t* btr_cursor; > dberr_t err = DB_SUCCESS; > > > > btr_pcur_init(cursor); > > cursor->latch_mode = ((latch_mode) & btr_latch_mode(~(BTR_INSERT | BTR_DELETE_MARK | 131072U | 524288U | BTR_DELETE | 1024U | 2048U | BTR_ALREADY_S_LATCHED | 32768U | BTR_LATCH_FOR_DELETE | 262144U))); > cursor->search_mode = mode; > > > > btr_cursor = (&(cursor)->btr_cur); > > do { } while(0); > > err = btr_cur_search_to_nth_level( > index, level, tuple, mode, latch_mode, > btr_cursor, 0, file, line, mtr, autoinc); > > if (err != DB_SUCCESS) { > ib::warn() << " Error code: " << err > << " btr_pcur_open_low " > << " level: " << level > << " called from file: " > << file << " line: " << line > << " table: " << index->table->name > << " index: " << index->name; > } > > cursor->pos_state = BTR_PCUR_IS_POSITIONED; > > cursor->trx_if_known = __null; > > return(err); >} > > > > >static inline >dberr_t >btr_pcur_open_with_no_init_func( > > dict_index_t* index, > const dtuple_t* tuple, > page_cur_mode_t mode, > > > > > > ulint latch_mode, > > > > > btr_pcur_t* cursor, > ulint has_search_latch, > > > > const char* file, > unsigned line, > mtr_t* mtr) >{ > btr_cur_t* btr_cursor; > dberr_t err = DB_SUCCESS; > > cursor->latch_mode = ((latch_mode) & btr_latch_mode(~(32768U | BTR_LATCH_FOR_DELETE | 262144U))); > cursor->search_mode = mode; > > > > btr_cursor = (&(cursor)->btr_cur); > > err = btr_cur_search_to_nth_level( > index, 0, tuple, mode, latch_mode, btr_cursor, > has_search_latch, file, line, mtr); > > cursor->pos_state = BTR_PCUR_IS_POSITIONED; > > cursor->old_stored = false; > > cursor->trx_if_known = __null; > return err; >} > > > >static inline >dberr_t >btr_pcur_open_at_index_side( > > bool from_left, > > dict_index_t* index, > ulint latch_mode, > btr_pcur_t* pcur, > bool init_pcur, > ulint level, > > mtr_t* mtr) >{ > dberr_t err = DB_SUCCESS; > > pcur->latch_mode = ((latch_mode) & btr_latch_mode(~(BTR_INSERT | BTR_DELETE_MARK | 131072U | 524288U | BTR_DELETE | 1024U | 2048U | BTR_ALREADY_S_LATCHED | 32768U | BTR_LATCH_FOR_DELETE | 262144U))); > > pcur->search_mode = from_left ? PAGE_CUR_G : PAGE_CUR_L; > > if (init_pcur) { > btr_pcur_init(pcur); > } > > err = btr_cur_open_at_index_side_func(from_left,index,latch_mode,(&(pcur)->btr_cur),level, > > "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" ># 555 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" > , > > 557 ># 555 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" > ,mtr) > > ; > pcur->pos_state = BTR_PCUR_IS_POSITIONED; > > pcur->old_stored = false; > > pcur->trx_if_known = __null; > > return (err); >} > > > > > >static inline >bool >btr_pcur_open_at_rnd_pos_func( > > dict_index_t* index, > ulint latch_mode, > btr_pcur_t* cursor, > const char* file, > unsigned line, > mtr_t* mtr) >{ > > > cursor->latch_mode = latch_mode; > cursor->search_mode = PAGE_CUR_G; > > btr_pcur_init(cursor); > > bool available; > > available = btr_cur_open_at_rnd_pos_func(index, latch_mode, > (&(cursor)->btr_cur), > file, line, mtr); > cursor->pos_state = BTR_PCUR_IS_POSITIONED; > cursor->old_stored = false; > > cursor->trx_if_known = __null; > > return(available); >} ># 614 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.ic" >static inline >void >btr_pcur_close( > > btr_pcur_t* cursor) >{ > ::free(cursor->old_rec_buf); > > if (cursor->btr_cur.rtr_info) { > rtr_clean_rtr_info(cursor->btr_cur.rtr_info, true); > cursor->btr_cur.rtr_info = __null; > } > > cursor->old_rec = __null; > cursor->old_rec_buf = __null; > cursor->btr_cur.page_cur.rec = __null; > cursor->btr_cur.page_cur.block = __null; > > cursor->old_rec = __null; > cursor->old_stored = false; > > cursor->latch_mode = BTR_NO_LATCHES; > cursor->pos_state = BTR_PCUR_NOT_POSITIONED; > > cursor->trx_if_known = __null; >} > > > >static inline >void >btr_pcur_move_before_first_on_page( > > btr_pcur_t* cursor) >{ > do { } while(0); > > page_cur_set_before_first(((cursor)->btr_cur.page_cur.block), > (&(cursor)->btr_cur.page_cur)); > > cursor->old_stored = false; >} ># 550 "/buildbot/mariadb-10.2.31/storage/innobase/include/btr0pcur.h" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/pars0types.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/pars0types.h" >struct pars_info_t; >struct pars_user_func_t; >struct pars_bound_lit_t; >struct pars_bound_id_t; >struct sym_node_t; >struct sym_tab_t; >struct pars_res_word_t; >struct func_node_t; >struct order_node_t; >struct proc_node_t; >struct elsif_node_t; >struct if_node_t; >struct while_node_t; >struct for_node_t; >struct exit_node_t; >struct return_node_t; >struct assign_node_t; >struct col_assign_node_t; > >typedef ut_list_base<sym_node_t, ut_list_node<sym_node_t> sym_node_t::*> sym_node_list_t; ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" 2 > > > > >static inline >upd_t* >upd_create( > > ulint n, > mem_heap_t* heap); > > > > >static inline >ulint >upd_get_n_fields( > > const upd_t* update); ># 73 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >static inline >void >upd_field_set_field_no( > > upd_field_t* upd_field, > ulint field_no, > > dict_index_t* index); > > > > > >static inline >void >upd_field_set_v_field_no( > upd_field_t* upd_field, > ulint field_no, > dict_index_t* index); > > > >static inline >const upd_field_t* >upd_get_field_by_field_no( > > const upd_t* update, > ulint no, > bool is_virtual) > __attribute__((warn_unused_result)); > > > > >byte* >row_upd_write_sys_vals_to_log( > > dict_index_t* index, > trx_id_t trx_id, > roll_ptr_t roll_ptr, > byte* log_ptr, > > mtr_t* mtr); > > > >static inline >void >row_upd_rec_sys_fields( > > rec_t* rec, > page_zip_des_t* page_zip, > > dict_index_t* index, > const offset_t* offsets, > const trx_t* trx, > roll_ptr_t roll_ptr); > > >void >row_upd_index_entry_sys_field( > > dtuple_t* entry, > > > > dict_index_t* index, > ulint type, > ib_uint64_t val); > > > >upd_node_t* >upd_node_create( > > mem_heap_t* heap); > > >void >row_upd_index_write_log( > > const upd_t* update, > byte* log_ptr, > > > > mtr_t* mtr); > > > > > >ulint >row_upd_changes_field_size_or_external( > > dict_index_t* index, > const offset_t* offsets, > const upd_t* update); > > > >bool >row_upd_changes_disowned_external( > > const upd_t* update) > __attribute__((nonnull, warn_unused_result)); > > > > > > >void >row_upd_rec_in_place( > > rec_t* rec, > dict_index_t* index, > const offset_t* offsets, > const upd_t* update, > page_zip_des_t* page_zip); > > > > > > > >upd_t* >row_upd_build_sec_rec_difference_binary( > > const rec_t* rec, > dict_index_t* index, > const offset_t* offsets, > const dtuple_t* entry, > mem_heap_t* heap) > __attribute__((warn_unused_result, nonnull)); ># 226 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >upd_t* >row_upd_build_difference_binary( > dict_index_t* index, > const dtuple_t* entry, > const rec_t* rec, > const offset_t* offsets, > bool no_sys, > trx_t* trx, > mem_heap_t* heap, > TABLE* mysql_table, > dberr_t* error) > __attribute__((nonnull(1,2,3,7,9), warn_unused_result)); > > > >void >row_upd_index_replace_new_col_vals_index_pos( > > dtuple_t* entry, > > > > dict_index_t* index, > > const upd_t* update, > > > ulint order_only, > > > > mem_heap_t* heap) > > __attribute__((nonnull)); > > > >void >row_upd_index_replace_new_col_vals( > > dtuple_t* entry, > > > > dict_index_t* index, > > const upd_t* update, > > > mem_heap_t* heap) > > __attribute__((nonnull)); > > >void >row_upd_replace( > > dtuple_t* row, > > > > > row_ext_t** ext, > > const dict_index_t* index, > const upd_t* update, > > mem_heap_t* heap); ># 302 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >void >row_upd_replace_vcol( > dtuple_t* row, > const dict_table_t* table, > const upd_t* update, > bool upd_new, > dtuple_t* undo_row, > const byte* ptr); ># 318 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >ulint >row_upd_changes_ord_field_binary_func( > > dict_index_t* index, > const upd_t* update, > > > > > > const dtuple_t* row, > > > > const row_ext_t*ext, > > ulint flag) > > __attribute__((nonnull(1,2), warn_unused_result)); ># 348 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >ulint >row_upd_changes_fts_column( > > dict_table_t* table, > upd_field_t* upd_field); > > > >bool >row_upd_changes_doc_id( > > dict_table_t* table, > upd_field_t* upd_field) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >ulint >row_upd_changes_some_index_ord_field_binary( > > const dict_table_t* table, > const upd_t* update); > > > > > >void >row_upd_store_row( > upd_node_t* node, > THD* thd, > TABLE* mysql_table); > > > > >que_thr_t* >row_upd_step( > > que_thr_t* thr); > > > >byte* >row_upd_parse_sys_vals( > > const byte* ptr, > const byte* end_ptr, > ulint* pos, > trx_id_t* trx_id, > roll_ptr_t* roll_ptr); > > > >void >row_upd_rec_sys_fields_in_recovery( > > rec_t* rec, > page_zip_des_t* page_zip, > const offset_t* offsets, > ulint pos, > trx_id_t trx_id, > roll_ptr_t roll_ptr); > > > >byte* >row_upd_index_parse( > > const byte* ptr, > const byte* end_ptr, > mem_heap_t* heap, > > upd_t** update_out); > > > >struct upd_field_t{ > unsigned field_no:16; > > > > > > > unsigned orig_len:16; > > > que_node_t* exp; > > > > dfield_t new_val; > dfield_t* old_v_val; >}; ># 458 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >struct upd_t{ > mem_heap_t* heap; > ulint info_bits; > > dtuple_t* old_vrow; > > ulint n_fields; > upd_field_t* fields; > > > > void append(const upd_field_t& field) > { > fields[n_fields++] = field; > } > > > > bool is_modified(const ulint field_no) const > { > for (ulint i = 0; i < n_fields; ++i) { > if (field_no == fields[i].field_no) { > return(true); > } > } > return(false); > } ># 500 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" >}; > > > > >struct upd_node_t{ > que_common_t common; > ulint is_delete; > ulint searched_update; > > > ulint in_mysql_interface; > > > dict_foreign_t* foreign; > > > upd_node_t* cascade_node; > > > mem_heap_t* cascade_heap; > > > sel_node_t* select; > > > btr_pcur_t* pcur; > > > > > dict_table_t* table; > upd_t* update; > ulint update_n_fields; > > > > > sym_node_list_t columns; > > ulint has_clust_rec_x_lock; > > > > > ulint cmpl_info; > > > > > > ulint state; > dict_index_t* index; > > dtuple_t* row; > > > row_ext_t* ext; > > dtuple_t* upd_row; > row_ext_t* upd_ext; > > mem_heap_t* heap; > > > > sym_node_t* table_sym; > que_node_t* col_assign_list; > > ulint magic_n; > >}; ># 602 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.ic" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.ic" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0row.h" 1 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.ic" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" 2 > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0prdt.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0prdt.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" 1 ># 30 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0prdt.h" 2 > > >typedef struct lock_prdt { > void* data; > uint16 op; >} lock_prdt_t; > > > > >dberr_t >lock_prdt_lock( > > buf_block_t* block, > lock_prdt_t* prdt, > dict_index_t* index, > enum lock_mode mode, > > > > > ulint type_mode, > > que_thr_t* thr, > > mtr_t* mtr); > > > > >dberr_t >lock_place_prdt_page_lock( > > ulint space, > ulint pageno, > dict_index_t* index, > que_thr_t* thr); > > > >void >lock_init_prdt_from_mbr( > > lock_prdt_t* prdt, > rtr_mbr_t* mbr, > ulint mode, > mem_heap_t* heap); > > > > >lock_prdt_t* >lock_get_prdt_from_lock( > > const ib_lock_t* lock); > > > > > >bool >lock_prdt_has_to_wait( > > const trx_t* trx, > ulint type_mode, > > > > lock_prdt_t* prdt, > const ib_lock_t* lock2); > > > > > > >void >lock_prdt_update_split( > > buf_block_t* block, > buf_block_t* new_block, > lock_prdt_t* prdt, > lock_prdt_t* new_prdt, > ulint space, > ulint page_no); > > > >void >lock_prdt_update_parent( > > buf_block_t* left_block, > buf_block_t* right_block, > lock_prdt_t* left_prdt, > lock_prdt_t* right_prdt, > lock_prdt_t* parent_prdt, > ulint space, > ulint page_no); > > > > > >dberr_t >lock_prdt_insert_check_and_lock( > > ulint flags, > > const rec_t* rec, > buf_block_t* block, > dict_index_t* index, > que_thr_t* thr, > mtr_t* mtr, > lock_prdt_t* prdt); > > > >void >lock_prdt_set_prdt( > > ib_lock_t* lock, > const lock_prdt_t* prdt); ># 188 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0prdt.h" >void >lock_prdt_rec_move( > > const buf_block_t* receiver, > > const buf_block_t* donator); > > > > > > > >bool >lock_test_prdt_page_lock( > > const trx_t* trx, > ulint space, > ulint page_no); > > > > >void >lock_prdt_page_free_from_discard( > > const buf_block_t* block, > hash_table_t* lock_hash); ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" 2 > > > >enum innodb_lock_schedule_algorithm_t { > > INNODB_LOCK_SCHEDULE_ALGORITHM_FCFS, > > INNODB_LOCK_SCHEDULE_ALGORITHM_VATS >}; > >extern ulong innodb_lock_schedule_algorithm; > > >class ReadView; > > >extern my_bool innobase_deadlock_detect; > > > > >ulint >lock_get_size(void); > > > >void >lock_sys_create( > > ulint n_cells); > > >void >lock_sys_resize( > ulint n_cells); > > > >void >lock_sys_close(void); > > > > >static inline >ulint >lock_get_min_heap_no( > > const buf_block_t* block); > > > > > >void >lock_move_reorganize_page( > > const buf_block_t* block, > > const buf_block_t* oblock); > > > > >void >lock_move_rec_list_end( > > const buf_block_t* new_block, > const buf_block_t* block, > const rec_t* rec); > > > > >void >lock_move_rec_list_start( > > const buf_block_t* new_block, > const buf_block_t* block, > const rec_t* rec, > > > const rec_t* old_end); > > > > > > >void >lock_update_split_right( > > const buf_block_t* right_block, > const buf_block_t* left_block); > > >void >lock_update_merge_right( > > const buf_block_t* right_block, > > const rec_t* orig_succ, > > > > const buf_block_t* left_block); ># 156 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >void >lock_update_root_raise( > > const buf_block_t* block, > const buf_block_t* root); > > > >void >lock_update_copy_and_discard( > > const buf_block_t* new_block, > > const buf_block_t* block); > > > >void >lock_update_split_left( > > const buf_block_t* right_block, > const buf_block_t* left_block); > > >void >lock_update_merge_left( > > const buf_block_t* left_block, > > const rec_t* orig_pred, > > > const buf_block_t* right_block); > > > > >__attribute__((visibility ("hidden"))) >void >lock_update_split_and_merge( > const buf_block_t* left_block, > const rec_t* orig_pred, > > const buf_block_t* right_block); > > > >void >lock_rec_reset_and_inherit_gap_locks( > > const buf_block_t* heir_block, > > const buf_block_t* block, > > > > ulint heir_heap_no, > > ulint heap_no); > > > >void >lock_update_discard( > > const buf_block_t* heir_block, > > ulint heir_heap_no, > > const buf_block_t* block); > > > >void >lock_update_insert( > > const buf_block_t* block, > const rec_t* rec); > > >void >lock_update_delete( > > const buf_block_t* block, > const rec_t* rec); > > > > > > > >void >lock_rec_store_on_page_infimum( > > const buf_block_t* block, > const rec_t* rec); > > > > > > > >void >lock_rec_restore_from_page_infimum( > > const buf_block_t* block, > const rec_t* rec, > > const buf_block_t* donator); > > > > > > > >ib_lock_t* >lock_rec_expl_exist_on_page( > > ulint space, > ulint page_no) > __attribute__((warn_unused_result)); > > > > > > > >dberr_t >lock_rec_insert_check_and_lock( > > ulint flags, > > const rec_t* rec, > buf_block_t* block, > dict_index_t* index, > que_thr_t* thr, > mtr_t* mtr, > ulint* inherit) > > > > __attribute__((warn_unused_result)); ># 311 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >dberr_t >lock_clust_rec_modify_check_and_lock( > > ulint flags, > > const buf_block_t* block, > const rec_t* rec, > > dict_index_t* index, > const offset_t* offsets, > que_thr_t* thr) > __attribute__((warn_unused_result)); > > > > >dberr_t >lock_sec_rec_modify_check_and_lock( > > ulint flags, > > buf_block_t* block, > const rec_t* rec, > > > > > dict_index_t* index, > que_thr_t* thr, > > mtr_t* mtr) > __attribute__((warn_unused_result)); > > > > >dberr_t >lock_sec_rec_read_check_and_lock( > > ulint flags, > > const buf_block_t* block, > const rec_t* rec, > > > > dict_index_t* index, > const offset_t* offsets, > lock_mode mode, > > > > > ulint gap_mode, > > que_thr_t* thr); ># 375 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >dberr_t >lock_clust_rec_read_check_and_lock( > > ulint flags, > > const buf_block_t* block, > const rec_t* rec, > > > > dict_index_t* index, > const offset_t* offsets, > lock_mode mode, > > > > > ulint gap_mode, > > que_thr_t* thr); ># 405 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >dberr_t >lock_clust_rec_read_check_and_lock_alt( > > ulint flags, > > const buf_block_t* block, > const rec_t* rec, > > > > dict_index_t* index, > lock_mode mode, > > > > > ulint gap_mode, > > que_thr_t* thr) > __attribute__((warn_unused_result)); > > > > >bool >lock_clust_rec_cons_read_sees( > > const rec_t* rec, > > dict_index_t* index, > const offset_t* offsets, > ReadView* view); ># 447 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >bool >lock_sec_rec_cons_read_sees( > > const rec_t* rec, > > > const dict_index_t* index, > const ReadView* view) > __attribute__((warn_unused_result)); > > > > >dberr_t >lock_table( > > ulint flags, > > dict_table_t* table, > > lock_mode mode, > que_thr_t* thr) > __attribute__((warn_unused_result)); > > >void >lock_table_ix_resurrect( > > dict_table_t* table, > trx_t* trx); > > > > > > >dberr_t >lock_table_for_trx( > dict_table_t* table, > trx_t* trx, > enum lock_mode mode) > __attribute__((nonnull, warn_unused_result)); > > > > > >void >lock_rec_unlock( > > trx_t* trx, > > const buf_block_t* block, > const rec_t* rec, > lock_mode lock_mode); > > > >void lock_trx_release_locks(trx_t* trx); > > > > > > >void >lock_remove_all_on_table( > > dict_table_t* table, > > ulint remove_also_table_sx_locks); > > > > > > >static inline >ulint >lock_rec_fold( > > ulint space, > ulint page_no) > __attribute__((const)); > > > > >static inline >unsigned >lock_rec_hash( > > ulint space, > ulint page_no); > > > >static inline >hash_table_t* >lock_hash_get( > > ulint mode); > > > > > > >ulint >lock_rec_find_set_bit( > > const ib_lock_t* lock); > > > > > >ulint >lock_has_to_wait( > > const ib_lock_t* lock1, > const ib_lock_t* lock2); > > > > > >void >lock_report_trx_id_insanity( > > trx_id_t trx_id, > const rec_t* rec, > dict_index_t* index, > const offset_t* offsets, > trx_id_t max_trx_id); > > > > >ulint >lock_print_info_summary( > > FILE* file, > ulint nowait) > __attribute__((warn_unused_result)); > > > > > >void >lock_trx_print_wait_and_mvcc_state(FILE* file, const trx_t* trx, time_t now); > > > > > >void >lock_print_info_all_transactions( > > FILE* file); > > > > > >ulint >lock_number_of_rows_locked( > > const trx_lock_t* trx_lock) > __attribute__((warn_unused_result)); > > > > >ulint >lock_number_of_tables_locked( > > const trx_lock_t* trx_lock) > __attribute__((warn_unused_result)); > > > > > >ulint >lock_get_type( > > const ib_lock_t* lock); > > > > > >__attribute__((visibility ("hidden"))) >trx_t* >lock_get_trx( > > const ib_lock_t* lock); > > > > >trx_id_t >lock_get_trx_id( > > const ib_lock_t* lock); > > > > > >const char* >lock_get_mode_str( > > const ib_lock_t* lock); > > > > > >const char* >lock_get_type_str( > > const ib_lock_t* lock); > > > > >table_id_t >lock_get_table_id( > > const ib_lock_t* lock); > > > > >const table_name_t& >lock_get_table_name( > const ib_lock_t* lock); > > > > >const dict_index_t* >lock_rec_get_index( > > const ib_lock_t* lock); > > > > > >const char* >lock_rec_get_index_name( > > const ib_lock_t* lock); > > > > >ulint >lock_rec_get_space_id( > > const ib_lock_t* lock); > > > > >ulint >lock_rec_get_page_no( > > const ib_lock_t* lock); > > > >bool >lock_table_has_locks( > > const dict_table_t* table); > > > > > > >extern "C" >os_thread_ret_t >lock_wait_timeout_thread( > > void* arg); > > > > > >void >lock_wait_release_thread_if_suspended( > > que_thr_t* thr); ># 755 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >void >lock_wait_suspend_thread( > > que_thr_t* thr); > > > > > >void >lock_unlock_table_autoinc( > > trx_t* trx); > > > > > >dberr_t >lock_trx_handle_wait( > > trx_t* trx); > > > >ulint >lock_table_get_n_locks( > > const dict_table_t* table); > > >void >lock_trx_lock_list_init( > > trx_lock_list_t* lock_list); > > > >void >lock_set_timeout_event(); ># 832 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >struct lock_op_t{ > dict_table_t* table; > lock_mode mode; >}; > >typedef ib_mutex_t LockMutex; > > >struct lock_sys_t{ > char pad1[128]; > > > > LockMutex mutex; > > hash_table_t* rec_hash; > > hash_table_t* prdt_hash; > > hash_table_t* prdt_page_hash; > > > char pad2[128]; > LockMutex wait_mutex; > > srv_slot_t* waiting_threads; ># 866 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" > srv_slot_t* last_slot; > > > > ulint rollback_complete; > > > > > > ulint n_lock_max_wait_time; > > os_event_t timeout_event; > > > > > > bool timeout_thread_active; > >}; > > > > > >static inline >ib_lock_t* >lock_rec_create( > > > ib_lock_t* c_lock, > que_thr_t* thr, > > ulint type_mode, > > > const buf_block_t* block, > > ulint heap_no, > dict_index_t* index, > trx_t* trx, > bool caller_owns_trx_mutex); > > > > > >void >lock_rec_discard( > > ib_lock_t* in_lock); ># 933 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >ib_lock_t* >lock_rec_create_low( > > ib_lock_t* c_lock, > que_thr_t* thr, > > ulint type_mode, > ulint space, > ulint page_no, > const ib_page_t* page, > ulint heap_no, > dict_index_t* index, > trx_t* trx, > bool holds_trx_mutex); ># 965 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >dberr_t >lock_rec_enqueue_waiting( > > ib_lock_t* c_lock, > > ulint type_mode, > const buf_block_t* block, > ulint heap_no, > dict_index_t* index, > que_thr_t* thr, > lock_prdt_t* prdt); > > > >void >lock_rtr_move_rec_list( > > const buf_block_t* new_block, > > const buf_block_t* block, > rtr_rec_move_t* rec_move, > > ulint num_move); > > > > > >void >lock_rec_free_all_from_discard_page( > > const buf_block_t* block); > > >extern lock_sys_t* lock_sys; ># 1035 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" >__attribute__((visibility ("hidden"))) >void >lock_cancel_waiting_and_release( > > ib_lock_t* lock); > > > > >std::string >lock_get_info( > const ib_lock_t*); > > > > > > > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.ic" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.ic" >static inline >ulint >lock_rec_fold( > > ulint space, > ulint page_no) >{ > return(ut_fold_ulint_pair(space, page_no)); >} > > > > > >static inline >unsigned >lock_rec_hash( > > ulint space, > ulint page_no) >{ > return(unsigned(hash_calc_hash(lock_rec_fold(space, page_no), > lock_sys->rec_hash))); >} > > > > >static inline >ulint >lock_get_min_heap_no( > > const buf_block_t* block) >{ > const ib_page_t* page = block->frame; > > if (page_is_comp(page)) { > return(rec_get_heap_no_new( > page > + rec_get_next_offs(page + ((38U + 36 + 2 * 10) + 5), > (1)))); > } else { > return(rec_get_heap_no_old( > page > + rec_get_next_offs(page + ((38U + 36 + 2 * 10) + 1 + 6), > (0)))); > } >} > > > >static inline >hash_table_t* >lock_hash_get( > > ulint mode) >{ > if (mode & 8192U) { > return(lock_sys->prdt_hash); > } else if (mode & 16384U) { > return(lock_sys->prdt_page_hash); > } else { > return(lock_sys->rec_hash); > } >} > > > > > >static inline >ib_lock_t* >lock_rec_create( > > > ib_lock_t* c_lock, > que_thr_t* thr, > > ulint type_mode, > > > const buf_block_t* block, > > ulint heap_no, > dict_index_t* index, > trx_t* trx, > bool caller_owns_trx_mutex) > > >{ > if ((ulint) !!page_is_comp((block)->frame) != dict_table_is_comp((index)->table)) { btr_corruption_report(block, index); ut_dbg_assertion_failed(0, "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.ic", 125); }; > return lock_rec_create_low( > > c_lock, thr, > > type_mode, > block->page.id.space(), block->page.id.page_no(), > block->frame, heap_no, > index, trx, caller_owns_trx_mutex); >} ># 1055 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0lock.h" 2 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.ic" 2 > > > > > >static inline >upd_t* >upd_create( > > ulint n, > mem_heap_t* heap) >{ > upd_t* update; > > update = static_cast<upd_t*>(mem_heap_zalloc( > heap, sizeof(upd_t) + sizeof(upd_field_t) * n)); > > update->n_fields = n; > update->fields = reinterpret_cast<upd_field_t*>(&update[1]); > update->heap = heap; > > return(update); >} > > > > > >static inline >ulint >upd_get_n_fields( > > const upd_t* update) >{ > do { } while(0); > > return(update->n_fields); >} ># 91 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.ic" >static inline >void >upd_field_set_field_no( > > upd_field_t* upd_field, > ulint field_no, > > dict_index_t* index) >{ > upd_field->field_no = unsigned(field_no); > upd_field->orig_len = 0; > dict_col_copy_type(dict_index_get_nth_col(index, field_no), > dfield_get_type(&upd_field->new_val)); >} > > > > > >static inline >void >upd_field_set_v_field_no( > upd_field_t* upd_field, > ulint field_no, > dict_index_t* index) >{ > do { if (__builtin_expect(!(ulint) (field_no < dict_table_get_n_v_cols(index->table)), (0))) { ut_dbg_assertion_failed("field_no < dict_table_get_n_v_cols(index->table)", "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.ic", 117); } } while (0); > upd_field->field_no = unsigned(field_no); > upd_field->orig_len = 0; > > dict_col_copy_type(&(&(index->table)->v_cols[field_no]) > ->m_col, > dfield_get_type(&upd_field->new_val)); >} > > > > >static inline >const upd_field_t* >upd_get_field_by_field_no( > > const upd_t* update, > ulint no, > bool is_virtual) >{ > ulint i; > for (i = 0; i < upd_get_n_fields(update); i++) { > const upd_field_t* uf = ((update)->fields + (i)); > > > if ((!is_virtual) != (!(((uf)->new_val.type.prtype & 8192U) == 8192U))) { > continue; > } > > if (uf->field_no == no) { > > return(uf); > } > } > > return(__null); >} > > > > >static inline >void >row_upd_rec_sys_fields( > > rec_t* rec, > page_zip_des_t* page_zip, > > dict_index_t* index, > const offset_t* offsets, > const trx_t* trx, > roll_ptr_t roll_ptr) >{ > do { } while(0); > do { } while(0); > > if (page_zip) { > ulint pos = dict_index_get_sys_col_pos(index, 1); > page_zip_write_trx_id_and_roll_ptr(page_zip, rec, offsets, > pos, trx->id, roll_ptr); > } else { > ulint offset = index->trx_id_offset; > > if (!offset) { > offset = row_get_trx_id_offset(index, offsets); > } > > > > > > > > do { } while(0) > > > ; > > trx_write_trx_id(rec + offset, trx->id); > trx_write_roll_ptr(rec + offset + 6, roll_ptr); > } >} ># 603 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0upd.h" 2 ># 31 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" 1 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" 2 > > > > ># 1 "/buildbot/mariadb-10.2.31/sql/sql_list.h" 1 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" 2 ># 1 "/buildbot/mariadb-10.2.31/sql/sql_cmd.h" 1 ># 42 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" 2 > >extern ulint row_rollback_on_timeout; > >struct row_prebuilt_t; > > > >void >row_mysql_prebuilt_free_blob_heap( > > row_prebuilt_t* prebuilt); > > > > > > >byte* >row_mysql_store_true_var_len( > > byte* dest, > ulint len, > ulint lenlen); > > > > > >const byte* >row_mysql_read_true_varchar( > > ulint* len, > const byte* field, > ulint lenlen); > > > >void >row_mysql_store_blob_ref( > > byte* dest, > ulint col_len, > > > > const void* data, > > ulint len); > > > > > > >const byte* >row_mysql_read_blob_ref( > > ulint* len, > const byte* ref, > > ulint col_len); > > > >void >row_mysql_store_geometry( > > byte* dest, > ulint dest_len, > > > > const byte* src, > > ulint src_len); > > > > > >void >row_mysql_pad_col( > > ulint mbminlen, > > byte* pad, > ulint len); > > > > > > >byte* >row_mysql_store_col_in_innobase_format( > > dfield_t* dfield, > > > byte* buf, > > > > > > ulint row_format_col, > > > > > > > const byte* mysql_data, > > > > > ulint col_len, > > > > > > ulint comp); > > > > >bool >row_mysql_handle_errors( > > dberr_t* new_err, > > > trx_t* trx, > que_thr_t* thr, > trx_savept_t* savept) > __attribute__((nonnull(1,2))); > > > >row_prebuilt_t* >row_create_prebuilt( > > dict_table_t* table, > ulint mysql_row_len); > > > >void >row_prebuilt_free( > > row_prebuilt_t* prebuilt, > ulint dict_locked); > > > >void >row_update_prebuilt_trx( > > row_prebuilt_t* prebuilt, > > trx_t* trx); ># 213 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" >dberr_t >row_lock_table_autoinc_for_mysql( > > row_prebuilt_t* prebuilt) > > __attribute__((nonnull, warn_unused_result)); > > > > >dberr_t >row_lock_table(row_prebuilt_t* prebuilt); > > > > > >dberr_t >row_insert_for_mysql( > const byte* mysql_rec, > row_prebuilt_t* prebuilt) > __attribute__((warn_unused_result)); > > > >void >row_prebuild_sel_graph( > > row_prebuilt_t* prebuilt); > > > > > > >upd_t* >row_get_prebuilt_update_vector( > > row_prebuilt_t* prebuilt); > > > > >dberr_t >row_update_for_mysql(row_prebuilt_t* prebuilt) > __attribute__((warn_unused_result)); ># 273 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" >void >row_unlock_for_mysql( > row_prebuilt_t* prebuilt, > ulint has_latches_on_recs); > > > > > >upd_node_t* >row_create_update_node_for_mysql( > > dict_table_t* table, > mem_heap_t* heap); > > > > >dberr_t >row_update_cascade_for_mysql( > > que_thr_t* thr, > upd_node_t* node, > > dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > >void >row_mysql_lock_data_dictionary_func( > > trx_t* trx, > const char* file, > unsigned line); > > > > >void >row_mysql_unlock_data_dictionary( > > trx_t* trx); > > > >void >row_mysql_freeze_data_dictionary_func( > > trx_t* trx, > const char* file, > unsigned line); > > > > >void >row_mysql_unfreeze_data_dictionary( > > trx_t* trx); > > > > >dberr_t >row_create_table_for_mysql( > > dict_table_t* table, > > > trx_t* trx, > fil_encryption_t mode, > uint32_t key_id) > __attribute__((warn_unused_result)); > > > > > >dberr_t >row_create_index_for_mysql( > > dict_index_t* index, > > trx_t* trx, > const ulint* field_lengths) > > > > > > __attribute__((warn_unused_result)); > > > > > >ulint >row_drop_tables_for_mysql_in_background(void); > > > > > >ulint >row_get_background_drop_list_len_low(void); > > > >void >row_mysql_drop_garbage_tables(); > > > > >dberr_t >row_mysql_lock_table( > > trx_t* trx, > dict_table_t* table, > enum lock_mode mode, > const char* op_info) > __attribute__((nonnull, warn_unused_result)); ># 409 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" >dberr_t >row_drop_table_for_mysql( > const char* name, > trx_t* trx, > enum_sql_command sqlcom, > bool create_failed = false, > bool nonatomic = true); > > >dberr_t row_drop_table_after_create_fail(const char* name, trx_t* trx); > > > > > > >dberr_t >row_discard_tablespace_for_mysql( > > const char* name, > trx_t* trx) > __attribute__((nonnull, warn_unused_result)); > > > > >dberr_t >row_import_tablespace_for_mysql( > > dict_table_t* table, > row_prebuilt_t* prebuilt) > __attribute__((nonnull, warn_unused_result)); > > > > > > >dberr_t >row_drop_database_for_mysql( > const char* name, > trx_t* trx, > ulint* found); > > > > >dberr_t >row_rename_table_for_mysql( > > const char* old_name, > const char* new_name, > trx_t* trx, > bool commit, > bool use_fk) > > __attribute__((nonnull, warn_unused_result)); > > > > > > > >dberr_t >row_scan_index_for_mysql( > > row_prebuilt_t* prebuilt, > > const dict_index_t* index, > ulint* n_rows) > > __attribute__((warn_unused_result)); > > >void >row_mysql_init(void); > > > > >void >row_mysql_close(void); > > > > > > > >struct mysql_row_templ_t { > ulint col_no; > ulint rec_field_no; > > > > ulint rec_field_is_prefix; > ulint rec_prefix_field_no; > > > > > ulint clust_rec_field_no; > > > > ulint icp_rec_field_no; > > > > ulint mysql_col_offset; > > ulint mysql_col_len; > > ulint mysql_null_byte_offset; > > ulint mysql_null_bit_mask; > > ulint type; > > ulint mysql_type; > > ulint mysql_length_bytes; > > > > > > > > ulint charset; > > ulint mbminlen; > > ulint mbmaxlen; > > ulint is_unsigned; > > > ulint is_virtual; >}; ># 561 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" >struct row_prebuilt_t { > ulint magic_n; > > > > dict_table_t* table; > dict_index_t* index; > > trx_t* trx; > unsigned sql_stat_start:1; > > > > unsigned clust_index_was_generated:1; > > > > > > > unsigned index_usable:1; > > unsigned read_just_key:1; > > > > > > unsigned used_in_HANDLER:1; > > > > > > > unsigned template_type:2; > > > > unsigned n_template:10; > > unsigned null_bitmap_len:10; > > > unsigned need_to_access_clustered:1; > > > > > > > unsigned templ_contains_blob:1; > > > > > > > mysql_row_templ_t* mysql_template; > > > > mem_heap_t* heap; > > > ins_node_t* ins_node; > > > byte* ins_upd_rec_buff; > > > const byte* default_rec; > > ulint hint_need_to_fetch_extra_cols; ># 643 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" > upd_node_t* upd_node; > > trx_id_t trx_id; > > que_fork_t* ins_graph; > > > que_fork_t* upd_graph; > > btr_pcur_t* pcur; > > btr_pcur_t* clust_pcur; > > que_fork_t* sel_graph; > > dtuple_t* search_tuple; > byte row_id[6]; > > > > > doc_id_t fts_doc_id; > > > > > > dtuple_t* clust_ref; > > ulint select_lock_type; > ulint stored_select_lock_type; > > > > > ulint row_read_type; ># 703 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" > ulint new_rec_locks; ># 717 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" > ulint mysql_prefix_len; > > ulint mysql_row_len; > > ulint n_rows_fetched; > > ulint fetch_direction; > byte* fetch_cache[8]; ># 734 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" > ulint keep_other_fields_on_keyread; > > > > ulint fetch_cache_first; > > ulint n_fetch_cached; > > mem_heap_t* blob_heap; > > mem_heap_t* old_vers_heap; > > bool in_fts_query; > bool fts_doc_id_in_read_set; > > > ulonglong autoinc_last_value; > > ulonglong autoinc_increment; > > > > ulonglong autoinc_offset; > > > dberr_t autoinc_error; > > > > > > void* idx_cond; > > > > ulint idx_cond_n_cols; > > > > > rtr_info_t* rtr_info; > > > ulint magic_n2; > > > byte* srch_key_val1; > > > byte* srch_key_val2; > > > uint srch_key_val_len; > > bool m_no_prefetch; > > > bool m_read_virtual_key; > > > TABLE* m_mysql_table; >}; > > >struct SysIndexCallback { > virtual ~SysIndexCallback() { } > > > > > virtual void operator()(mtr_t* mtr, btr_pcur_t* pcur) throw() = 0; >}; > > > > >class String; >struct VCOL_STORAGE >{ > TABLE *maria_table; > byte *innobase_record; > byte *maria_record; > String *blob_value_storage; >}; ># 834 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" >bool innobase_allocate_row_for_vcol( > THD * thd, > dict_index_t* index, > mem_heap_t** heap, > TABLE** table, > byte** record, > VCOL_STORAGE** storage); > > >void innobase_free_row_for_vcol(VCOL_STORAGE *storage); ># 859 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0mysql.h" >dfield_t* >innobase_get_computed_value( > dtuple_t* row, > const dict_v_col_t* col, > const dict_index_t* index, > mem_heap_t** local_heap, > mem_heap_t* heap, > const dict_field_t* ifield, > THD* thd, > TABLE* mysql_table, > byte* mysql_rec, > const dict_table_t* old_table, > upd_t* parent_update, > dict_foreign_t* foreign); > > > > >TABLE* innobase_init_vc_templ(dict_table_t* table); > > > > >void >innobase_rename_vc_templ( > dict_table_t* table); ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/lock0types.h" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" 2 > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0stage.h" 1 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0stage.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0log.h" 1 ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0stage.h" 2 ># 528 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0stage.h" >class ut_stage_alter_t { >public: > explicit > ut_stage_alter_t( > const dict_index_t* pk) > { > } > > void > begin_phase_read_pk( > ulint n_sort_indexes) > { > } > > void > n_pk_recs_inc() > { > } > > void > inc( > ulint inc_val = 1) > { > } > > void > end_phase_read_pk() > { > } > > void > begin_phase_sort( > double sort_multi_factor) > { > } > > void > begin_phase_insert() > { > } > > void > begin_phase_flush( > ulint n_flush_pages) > { > } > > void > begin_phase_log_index() > { > } > > void > begin_phase_log_table() > { > } > > void > begin_phase_end() > { > } >}; ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" 2 ># 57 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" >struct ib_sequence_t; ># 66 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" >typedef byte row_merge_block_t; > > > > > > > >typedef byte mrec_buf_t[(1U << 16)]; > > > > > >typedef byte mrec_t; > > >struct mtuple_t { > dfield_t* fields; >}; > > >struct row_merge_buf_t { > mem_heap_t* heap; > dict_index_t* index; > ulint total_size; > ulint n_tuples; > ulint max_tuples; > mtuple_t* tuples; > mtuple_t* tmp_tuples; > >}; > > >struct merge_file_t { > int fd; > ulint offset; > ib_uint64_t n_rec; >}; > > >struct index_field_t { > ulint col_no; > ulint prefix_len; > > bool is_v_col; >}; > > >struct index_def_t { > const char* name; > bool rebuild; > ulint ind_type; > > ulint key_number; > > ulint n_fields; > index_field_t* fields; > st_mysql_ftparser* > parser; >}; > > >struct row_merge_dup_t { > dict_index_t* index; > struct TABLE* table; > const ulint* col_map; > > > > ulint n_dup; >}; > > > >void >row_merge_dup_report( > > row_merge_dup_t* dup, > const dfield_t* entry) > __attribute__((nonnull)); > > > > >dberr_t >row_merge_lock_table( > > trx_t* trx, > dict_table_t* table, > enum lock_mode mode) > __attribute__((nonnull(1,2), warn_unused_result)); > > > > > >void >row_merge_drop_indexes_dict( > > trx_t* trx, > table_id_t table_id) > __attribute__((nonnull)); > > > > > >void >row_merge_drop_indexes( > > trx_t* trx, > dict_table_t* table, > ulint locked) > > __attribute__((nonnull)); > > > >void >row_merge_drop_temp_indexes(void); > > > > > > >int >row_merge_file_create_low( > const char* path) > __attribute__((warn_unused_result)); > > > >void >row_merge_file_destroy_low( > > int fd); > > > > > > >char* >row_make_new_pathname( > > dict_table_t* table, > const char* new_name) > __attribute__((nonnull, warn_unused_result)); > > > > > > >dberr_t >row_merge_rename_tables_dict( > > dict_table_t* old_table, > > dict_table_t* new_table, > > const char* tmp_name, > trx_t* trx) > __attribute__((nonnull, warn_unused_result)); > > > > > > >dberr_t >row_merge_rename_index_to_add( > > trx_t* trx, > table_id_t table_id, > index_id_t index_id) > __attribute__((nonnull(1), warn_unused_result)); > > > > > > >dberr_t >row_merge_rename_index_to_drop( > > trx_t* trx, > table_id_t table_id, > index_id_t index_id) > __attribute__((nonnull(1), warn_unused_result)); ># 266 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" >dict_index_t* >row_merge_create_index( > trx_t* trx, > dict_table_t* table, > const index_def_t* index_def, > const dict_add_v_col_t* add_v) > __attribute__((warn_unused_result)); > > > > >bool >row_merge_is_index_usable( > > const trx_t* trx, > const dict_index_t* index) > __attribute__((nonnull, warn_unused_result)); > > > > > > > >dberr_t >row_merge_drop_table( > > trx_t* trx, > dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > > > >void row_merge_write_redo(const dict_index_t* index); ># 331 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" >dberr_t >row_merge_build_indexes( > trx_t* trx, > dict_table_t* old_table, > dict_table_t* new_table, > bool online, > dict_index_t** indexes, > const ulint* key_numbers, > ulint n_indexes, > struct TABLE* table, > const dtuple_t* add_cols, > const ulint* col_map, > ulint add_autoinc, > ib_sequence_t& sequence, > bool skip_pk_sort, > ut_stage_alter_t* stage, > const dict_add_v_col_t* add_v, > struct TABLE* eval_table) > __attribute__((warn_unused_result)); > > > >void >row_merge_buf_write( > > const row_merge_buf_t* buf, > const merge_file_t* of, > row_merge_block_t* block) > __attribute__((nonnull)); > > > >void >row_merge_buf_sort( > > row_merge_buf_t* buf, > row_merge_dup_t* dup) > > __attribute__((nonnull(1))); > > > > > > >__attribute__((visibility ("hidden"))) >bool >row_merge_write( > > int fd, > ulint offset, > > const void* buf, > void* crypt_buf, > ulint space) > __attribute__((warn_unused_result)); > > > > >row_merge_buf_t* >row_merge_buf_empty( > > row_merge_buf_t* buf) > __attribute__((warn_unused_result, nonnull)); > > > > > >int >row_merge_file_create( > merge_file_t* merge_file, > const char* path) > __attribute__((warn_unused_result, nonnull(1))); ># 422 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0merge.h" >dberr_t >row_merge_sort( > > trx_t* trx, > const row_merge_dup_t* dup, > merge_file_t* file, > row_merge_block_t* block, > int* tmpfd, > const bool update_progress, > const double pct_progress, > const double pct_cost, > row_merge_block_t* crypt_block, > ulint space, > ut_stage_alter_t* stage = __null) > __attribute__((warn_unused_result)); > > > > >row_merge_buf_t* >row_merge_buf_create( > > dict_index_t* index) > __attribute__((warn_unused_result, nonnull, malloc)); > > > >void >row_merge_buf_free( > > row_merge_buf_t* buf) > __attribute__((nonnull)); > > > >void >row_merge_file_destroy( > > merge_file_t* merge_file) > __attribute__((nonnull)); > > > >bool >row_merge_read( > > int fd, > ulint offset, > > > row_merge_block_t* buf, > row_merge_block_t* crypt_buf, > ulint space) > __attribute__((warn_unused_result)); > > > > >const byte* >row_merge_read_rec( > > row_merge_block_t* block, > mrec_buf_t* buf, > const byte* b, > const dict_index_t* index, > int fd, > ulint* foffs, > const mrec_t** mrec, > > > offset_t* offsets, > row_merge_block_t* crypt_block, > ulint space) > __attribute__((warn_unused_result)); ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ext.h" 1 ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ext.h" >row_ext_t* >row_ext_create( > > ulint n_ext, > const ulint* ext, > > > > ulint flags, > const dtuple_t* tuple, > > > > > > mem_heap_t* heap); > > > > > >static inline >const byte* >row_ext_lookup_ith( > > const row_ext_t* ext, > ulint i, > ulint* len); > > > > > > >static inline >const byte* >row_ext_lookup( > > const row_ext_t* ext, > ulint col, > > > > ulint* len); > > > > >struct row_ext_t{ > ulint n_ext; > const ulint* ext; > byte* buf; > ulint max_len; > > > > page_size_t page_size; > > > ulint len[1]; >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ext.ic" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ext.ic" >static inline >const byte* >row_ext_lookup_ith( > > const row_ext_t* ext, > ulint i, > ulint* len) > >{ > do { } while(0); > do { } while(0); > do { } while(0); > > *len = ext->len[i]; > > do { } while(0); > do { } while(0); > > if (*len == 0) { > > return(field_ref_zero); > } else { > return(ext->buf + i * ext->max_len); > } >} > > > > > >static inline >const byte* >row_ext_lookup( > > const row_ext_t* ext, > ulint col, > > > > ulint* len) > >{ > ulint i; > > do { } while(0); > do { } while(0); > > for (i = 0; i < ext->n_ext; i++) { > if (col == ext->ext[i]) { > return(row_ext_lookup_ith(ext, i, len)); > } > } > > return(__null); >} ># 101 "/buildbot/mariadb-10.2.31/storage/innobase/include/row0ext.h" 2 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0crypt.h" 1 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0crypt.h" >extern my_bool srv_encrypt_log; > > > > > > > >__attribute__((visibility ("hidden"))) >bool >log_crypt_init(); > > > > > >__attribute__((visibility ("hidden"))) >void >log_crypt_write_checkpoint_buf( > > byte* buf); > > > > >__attribute__((visibility ("hidden"))) >bool >log_crypt_101_read_checkpoint(const byte* buf); > > > > >__attribute__((visibility ("hidden"))) >bool >log_crypt_101_read_block(byte* buf); > > > > >__attribute__((visibility ("hidden"))) >bool >log_crypt_read_checkpoint_buf(const byte* buf); > > > > > > >__attribute__((visibility ("hidden"))) >void >log_crypt(byte* buf, lsn_t lsn, ulint size, bool decrypt = false); ># 92 "/buildbot/mariadb-10.2.31/storage/innobase/include/log0crypt.h" >__attribute__((visibility ("hidden"))) >bool >log_tmp_block_encrypt( > const byte* src, > ulint size, > byte* dst, > uint64_t offs, > bool encrypt = true) > __attribute__((warn_unused_result, nonnull)); > > > > > > > >inline >bool >log_tmp_block_decrypt( > const byte* src, > ulint size, > byte* dst, > uint64_t offs) >{ > return(log_tmp_block_encrypt(src, size, dst, offs, false)); >} > > >inline bool log_tmp_is_encrypted() { return srv_encrypt_log; } ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/data0data.h" 1 ># 35 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.h" 1 ># 32 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0roll.h" 1 ># 34 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0roll.h" >extern bool trx_rollback_or_clean_is_active; >extern const trx_t* trx_roll_crash_recv_trx; > > > > > > >ulint >trx_is_recv( > > const trx_t* trx); > > > >trx_savept_t >trx_savept_take( > > trx_t* trx); > > > > > > > >trx_undo_rec_t* >trx_roll_pop_top_rec_of_trx(trx_t* trx, roll_ptr_t* roll_ptr, mem_heap_t* heap) > __attribute__((nonnull, warn_unused_result)); > > > >bool >trx_roll_must_shutdown(); > > > > > >void >trx_rollback_or_clean_recovered( > > ulint all); ># 85 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0roll.h" >extern "C" >os_thread_ret_t >trx_rollback_or_clean_all_recovered( > > void* arg __attribute__((unused))); > > > > > >roll_node_t* >roll_node_create( > > mem_heap_t* heap); > > > >que_thr_t* >trx_rollback_step( > > que_thr_t* thr); > > > >dberr_t >trx_rollback_for_mysql( > > trx_t* trx) > __attribute__((nonnull)); > > > >dberr_t >trx_rollback_last_sql_stat_for_mysql( > > trx_t* trx) > __attribute__((nonnull)); > > > >dberr_t >trx_rollback_to_savepoint( > > trx_t* trx, > trx_savept_t* savept) > > > __attribute__((nonnull(1))); ># 142 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0roll.h" >dberr_t >trx_rollback_to_savepoint_for_mysql( > > trx_t* trx, > const char* savepoint_name, > int64_t* mysql_binlog_cache_pos) > > > > > > __attribute__((nonnull, warn_unused_result)); > > > > > > >dberr_t >trx_savepoint_for_mysql( > > trx_t* trx, > const char* savepoint_name, > int64_t binlog_cache_pos) > > > > __attribute__((nonnull)); > > > > > >dberr_t >trx_release_savepoint_for_mysql( > > trx_t* trx, > const char* savepoint_name) > __attribute__((nonnull, warn_unused_result)); > > >void >trx_roll_savepoints_free( > > trx_t* trx, > trx_named_savept_t* savep); > > > >enum roll_node_state { > ROLL_NODE_NONE = 0, > ROLL_NODE_SEND, > > ROLL_NODE_WAIT > >}; > > >struct roll_node_t{ > que_common_t common; > enum roll_node_state state; > const trx_savept_t* savept; > > > que_thr_t* undo_thr; >}; > > >struct trx_named_savept_t{ > char* name; > trx_savept_t savept; > > int64_t mysql_binlog_cache_pos; > > > > > ut_list_node<trx_named_savept_t> > trx_savepoints; > >}; > ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0roll.ic" 1 ># 225 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0roll.h" 2 ># 33 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.h" 2 > > > > > > >extern ib_mutex_t que_thr_mutex; > > > > >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, > row_prebuilt_t* prebuilt); > > > >void >que_graph_free_recursive( > > que_node_t* node); > > >void >que_graph_free( > > que_t* graph); ># 107 "/buildbot/mariadb-10.2.31/storage/innobase/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); > > > > > > >que_thr_t* >que_thr_end_lock_wait( > > trx_t* trx); ># 161 "/buildbot/mariadb-10.2.31/storage/innobase/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 >thr_is_recv( > > const que_thr_t* thr); > > >static inline >ulint >que_node_get_type( > > const 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); > > > > >que_node_t* >que_node_get_containing_loop_node( > > 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 >que_node_t* >que_node_list_get_last( > > > que_node_t* node_list); > > > >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); > > > >dberr_t >que_eval_sql( > > pars_info_t* info, > const char* sql, > ulint reserve_dict_mutex, > > > trx_t* trx); > > > > > > >que_thr_t* >que_fork_scheduler_round_robin( > > que_fork_t* fork, > que_thr_t* thr); > > >enum que_thr_state_t { > QUE_THR_RUNNING, > QUE_THR_PROCEDURE_WAIT, > > > > QUE_THR_COMPLETED, > QUE_THR_COMMAND_WAIT, > QUE_THR_LOCK_WAIT, > QUE_THR_SUSPENDED >}; > > >enum que_thr_lock_t { > QUE_THR_LOCK_NOLOCK, > QUE_THR_LOCK_ROW, > QUE_THR_LOCK_TABLE >}; > > >enum que_cur_t { > QUE_CUR_NOT_DEFINED, > QUE_CUR_START, > QUE_CUR_END >}; > > > > >struct que_thr_t{ > que_common_t common; > ulint magic_n; > > que_node_t* child; > que_t* graph; > que_thr_state_t state; > ulint is_active; ># 362 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.h" > que_node_t* run_node; > > > que_node_t* prev_node; > > ulint resource; > > ulint lock_state; > > struct srv_slot_t* > slot; > > > > > ut_list_node<que_thr_t> > thrs; > > ut_list_node<que_thr_t> > queue; > > ulint fk_cascade_depth; > > > row_prebuilt_t* prebuilt; > > > > >}; > > > > > >struct que_fork_t{ > que_common_t common; > que_t* graph; > ulint fork_type; > ulint n_active_thrs; > > > > > trx_t* trx; > > ulint state; > que_thr_t* caller; > > ut_list_base<que_thr_t, ut_list_node<que_thr_t> que_thr_t::*> > thrs; > > > sym_tab_t* sym_tab; > > > pars_info_t* info; > > > ulint cur_end; > > ulint cur_pos; > > > > > ulint cur_on_row; > > > sel_node_t* last_sel_node; > > ut_list_node<que_fork_t> > graphs; > > > mem_heap_t* heap; > > >}; ># 466 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.ic" 1 ># 28 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.ic" >static inline >trx_t* >thr_get_trx( > > que_thr_t* thr) >{ > do { } while(0); > > return(thr->graph->trx); >} > > > > > > >static inline >ulint >thr_is_recv( > > const que_thr_t* thr) >{ > return(trx_is_recv(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( > > const que_node_t* node) >{ > return(reinterpret_cast<const que_common_t*>(node)->type); >} > > > >static inline >dfield_t* >que_node_get_val( > > que_node_t* node) >{ > do { } while(0); > > return(&(((que_common_t*) node)->val)); >} > > > > >static inline >ulint >que_node_get_val_buf_size( > > que_node_t* node) >{ > do { } while(0); > > return(((que_common_t*) node)->val_buf_size); >} > > > >static inline >void >que_node_set_val_buf_size( > > que_node_t* node, > ulint size) >{ > do { } while(0); > > ((que_common_t*) node)->val_buf_size = size; >} > > > >static inline >void >que_node_set_parent( > > que_node_t* node, > que_node_t* parent) >{ > do { } while(0); > > ((que_common_t*) node)->parent = parent; >} > > > >static inline >dtype_t* >que_node_get_data_type( > > que_node_t* node) >{ > do { } while(0); > > return(dfield_get_type(&((que_common_t*) node)->val)); >} > > > > >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 = (que_common_t*) node; > > cnode->brother = __null; > > if (node_list == __null) { > > return(node); > } > > cnode2 = (que_common_t*) node_list; > > while (cnode2->brother != __null) { > cnode2 = (que_common_t*) cnode2->brother; > } > > cnode2->brother = node; > > return(node_list); >} > > > >static inline >que_node_t* >que_node_list_get_last( > > > que_node_t* node_list) >{ > que_common_t* node; > > do { if (__builtin_expect(!(ulint) (node_list != __null), (0))) { ut_dbg_assertion_failed("node_list != NULL", "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.ic", 202); } } while (0); > > node = (que_common_t*) node_list; > > > while (node->brother != __null) { > node = (que_common_t*) node->brother; > } > > return(node); >} > > > >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) >{ > const que_common_t* cnode; > ulint len; > > cnode = (const que_common_t*) node_list; > len = 0; > > while (cnode != __null) { > len++; > cnode = (const que_common_t*) 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->lock.que_state == TRX_QUE_LOCK_WAIT > || (trx->lock.que_state != TRX_QUE_ROLLING_BACK > && trx->lock.que_state != TRX_QUE_RUNNING)) { > > 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)); >} ># 467 "/buildbot/mariadb-10.2.31/storage/innobase/include/que0que.h" 2 ># 36 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/srv0mon.h" 1 ># 37 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/handler0alter.h" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/handler0alter.h" >void >innobase_rec_to_mysql( > > struct TABLE* table, > const rec_t* rec, > const dict_index_t* index, > const offset_t* offsets) > > __attribute__((nonnull)); > > > >void >innobase_fields_to_mysql( > > struct TABLE* table, > const dict_index_t* index, > const dfield_t* fields) > __attribute__((nonnull)); > > > >void >innobase_row_to_mysql( > > struct TABLE* table, > const dict_table_t* itab, > const dtuple_t* row) > __attribute__((nonnull)); > > > >void >innobase_rec_reset( > > struct TABLE* table) > __attribute__((nonnull)); > > > >struct ib_sequence_t { > > > > > > ib_sequence_t(THD* thd, ulonglong start_value, ulonglong max_value); > > > > ulonglong operator++(int) ; > > > > bool eof() const > { > return(m_eof); > } > > > > ulonglong last() const > { > do { } while(0); > > return(m_next_value); > } > > > > ulonglong max_value() const { return m_max_value; } > >private: > > ulonglong m_max_value; > > > ulong m_increment; > > > ulong m_offset; > > > ulonglong m_next_value; > > > bool m_eof; >}; ># 38 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/ut0stage.h" 1 ># 39 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" 1 ># 41 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" >static inline >trx_undo_rec_t* >trx_undo_rec_copy( > > const trx_undo_rec_t* undo_rec, > mem_heap_t* heap); > > > >static inline >ulint >trx_undo_rec_get_type( > > const trx_undo_rec_t* undo_rec); > > > >static inline >ulint >trx_undo_rec_get_cmpl_info( > > const trx_undo_rec_t* undo_rec); > > > >static inline >ulint >trx_undo_rec_get_extern_storage( > > const trx_undo_rec_t* undo_rec); > > > >static inline >undo_no_t >trx_undo_rec_get_undo_no( > > const trx_undo_rec_t* undo_rec); ># 88 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" >byte* >trx_undo_rec_get_pars( > > trx_undo_rec_t* undo_rec, > ulint* type, > > ulint* cmpl_info, > > bool* updated_extern, > > undo_no_t* undo_no, > table_id_t* table_id) > __attribute__((nonnull)); > > > >byte* >trx_undo_rec_get_row_ref( > > byte* ptr, > > > > > > dict_index_t* index, > dtuple_t** ref, > mem_heap_t* heap); > > > > > >byte* >trx_undo_update_rec_get_sys_cols( > > const byte* ptr, > > > trx_id_t* trx_id, > roll_ptr_t* roll_ptr, > ulint* info_bits); > > > > >byte* >trx_undo_update_rec_get_update( > > const byte* ptr, > > > > > > dict_index_t* index, > ulint type, > > > > > trx_id_t trx_id, > roll_ptr_t roll_ptr, > ulint info_bits, > mem_heap_t* heap, > > upd_t** upd); > > > > > >byte* >trx_undo_rec_get_partial_row( > > const byte* ptr, > > > > > > > dict_index_t* index, > const upd_t* update, > dtuple_t** row, > ulint ignore_prefix, > > > mem_heap_t* heap) > > __attribute__((nonnull, warn_unused_result)); > > > > >dberr_t trx_undo_report_rename(trx_t* trx, const dict_table_t* table) > __attribute__((nonnull, warn_unused_result)); > > > > > > >dberr_t >trx_undo_report_row_operation( > > que_thr_t* thr, > dict_index_t* index, > const dtuple_t* clust_entry, > > > > > > > const upd_t* update, > > ulint cmpl_info, > > const rec_t* rec, > > > const offset_t* offsets, > roll_ptr_t* roll_ptr) > > __attribute__((nonnull(1,2,8), warn_unused_result)); ># 234 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" >bool >trx_undo_prev_version_build( > > const rec_t* index_rec, > > mtr_t* index_mtr, > > const rec_t* rec, > dict_index_t* index, > offset_t* offsets, > mem_heap_t* heap, > > rec_t** old_vers, > > > mem_heap_t* v_heap, > > > > dtuple_t** vrow, > ulint v_status); > > > > > > > >byte* >trx_undo_parse_add_undo_rec( > > byte* ptr, > byte* end_ptr, > ib_page_t* page); > > > >byte* >trx_undo_parse_erase_page_end( > > byte* ptr, > byte* end_ptr, > ib_page_t* page, > mtr_t* mtr); ># 286 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" >byte* >trx_undo_rec_get_col_val( > const byte* ptr, > const byte** field, > ulint* len, > ulint* orig_len); > > > > > > >void >trx_undo_read_v_cols( > const dict_table_t* table, > const byte* ptr, > dtuple_t* row, > bool in_purge); ># 316 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" >const byte* >trx_undo_read_v_idx( > const dict_table_t* table, > const byte* ptr, > bool first_v_col, > bool* is_undo_log, > ulint* field_no); ># 344 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" ># 1 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.ic" 1 ># 29 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.ic" >static inline >ulint >trx_undo_rec_get_type( > > const trx_undo_rec_t* undo_rec) >{ > return(mach_read_from_1(undo_rec + 2) & (16U - 1)); >} > > > > >static inline >ulint >trx_undo_rec_get_cmpl_info( > > const trx_undo_rec_t* undo_rec) >{ > return(mach_read_from_1(undo_rec + 2) / 16U); >} > > > > >static inline >ulint >trx_undo_rec_get_extern_storage( > > const trx_undo_rec_t* undo_rec) >{ > if (mach_read_from_1(undo_rec + 2) & 128U) { > > return((1)); > } > > return((0)); >} > > > > >static inline >undo_no_t >trx_undo_rec_get_undo_no( > > const trx_undo_rec_t* undo_rec) >{ > const byte* ptr; > > ptr = undo_rec + 3; > > return(mach_u64_read_much_compressed(ptr)); >} > > > > >static inline >trx_undo_rec_t* >trx_undo_rec_copy( > > const trx_undo_rec_t* undo_rec, > mem_heap_t* heap) >{ > ulint len; > > len = mach_read_from_2(undo_rec) > - ut_align_offset(undo_rec, ((ulint) srv_page_size)); > do { } while(0); > trx_undo_rec_t* rec = static_cast<trx_undo_rec_t*>( > mem_heap_dup(heap, undo_rec, len)); > mach_write_to_2(rec, len); > return rec; >} ># 345 "/buildbot/mariadb-10.2.31/storage/innobase/include/trx0rec.h" 2 ># 40 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" 2 > > > > >ulint onlineddl_rowlog_rows; >ulint onlineddl_rowlog_pct_used; >ulint onlineddl_pct_progress; > > > >enum row_tab_op { > > ROW_T_INSERT = 0x41, > > ROW_T_UPDATE, > > ROW_T_DELETE >}; > > >enum row_op { > > ROW_OP_INSERT = 0x61, > > ROW_OP_DELETE >}; > > > > > >struct row_log_buf_t { > byte* block; > ut_new_pfx_t block_pfx; > > > mrec_buf_t buf; > > ulint blocks; > ulint bytes; > ulonglong total; > > > >}; > > >class row_log_table_blob_t { >public: > > > > > > > > row_log_table_blob_t() : > offset (BLOB_FREED) {} > > > > > > > > void blob_free() > > { > do { } while(0); > do { } while(0); > ; > ; > offset = BLOB_FREED; > } > > > void blob_alloc(ulonglong offset_arg) { > do { } while(0); > ; > offset = offset_arg; > } > > > > bool is_freed(ulonglong offset_arg) const { > > > do { } while(0); > > do { } while(0); > return(offset_arg < offset); > } >private: > > static const ulonglong BLOB_FREED = ~0ULL; > > > > > > > > ulonglong offset; >}; ># 152 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >typedef std::map< > ulint, > row_log_table_blob_t, > std::less<ulint>, > ut_allocator<std::pair<const ulint, row_log_table_blob_t> > > > page_no_map; ># 171 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >struct row_log_t { > int fd; > ib_mutex_t mutex; > > page_no_map* blobs; > > > > dict_table_t* table; > > > bool same_pk; > > const dtuple_t* add_cols; > > const ulint* col_map; > > dberr_t error; > > trx_id_t max_trx; > > > > row_log_buf_t tail; > > > byte* crypt_tail; > > > row_log_buf_t head; > > byte* crypt_head; > > > const char* path; > >}; > > > > >static __attribute__((warn_unused_result)) >int >row_log_tmpfile( > row_log_t* log) >{ > ; > if (log->fd < 0) { > log->fd = row_merge_file_create_low(log->path); > do { } while(0) > > > ; > if (log->fd >= 0) { > if ((monitor_set_tbl[MONITOR_ALTER_TABLE_LOG_FILES / (sizeof(ulint) * 8)] & ((ulint)1 << (MONITOR_ALTER_TABLE_LOG_FILES % (sizeof(ulint) * 8))))) { ib_uint64_t value; value = my_atomic_add64( (int64*) &(innodb_counter_value[MONITOR_ALTER_TABLE_LOG_FILES].mon_value), 1) + 1; if (value > (ib_uint64_t) (innodb_counter_value[MONITOR_ALTER_TABLE_LOG_FILES].mon_max_value)) { (innodb_counter_value[MONITOR_ALTER_TABLE_LOG_FILES].mon_max_value) = value; } }; > } > } > > do { return(log->fd); } while(0); >} > > > > >static __attribute__((warn_unused_result)) >bool >row_log_block_allocate( > row_log_buf_t& log_buf) >{ > ; > if (log_buf.block == __null) { > do { } while(0) > > > ; > > log_buf.block = ut_allocator<byte>(mem_key_row_log_buf) > .allocate_large(srv_sort_buf_size, &log_buf.block_pfx); > > if (log_buf.block == __null) { > do { return(false); } while(0); > } > } > do { return(true); } while(0); >} > > > >static >void >row_log_block_free( > row_log_buf_t& log_buf) >{ > ; > if (log_buf.block != __null) { > ut_allocator<byte>(mem_key_row_log_buf).deallocate_large( > log_buf.block, &log_buf.block_pfx); > log_buf.block = __null; > } > do { return; } while(0); >} > > > >void >row_log_online_op( > > dict_index_t* index, > const dtuple_t* tuple, > trx_id_t trx_id) > >{ > byte* b; > ulint extra_size; > ulint size; > ulint mrec_size; > ulint avail_size; > row_log_t* log; > > do { } while(0); > do { } while(0); > do { } while(0) > ; > > if (index->is_corrupted()) { > return; > } > > do { } while(0); > > > > > > size = rec_get_converted_size_temp( > index, tuple->fields, tuple->n_fields, &extra_size); > do { } while(0); > do { } while(0); > > mrec_size = 2 > + (extra_size >= 0x80) + size > + (trx_id ? 6 : 0); > > log = index->online_log; > (&log->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 315); > > if (trx_id > log->max_trx) { > log->max_trx = trx_id; > } > > if (!row_log_block_allocate(log->tail)) { > log->error = DB_OUT_OF_MEMORY; > goto err_exit; > } > > ((void) (log->tail.buf), (void) (sizeof log->tail.buf)); > > do { } while(0); > avail_size = srv_sort_buf_size - log->tail.bytes; > > if (mrec_size > avail_size) { > b = log->tail.buf; > } else { > b = log->tail.block + log->tail.bytes; > } > > if (trx_id != 0) { > *b++ = ROW_OP_INSERT; > trx_write_trx_id(b, trx_id); > b += 6; > } else { > *b++ = ROW_OP_DELETE; > } > > if (extra_size < 0x80) { > *b++ = (byte) extra_size; > } else { > do { } while(0); > *b++ = (byte) (0x80 | (extra_size >> 8)); > *b++ = (byte) extra_size; > } > > rec_convert_dtuple_to_temp( > b + extra_size, index, tuple->fields, tuple->n_fields); > b += size; > > if (mrec_size >= avail_size) { > const os_offset_t byte_offset > = (os_offset_t) log->tail.blocks > * srv_sort_buf_size; > IORequest request(IORequest::WRITE); > byte* buf = log->tail.block; > > if (byte_offset + srv_sort_buf_size >= srv_online_max_size) { > goto write_failed; > } > > if (mrec_size == avail_size) { > do { } while(0); > } else { > do { } while(0); > memcpy(buf + log->tail.bytes, > log->tail.buf, avail_size); > } > > do {} while(0); > > if (row_log_tmpfile(log) < 0) { > log->error = DB_OUT_OF_MEMORY; > goto err_exit; > } > > > > if (log_tmp_is_encrypted()) { > if (!log_tmp_block_encrypt( > buf, srv_sort_buf_size, > log->crypt_tail, byte_offset)) { > log->error = DB_DECRYPTION_FAILED; > goto write_failed; > } > > srv_stats.n_rowlog_blocks_encrypted.inc(); > buf = log->crypt_tail; > } > > log->tail.blocks++; > if (DB_SUCCESS != os_file_write_func(request, "(modification log)", log->fd, buf, byte_offset, srv_sort_buf_size) > > > > ) { >write_failed: > > > > index->type |= 16; > } > > ((void) (log->tail.block), (void) (srv_sort_buf_size)); > ((void) (buf), (void) (srv_sort_buf_size)); > > memcpy(log->tail.block, log->tail.buf + avail_size, > mrec_size - avail_size); > log->tail.bytes = mrec_size - avail_size; > } else { > log->tail.bytes += mrec_size; > do { } while(0); > } > > ((void) (log->tail.buf), (void) (sizeof log->tail.buf)); >err_exit: > (&log->mutex)->exit(); >} > > > > >dberr_t >row_log_table_get_error( > > const dict_index_t* index) > >{ > do { } while(0); > do { } while(0); > return(index->online_log->error); >} > > > > >static __attribute__((nonnull, warn_unused_result)) >byte* >row_log_table_open( > > row_log_t* log, > ulint size, > ulint* avail) >{ > (&log->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 451); > > ((void) (log->tail.buf), (void) (sizeof log->tail.buf)); > > if (log->error != DB_SUCCESS) { >err_exit: > (&log->mutex)->exit(); > return(__null); > } > > if (!row_log_block_allocate(log->tail)) { > log->error = DB_OUT_OF_MEMORY; > goto err_exit; > } > > do { } while(0); > *avail = srv_sort_buf_size - log->tail.bytes; > > if (size > *avail) { > > do { } while(0); > return(log->tail.buf); > } else { > return(log->tail.block + log->tail.bytes); > } >} > > > >static __attribute__((nonnull)) >void >row_log_table_close_func( > > dict_index_t* index, > > > > ulint size, > ulint avail) >{ > row_log_t* log = index->online_log; > > do { } while(0); > > if (size >= avail) { > const os_offset_t byte_offset > = (os_offset_t) log->tail.blocks > * srv_sort_buf_size; > IORequest request(IORequest::WRITE); > byte* buf = log->tail.block; > > if (byte_offset + srv_sort_buf_size >= srv_online_max_size) { > goto write_failed; > } > > if (size == avail) { > do { } while(0); > } else { > do { } while(0); > memcpy(buf + log->tail.bytes, log->tail.buf, avail); > } > > do {} while(0); > > if (row_log_tmpfile(log) < 0) { > log->error = DB_OUT_OF_MEMORY; > goto err_exit; > } > > > > if (log_tmp_is_encrypted()) { > if (!log_tmp_block_encrypt( > log->tail.block, srv_sort_buf_size, > log->crypt_tail, byte_offset, > index->table->space)) { > log->error = DB_DECRYPTION_FAILED; > goto err_exit; > } > > srv_stats.n_rowlog_blocks_encrypted.inc(); > buf = log->crypt_tail; > } > > log->tail.blocks++; > if (DB_SUCCESS != os_file_write_func(request, "(modification log)", log->fd, buf, byte_offset, srv_sort_buf_size) > > > > ) { >write_failed: > log->error = DB_ONLINE_LOG_TOO_BIG; > } > ((void) (log->tail.block), (void) (srv_sort_buf_size)); > ((void) (buf), (void) (srv_sort_buf_size)); > memcpy(log->tail.block, log->tail.buf + avail, size - avail); > log->tail.bytes = size - avail; > } else { > log->tail.bytes += size; > do { } while(0); > } > > log->tail.total += size; > ((void) (log->tail.buf), (void) (sizeof log->tail.buf)); >err_exit: > (&log->mutex)->exit(); > > my_atomic_add64((int64*) (&onlineddl_rowlog_rows), (1)); > > onlineddl_rowlog_pct_used = static_cast<ulint>((log->tail.total * 10000) / srv_online_max_size); >} ># 576 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >bool >row_log_col_is_indexed( > const dict_index_t* index, > ulint v_no) >{ > return((&(index->online_log->table)->v_cols[v_no]) > ->m_col.ord_part); >} > > > > >void >row_log_table_delete( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > const byte* sys) > >{ > ulint old_pk_extra_size; > ulint old_pk_size; > ulint mrec_size; > ulint avail_size; > mem_heap_t* heap = __null; > const dtuple_t* old_pk; > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0) > > ; > > if (index->online_status != ONLINE_INDEX_CREATION > || (index->type & 16) || index->table->corrupted > || index->online_log->error != DB_SUCCESS) { > return; > } > > dict_table_t* new_table = index->online_log->table; > dict_index_t* new_index = ((new_table)->indexes).start; > > do { } while(0); > do { } while(0); > > > if (index->online_log->same_pk) { > dtuple_t* tuple; > do { } while(0); > > > > heap = mem_heap_create_func((6 + (sizeof(dtuple_t) + (new_index->n_uniq + 2) * sizeof(dfield_t))), 0) > > ; > old_pk = tuple = dtuple_create(heap, new_index->n_uniq + 2); > dict_index_copy_types(tuple, new_index, tuple->n_fields); > dtuple_set_n_fields_cmp(tuple, new_index->n_uniq); > > for (ulint i = 0; i < dtuple_get_n_fields(tuple); i++) { > ulint len; > const void* field = ((rec) + rec_get_nth_field_offs(offsets, i, &len)) > ; > dfield_t* dfield = dtuple_get_nth_field( > tuple, i); > do { } while(0); > do { } while(0); > dfield_set_data(dfield, field, len); > } > > if (sys) { > dfield_set_data( > dtuple_get_nth_field(tuple, > new_index->n_uniq), > sys, 6); > dfield_set_data( > dtuple_get_nth_field(tuple, > new_index->n_uniq + 1), > sys + 6, 7); > } > } else { > > old_pk = row_log_table_get_pk( > rec, index, offsets, __null, &heap); > > if (!old_pk) { > do { } while(0); > if (heap) { > goto func_exit; > } > return; > } > } > > do { } while(0) > ; > do { } while(0) > ; > old_pk_size = rec_get_converted_size_temp( > new_index, old_pk->fields, old_pk->n_fields, > &old_pk_extra_size); > do { } while(0); > > > mrec_size = 2 + old_pk_size; > > if (byte* b = row_log_table_open(index->online_log, > mrec_size, &avail_size)) { > *b++ = ROW_T_DELETE; > *b++ = static_cast<byte>(old_pk_extra_size); > > rec_convert_dtuple_to_temp( > b + old_pk_extra_size, new_index, > old_pk->fields, old_pk->n_fields); > > b += old_pk_size; > > row_log_table_close_func(index, mrec_size, avail_size); > } > >func_exit: > mem_heap_free(heap); >} > > > >static >void >row_log_table_low_redundant( > > const rec_t* rec, > > > dict_index_t* index, > > bool insert, > > const dtuple_t* old_pk, > > > const dict_index_t* new_index) > > >{ > ulint old_pk_size; > ulint old_pk_extra_size; > ulint size; > ulint extra_size; > ulint mrec_size; > ulint avail_size; > mem_heap_t* heap = __null; > dtuple_t* tuple; > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > heap = mem_heap_create_func(((sizeof(dtuple_t) + (index->n_fields) * sizeof(dfield_t))), 0); > tuple = dtuple_create(heap, index->n_fields); > dict_index_copy_types(tuple, index, index->n_fields); > > dtuple_set_n_fields_cmp(tuple, dict_index_get_n_unique(index)); > > if (rec_get_1byte_offs_flag(rec)) { > for (ulint i = 0; i < index->n_fields; i++) { > dfield_t* dfield; > ulint len; > const void* field; > > dfield = dtuple_get_nth_field(tuple, i); > field = ((rec) + rec_get_nth_field_offs_old(rec, i, &len)); > > dfield_set_data(dfield, field, len); > } > } else { > for (ulint i = 0; i < index->n_fields; i++) { > dfield_t* dfield; > ulint len; > const void* field; > > dfield = dtuple_get_nth_field(tuple, i); > field = ((rec) + rec_get_nth_field_offs_old(rec, i, &len)); > > dfield_set_data(dfield, field, len); > > if (rec_2_is_field_extern(rec, i)) { > dfield_set_ext(dfield); > } > } > } > > size = rec_get_converted_size_temp( > index, tuple->fields, tuple->n_fields, &extra_size); > > mrec_size = 2 + size + (extra_size >= 0x80); > > if (insert || index->online_log->same_pk) { > do { } while(0); > old_pk_extra_size = old_pk_size = 0; > } else { > do { } while(0); > do { } while(0); > do { } while(0) > ; > do { } while(0) > ; > > old_pk_size = rec_get_converted_size_temp( > new_index, old_pk->fields, old_pk->n_fields, > &old_pk_extra_size); > do { } while(0); > mrec_size += 1 + old_pk_size; > } > > if (byte* b = row_log_table_open(index->online_log, > mrec_size, &avail_size)) { > *b++ = insert ? ROW_T_INSERT : ROW_T_UPDATE; > > if (old_pk_size) { > *b++ = static_cast<byte>(old_pk_extra_size); > > rec_convert_dtuple_to_temp( > b + old_pk_extra_size, new_index, > old_pk->fields, old_pk->n_fields); > b += old_pk_size; > } > > if (extra_size < 0x80) { > *b++ = static_cast<byte>(extra_size); > } else { > do { } while(0); > *b++ = static_cast<byte>(0x80 | (extra_size >> 8)); > *b++ = static_cast<byte>(extra_size); > } > > rec_convert_dtuple_to_temp( > b + extra_size, index, tuple->fields, tuple->n_fields); > b += size; > > row_log_table_close_func(index, mrec_size, avail_size); > } > > mem_heap_free(heap); >} > > > >static >void >row_log_table_low( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > bool insert, > const dtuple_t* old_pk) > >{ > ulint omit_size; > ulint old_pk_size; > ulint old_pk_extra_size; > ulint extra_size; > ulint mrec_size; > ulint avail_size; > const dict_index_t* new_index; > > new_index = ((index->online_log->table)->indexes).start; > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0) > > ; > do { } while(0); > do { } while(0); > do { } while(0); > > > > do { } while(0); > do { } while(0); > > if (index->online_status != ONLINE_INDEX_CREATION > || (index->type & 16) || index->table->corrupted > || index->online_log->error != DB_SUCCESS) { > return; > } > > if (!rec_offs_comp(offsets)) { > row_log_table_low_redundant( > rec, index, insert, old_pk, new_index); > return; > } > > do { } while(0); > do { } while(0); > > omit_size = 5; > > extra_size = rec_offs_extra_size(offsets) - omit_size; > > mrec_size = 2 > + (extra_size >= 0x80) + rec_offs_size(offsets) - omit_size; > > if (insert || index->online_log->same_pk) { > do { } while(0); > old_pk_extra_size = old_pk_size = 0; > } else { > do { } while(0); > do { } while(0); > do { } while(0) > ; > do { } while(0) > ; > > old_pk_size = rec_get_converted_size_temp( > new_index, old_pk->fields, old_pk->n_fields, > &old_pk_extra_size); > do { } while(0); > mrec_size += 1 + old_pk_size; > } > > if (byte* b = row_log_table_open(index->online_log, > mrec_size, &avail_size)) { > *b++ = insert ? ROW_T_INSERT : ROW_T_UPDATE; > > if (old_pk_size) { > *b++ = static_cast<byte>(old_pk_extra_size); > > rec_convert_dtuple_to_temp( > b + old_pk_extra_size, new_index, > old_pk->fields, old_pk->n_fields); > b += old_pk_size; > } > > if (extra_size < 0x80) { > *b++ = static_cast<byte>(extra_size); > } else { > do { } while(0); > *b++ = static_cast<byte>(0x80 | (extra_size >> 8)); > *b++ = static_cast<byte>(extra_size); > } > > memcpy(b, rec - rec_offs_extra_size(offsets), extra_size); > b += extra_size; > memcpy(b, rec, rec_offs_data_size(offsets)); > b += rec_offs_data_size(offsets); > > row_log_table_close_func(index, mrec_size, avail_size); > } >} > > > > >void >row_log_table_update( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > const dtuple_t* old_pk) > >{ > row_log_table_low(rec, index, offsets, false, old_pk); >} > > > > > > >static >const dict_col_t* >row_log_table_get_pk_old_col( > > const dict_table_t* table, > const ulint* col_map, > ulint col_no) >{ > for (ulint i = 0; i < table->n_cols; i++) { > if (col_no == col_map[i]) { > return((&(table)->cols[i])); > } > } > > return(__null); >} ># 994 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >static >dberr_t >row_log_table_get_pk_col( > const dict_col_t* col, > const dict_field_t* ifield, > dfield_t* dfield, > mem_heap_t* heap, > const rec_t* rec, > const offset_t* offsets, > ulint i, > const page_size_t& page_size, > ulint max_len) >{ > const byte* field; > ulint len; > > field = ((rec) + rec_get_nth_field_offs(offsets, i, &len)); > > if (len == 0xFFFFFFFF) { > return(DB_INVALID_NULL); > } > > if (rec_offs_nth_extern(offsets, i)) { > ulint field_len = ifield->prefix_len; > byte* blob_field; > > if (!field_len) { > field_len = ifield->fixed_len; > if (!field_len) { > field_len = max_len + 1; > } > } > > blob_field = static_cast<byte*>( > mem_heap_alloc(heap, field_len)); > > len = btr_copy_externally_stored_field_prefix( > blob_field, field_len, page_size, field, len); > if (len >= max_len + 1) { > return(DB_TOO_BIG_INDEX_COL); > } > > dfield_set_data(dfield, blob_field, len); > } else { > dfield_set_data(dfield, mem_heap_dup(heap, field, len), len); > } > > return(DB_SUCCESS); >} > > > > > > >const dtuple_t* >row_log_table_get_pk( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets, > byte* sys, > > mem_heap_t** heap) >{ > dtuple_t* tuple = __null; > row_log_t* log = index->online_log; > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0) > > ; > > do { } while(0); > do { } while(0); > > if (log->same_pk) { > > if (sys) { > > ulint trx_id_offs = index->trx_id_offset; > > if (!trx_id_offs) { > ulint pos = dict_index_get_sys_col_pos( > index, 1); > ulint len; > do { } while(0); > > if (!offsets) { > offsets = rec_get_offsets_func(rec, index, __null, pos + 1, heap) > > ; > } > > trx_id_offs = rec_get_nth_field_offs( > offsets, pos, &len); > do { } while(0); > } > > memcpy(sys, rec + trx_id_offs, > 6 + 7); > } > > return(__null); > } > > (&log->mutex)->enter( uint32_t(srv_n_spin_wait_rounds), uint32_t(srv_spin_wait_delay), "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 1104); > > > if (log->error == DB_SUCCESS) { > dict_table_t* new_table = log->table; > dict_index_t* new_index > = ((new_table)->indexes).start; > const ulint new_n_uniq > = dict_index_get_n_unique(new_index); > > if (!*heap) { > ulint size = 0; > > if (!offsets) { > size += (1 + REC_OFFS_HEADER_SIZE > + index->n_fields) > * sizeof *offsets; > } > > for (ulint i = 0; i < new_n_uniq; i++) { > size += dict_col_get_min_size( > dict_index_get_nth_col(new_index, i)); > } > > *heap = mem_heap_create_func(((sizeof(dtuple_t) + (new_n_uniq + 2) * sizeof(dfield_t)) + size), 0) > ; > } > > if (!offsets) { > offsets = rec_get_offsets_func(rec, index, __null, ((ulint)(-1)), heap) > ; > } > > tuple = dtuple_create(*heap, new_n_uniq + 2); > dict_index_copy_types(tuple, new_index, tuple->n_fields); > dtuple_set_n_fields_cmp(tuple, new_n_uniq); > > const ulint max_len = ((dict_table_get_format(new_table) < UNIV_FORMAT_B) ? (768 - 1) : 3072); > > const page_size_t& page_size > = dict_table_page_size(index->table); > > for (ulint new_i = 0; new_i < new_n_uniq; new_i++) { > dict_field_t* ifield; > dfield_t* dfield; > ulint prtype; > ulint mbminlen, mbmaxlen; > > ifield = ((new_index)->fields + (new_i)); > dfield = dtuple_get_nth_field(tuple, new_i); > > const ulint col_no > = dict_field_get_col(ifield)->ind; > > if (const dict_col_t* col > = row_log_table_get_pk_old_col( > index->table, log->col_map, col_no)) { > ulint i = dict_col_get_clust_pos(col, index); > > if (i == ((ulint)(-1))) { > do { } while(0); > log->error = DB_CORRUPTION; > goto err_exit; > } > > log->error = row_log_table_get_pk_col( > col, ifield, dfield, *heap, > rec, offsets, i, page_size, max_len); > > if (log->error != DB_SUCCESS) { >err_exit: > tuple = __null; > goto func_exit; > } > > mbminlen = col->mbminlen; > mbmaxlen = col->mbmaxlen; > prtype = col->prtype; > } else { > > > > do { } while(0); > > dfield_copy(dfield, dtuple_get_nth_field( > log->add_cols, col_no)); > mbminlen = dfield->type.mbminlen; > mbmaxlen = dfield->type.mbmaxlen; > prtype = dfield->type.prtype; > } > > do { } while(0); > do { } while(0); > > if (ifield->prefix_len) { > ulint len = dtype_get_at_most_n_mbchars( > prtype, mbminlen, mbmaxlen, > ifield->prefix_len, > dfield_get_len(dfield), > static_cast<const char*>( > dfield_get_data(dfield))); > > do { } while(0); > dfield_set_len(dfield, len); > } > } > > const byte* trx_roll = rec > + row_get_trx_id_offset(index, offsets); > > > > > if (sys) { > memcpy(sys, trx_roll, > 6 + 7); > trx_roll = sys; > } else { > trx_roll = static_cast<const byte*>( > mem_heap_dup( > *heap, trx_roll, > 6 + 7)); > } > > dfield_set_data(dtuple_get_nth_field(tuple, new_n_uniq), > trx_roll, 6); > dfield_set_data(dtuple_get_nth_field(tuple, new_n_uniq + 1), > trx_roll + 6, 7); > } > >func_exit: > (&log->mutex)->exit(); > return(tuple); >} > > > > >void >row_log_table_insert( > > const rec_t* rec, > > dict_index_t* index, > > const offset_t* offsets) >{ > row_log_table_low(rec, index, offsets, true, __null); >} > > > >void >row_log_table_blob_free( > > dict_index_t* index, > ulint page_no) >{ > do { } while(0); > do { } while(0); > do { } while(0) > > ; > do { } while(0); > > if (index->online_log->error != DB_SUCCESS) { > return; > } > > page_no_map* blobs = index->online_log->blobs; > > if (blobs == __null) { > index->online_log->blobs = blobs = ::new(std::nothrow) page_no_map(); > } > > > > > > > > const page_no_map::value_type v(page_no, > row_log_table_blob_t()); > > std::pair<page_no_map::iterator,bool> p = blobs->insert(v); > > if (!p.second) { > > do { } while(0); > p.first->second.blob_free(); > } > >} > > > >void >row_log_table_blob_alloc( > > dict_index_t* index, > ulint page_no) >{ > do { } while(0); > do { } while(0); > > do { } while(0) > > ; > > do { } while(0); > > if (index->online_log->error != DB_SUCCESS) { > return; > } > > > > if (page_no_map* blobs = index->online_log->blobs) { > page_no_map::iterator p = blobs->find(page_no); > > if (p != blobs->end()) { > do { } while(0); > p->second.blob_alloc(index->online_log->tail.total); > } > } >} > > > > >static __attribute__((nonnull, warn_unused_result)) >const dtuple_t* >row_log_table_apply_convert_mrec( > > const mrec_t* mrec, > dict_index_t* index, > const offset_t* offsets, > const row_log_t* log, > mem_heap_t* heap, > trx_id_t trx_id, > dberr_t* error) > > >{ > dtuple_t* row; > > *error = DB_SUCCESS; > > > if (log->add_cols) { > row = dtuple_copy(log->add_cols, heap); > > for (ulint i = 0; i < dict_table_get_n_cols(log->table); i++) { > dict_col_copy_type( > (&(log->table)->cols[i]), > dfield_get_type(dtuple_get_nth_field(row, i))); > } > } else { > row = dtuple_create(heap, dict_table_get_n_cols(log->table)); > dict_table_copy_types(row, log->table); > } > > for (ulint i = 0; i < rec_offs_n_fields(offsets); i++) { > const dict_field_t* ind_field > = ((index)->fields + (i)); > > if (ind_field->prefix_len) { > > > > > > do { } while(0); > continue; > } > > const dict_col_t* col > = dict_field_get_col(ind_field); > > ulint col_no > = log->col_map[dict_col_get_no(col)]; > > if (col_no == ((ulint)(-1))) { > > continue; > } > > dfield_t* dfield > = dtuple_get_nth_field(row, col_no); > > ulint len; > const byte* data; > > if (rec_offs_nth_extern(offsets, i)) { > do { } while(0); > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 1399); > > if (const page_no_map* blobs = log->blobs) { > data = ((mrec) + rec_get_nth_field_offs(offsets, i, &len)) > ; > do { } while(0); > > ulint page_no = mach_read_from_4( > data + len - (20 > - 4)); > page_no_map::const_iterator p = blobs->find( > page_no); > if (p != blobs->end() > && p->second.is_freed(log->head.total)) { > > > *error = DB_MISSING_HISTORY; > dfield_set_data(dfield, data, len); > dfield_set_ext(dfield); > goto blob_done; > } > } > > data = btr_rec_copy_externally_stored_field( > mrec, offsets, > dict_table_page_size(index->table), > i, &len, heap); > do { if (__builtin_expect(!(ulint) (data), (0))) { ut_dbg_assertion_failed("data", "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 1426); } } while (0); > dfield_set_data(dfield, data, len); >blob_done: > rw_lock_x_unlock_func(dict_index_get_lock(index)); > } else { > data = ((mrec) + rec_get_nth_field_offs(offsets, i, &len)); > dfield_set_data(dfield, data, len); > } > > if (len != 0xFFFFFFFF && col->mtype == 13 > && col->len != len && !dict_table_is_comp(log->table)) { > > do { } while(0); > if (dict_table_is_comp(index->table)) { > byte* buf = (byte*) mem_heap_alloc(heap, > col->len); > memcpy(buf, dfield->data, len); > memset(buf + len, 0x20, col->len - len); > > dfield_set_data(dfield, buf, col->len); > } else { > > > > do { } while(0); > *error = DB_CORRUPTION; > return(__null); > } > } > > > const dict_col_t* new_col > = (&(log->table)->cols[col_no]); > do { } while(0); > > > do { } while(0); > do { } while(0) > ; > > if (new_col->prtype == col->prtype) { > continue; > } > > if ((new_col->prtype & 256U) > && dfield_is_null(dfield)) { > > *error = DB_INVALID_NULL; > return(__null); > } > > > dfield_get_type(dfield)->prtype = new_col->prtype; > > do { } while(0) > ; > } > > return(row); >} > > > > >static __attribute__((nonnull, warn_unused_result)) >dberr_t >row_log_table_apply_insert_low( > > que_thr_t* thr, > const dtuple_t* row, > > trx_id_t trx_id, > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > row_merge_dup_t* dup) > >{ > dberr_t error; > dtuple_t* entry; > const row_log_t*log = dup->index->online_log; > dict_index_t* index = ((log->table)->indexes).start; > ulint n_index = 0; > > do { } while(0); > do { } while(0); > > do {} while (0) > > ; > > static const ulint flags > = (BTR_CREATE_FLAG > | BTR_NO_LOCKING_FLAG > | BTR_NO_UNDO_LOG_FLAG > | BTR_KEEP_SYS_FLAG); > > entry = row_build_index_entry(row, __null, index, heap); > > error = row_ins_clust_index_entry_low( > flags, BTR_MODIFY_TREE, index, index->n_uniq, > entry, 0, thr); > > switch (error) { > case DB_SUCCESS: > break; > case DB_SUCCESS_LOCKED_REC: > > return(DB_SUCCESS); > default: > return(error); > } > > do { } while(0); > > for (n_index += index->type != 1; > (index = (((index)->indexes).next)); n_index++) { > if (index->type & 32) { > continue; > } > > entry = row_build_index_entry(row, __null, index, heap); > error = row_ins_sec_index_entry_low( > flags, BTR_MODIFY_TREE, > index, offsets_heap, heap, entry, trx_id, thr); > > if (error != DB_SUCCESS) { > if (error == DB_DUPLICATE_KEY) { > thr_get_trx(thr)->error_key_num = n_index; > } > break; > } > } > > return(error); >} > > > > >static __attribute__((nonnull, warn_unused_result)) >dberr_t >row_log_table_apply_insert( > > que_thr_t* thr, > const mrec_t* mrec, > const offset_t* offsets, > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > row_merge_dup_t* dup, > > trx_id_t trx_id) >{ > const row_log_t*log = dup->index->online_log; > dberr_t error; > const dtuple_t* row = row_log_table_apply_convert_mrec( > mrec, dup->index, offsets, log, heap, trx_id, &error); > > switch (error) { > case DB_MISSING_HISTORY: > do { } while(0); > > > > > > > return(DB_SUCCESS); > case DB_SUCCESS: > do { } while(0); > break; > default: > do { } while(0); > case DB_INVALID_NULL: > do { } while(0); > return(error); > } > > error = row_log_table_apply_insert_low( > thr, row, trx_id, offsets_heap, heap, dup); > if (error != DB_SUCCESS) { > > > innobase_row_to_mysql(dup->table, log->table, row); > } > return(error); >} > > > > >static __attribute__((nonnull, warn_unused_result)) >dberr_t >row_log_table_apply_delete_low( > > btr_pcur_t* pcur, > > const offset_t* offsets, > mem_heap_t* heap, > mtr_t* mtr) > >{ > dberr_t error; > row_ext_t* ext; > dtuple_t* row; > dict_index_t* index = (&(pcur)->btr_cur)->index; > > do { } while(0); > > do {} while (0) > > > ; > > if ((((index)->indexes).next)) { > > row = row_build( > 1, index, ((pcur)->btr_cur.page_cur.rec), > offsets, __null, __null, __null, &ext, heap); > } else { > row = __null; > } > > btr_cur_pessimistic_delete(&error, (0), (&(pcur)->btr_cur), > BTR_CREATE_FLAG, false, mtr); > (mtr)->commit(); > > if (error != DB_SUCCESS) { > return(error); > } > > while ((index = (((index)->indexes).next)) != __null) { > if (index->type & 32) { > continue; > } > > const dtuple_t* entry = row_build_index_entry( > row, ext, index, heap); > (mtr)->start(); > mtr->set_named_space(index->space); > btr_pcur_open_low(index,0,entry,PAGE_CUR_LE,BTR_MODIFY_TREE | BTR_LATCH_FOR_DELETE,pcur, > > "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" ># 1667 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > , > > 1669 ># 1667 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > ,0,mtr) > > ; ># 1687 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > if (page_rec_is_infimum(((pcur)->btr_cur.page_cur.rec)) > || btr_pcur_get_low_match(pcur) < index->n_uniq) { > > > > > (mtr)->commit(); > return(DB_INDEX_CORRUPT); > } > > btr_cur_pessimistic_delete(&error, (0), > (&(pcur)->btr_cur), > BTR_CREATE_FLAG, false, mtr); > (mtr)->commit(); > } > > return(error); >} > > > > >static __attribute__((nonnull, warn_unused_result)) >dberr_t >row_log_table_apply_delete( > > ulint trx_id_col, > > > const mrec_t* mrec, > const offset_t* moffsets, > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > const row_log_t* log) >{ > dict_table_t* new_table = log->table; > dict_index_t* index = ((new_table)->indexes).start; > dtuple_t* old_pk; > mtr_t mtr; > btr_pcur_t pcur; > offset_t* offsets; > > do { } while(0) > ; > do { } while(0); > > > old_pk = dtuple_create(heap, index->n_uniq); > dict_index_copy_types(old_pk, index, index->n_uniq); > > for (ulint i = 0; i < index->n_uniq; i++) { > ulint len; > const void* field; > field = ((mrec) + rec_get_nth_field_offs(moffsets, i, &len)); > do { } while(0); > dfield_set_data(dtuple_get_nth_field(old_pk, i), > field, len); > } > > (&mtr)->start(); > mtr.set_named_space(index->space); > btr_pcur_open_low(index,0,old_pk,PAGE_CUR_LE,BTR_MODIFY_TREE | BTR_LATCH_FOR_DELETE,&pcur, > > "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" ># 1749 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > , > > 1751 ># 1749 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > ,0,&mtr) > > ; ># 1769 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > if (page_rec_is_infimum(((&pcur)->btr_cur.page_cur.rec)) > || btr_pcur_get_low_match(&pcur) < index->n_uniq) { >all_done: > (&mtr)->commit(); > > > > > > return(DB_SUCCESS); > } > > offsets = rec_get_offsets_func(((&pcur)->btr_cur.page_cur.rec), index, __null, ((ulint)(-1)), &offsets_heap) > ; > > > > > > > { > ulint len; > const byte* mrec_trx_id > = ((mrec) + rec_get_nth_field_offs(moffsets, trx_id_col, &len)); > do { } while(0); > const byte* rec_trx_id > = ((((&pcur)->btr_cur.page_cur.rec)) + rec_get_nth_field_offs(offsets, trx_id_col, &len)) > ; > do { } while(0); > > do { } while(0) > ; > do { } while(0); > do { } while(0) > > ; > do { } while(0); > > if (memcmp(mrec_trx_id, rec_trx_id, > 6 + 7)) { ># 1818 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > do { } while(0); > goto all_done; > } > } > > return row_log_table_apply_delete_low(&pcur, offsets, heap, &mtr); >} > > > > >static __attribute__((nonnull, warn_unused_result)) >dberr_t >row_log_table_apply_update( > > que_thr_t* thr, > ulint new_trx_id_col, > > > const mrec_t* mrec, > const offset_t* offsets, > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > row_merge_dup_t* dup, > > trx_id_t trx_id, > const dtuple_t* old_pk) > > > >{ > const row_log_t*log = dup->index->online_log; > const dtuple_t* row; > dict_index_t* index = ((log->table)->indexes).start; > mtr_t mtr; > btr_pcur_t pcur; > dberr_t error; > ulint n_index = 0; > > do { } while(0) > ; > do { } while(0) > > ; > > row = row_log_table_apply_convert_mrec( > mrec, dup->index, offsets, log, heap, trx_id, &error); > > switch (error) { > case DB_MISSING_HISTORY: > > do { } while(0); ># 1882 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > case DB_SUCCESS: > do { } while(0); > break; > default: > do { } while(0); > case DB_INVALID_NULL: > do { } while(0); > return(error); > } > > (&mtr)->start(); > mtr.set_named_space(index->space); > btr_pcur_open_low(index,0,old_pk,PAGE_CUR_LE,BTR_MODIFY_TREE,&pcur, > "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" ># 1894 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > , > 1895 ># 1894 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > ,0,&mtr) > ; ># 1910 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > if (page_rec_is_infimum(((&pcur)->btr_cur.page_cur.rec)) > || btr_pcur_get_low_match(&pcur) < index->n_uniq) { > > > > > > do { } while(0); > > if (error == DB_SUCCESS) { ># 1951 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > (&mtr)->commit(); > error = row_log_table_apply_insert_low( > thr, row, trx_id, offsets_heap, heap, dup); > } else { > > > > do { } while(0); > error = DB_SUCCESS; >func_exit: > (&mtr)->commit(); > } >func_exit_committed: > do { } while(0); > > if (error != DB_SUCCESS) { > > > innobase_row_to_mysql(dup->table, log->table, row); > } > > return(error); > } > > > offset_t* cur_offsets = rec_get_offsets_func(((&pcur)->btr_cur.page_cur.rec), index, __null, ((ulint)(-1)), &offsets_heap) > > ; > > if (!log->same_pk) { > > > ulint len; > const void* rec_trx_id > = ((((&pcur)->btr_cur.page_cur.rec)) + rec_get_nth_field_offs(cur_offsets, index->n_uniq, &len)) > ; > do { } while(0); > do { } while(0) > ; > do { } while(0) > ; > do { } while(0) > > > > ; > if (memcmp(rec_trx_id, > dtuple_get_nth_field(old_pk, index->n_uniq)->data, > 6 + 7)) { > > > > > > > do { } while(0); > if (error != DB_SUCCESS) { > do { } while(0); > > > > > > error = DB_SUCCESS; > } else { > > > > > > > error = DB_DUPLICATE_KEY; > } > > goto func_exit; > } > } > > if (error != DB_SUCCESS) { > do { } while(0); > do { } while(0); > > > error = row_log_table_apply_delete_low( > &pcur, cur_offsets, heap, &mtr); > goto func_exit_committed; > } > > dtuple_t* entry = row_build_index_entry_low( > row, __null, index, heap, 0); > upd_t* update = row_upd_build_difference_binary( > index, entry, ((&pcur)->btr_cur.page_cur.rec), cur_offsets, > false, __null, heap, dup->table, &error); > if (error != DB_SUCCESS) { > goto func_exit; > } > > if (!update->n_fields) { > > goto func_exit; > } > > const bool pk_updated > = ((update)->fields + (0))->field_no < new_trx_id_col; > > if (pk_updated || rec_offs_any_extern(cur_offsets)) { > > > > > > > if (pk_updated && log->same_pk) { > > > > > > > do { } while(0); > error = DB_CORRUPTION; > goto func_exit; > } > > error = row_log_table_apply_delete_low( > &pcur, cur_offsets, heap, &mtr); > do { } while(0); > > if (error == DB_SUCCESS) { > error = row_log_table_apply_insert_low( > thr, row, trx_id, offsets_heap, heap, dup); > } > > goto func_exit_committed; > } > > dtuple_t* old_row; > row_ext_t* old_ext; > > if ((((index)->indexes).next)) { > > > old_row = row_build( > 1, index, ((&pcur)->btr_cur.page_cur.rec), > cur_offsets, __null, __null, __null, &old_ext, heap); > do { } while(0); > > do {} while (0) > > > > ; > } else { > old_row = __null; > old_ext = __null; > } > > big_rec_t* big_rec; > > error = btr_cur_pessimistic_update( > BTR_CREATE_FLAG | BTR_NO_LOCKING_FLAG > | BTR_NO_UNDO_LOG_FLAG | BTR_KEEP_SYS_FLAG > | BTR_KEEP_POS_FLAG, > (&(&pcur)->btr_cur), > &cur_offsets, &offsets_heap, heap, &big_rec, > update, 0, thr, 0, &mtr); > > if (big_rec) { > if (error == DB_SUCCESS) { > error = btr_store_big_rec_extern_fields( > &pcur, cur_offsets, big_rec, &mtr, > BTR_STORE_UPDATE); > } > > dtuple_big_rec_free(big_rec); > } > > for (n_index += index->type != 1; > (index = (((index)->indexes).next)); n_index++) { > if (index->type & 32) { > continue; > } > > if (error != DB_SUCCESS) { > break; > } > > if (!row_upd_changes_ord_field_binary_func(index,update,old_row,__null,0) > ) { > continue; > } > > if ((index)->has_virtual()) { > dtuple_copy_v_fields(old_row, old_pk); > } > > (&mtr)->commit(); > > entry = row_build_index_entry(old_row, old_ext, index, heap); > if (!entry) { > do { } while(0); > return(DB_CORRUPTION); > } > > (&mtr)->start(); > mtr.set_named_space(index->space); > > if (ROW_FOUND != row_search_index_entry( > index, entry, BTR_MODIFY_TREE, &pcur, &mtr)) { > do { } while(0); > error = DB_CORRUPTION; > break; > } > > btr_cur_pessimistic_delete( > &error, (0), (&(&pcur)->btr_cur), > BTR_CREATE_FLAG, false, &mtr); > > if (error != DB_SUCCESS) { > break; > } > > (&mtr)->commit(); > > entry = row_build_index_entry(row, __null, index, heap); > error = row_ins_sec_index_entry_low( > BTR_CREATE_FLAG | BTR_NO_LOCKING_FLAG > | BTR_NO_UNDO_LOG_FLAG | BTR_KEEP_SYS_FLAG, > BTR_MODIFY_TREE, index, offsets_heap, heap, > entry, trx_id, thr); > > > if (error == DB_DUPLICATE_KEY) { > thr_get_trx(thr)->error_key_num = n_index; > } > > (&mtr)->start(); > mtr.set_named_space(index->space); > } > > goto func_exit; >} > > > > > >static __attribute__((nonnull, warn_unused_result)) >const mrec_t* >row_log_table_apply_op( > > que_thr_t* thr, > ulint trx_id_col, > > ulint new_trx_id_col, > > row_merge_dup_t* dup, > > dberr_t* error, > > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > const mrec_t* mrec, > const mrec_t* mrec_end, > offset_t* offsets) > >{ > row_log_t* log = dup->index->online_log; > dict_index_t* new_index = ((log->table)->indexes).start; > ulint extra_size; > const mrec_t* next_mrec; > dtuple_t* old_pk; > > do { } while(0); > do { } while(0); > do { } while(0); > > *error = DB_SUCCESS; > > > if (mrec + 3 >= mrec_end) { > return(__null); > } > > const mrec_t* const mrec_start = mrec; > > switch (*mrec++) { > default: > do { } while(0); > *error = DB_CORRUPTION; > return(__null); > case ROW_T_INSERT: > extra_size = *mrec++; > > if (extra_size >= 0x80) { > > > extra_size = (extra_size & 0x7f) << 8; > extra_size |= *mrec++; > } > > mrec += extra_size; > > if (mrec > mrec_end) { > return(__null); > } > > rec_offs_set_n_fields(offsets, dup->index->n_fields); > rec_init_offsets_temp(mrec, dup->index, offsets); > > next_mrec = mrec + rec_offs_data_size(offsets); > > if (next_mrec > mrec_end) { > return(__null); > } else { > log->head.total += next_mrec - mrec_start; > > ulint len; > const byte* db_trx_id > = ((mrec) + rec_get_nth_field_offs(offsets, trx_id_col, &len)) > ; > do { } while(0); > *error = row_log_table_apply_insert( > thr, mrec, offsets, offsets_heap, > heap, dup, trx_read_trx_id(db_trx_id)); > } > break; > > case ROW_T_DELETE: > > if (mrec + 2 >= mrec_end) { > return(__null); > } > > extra_size = *mrec++; > do { } while(0); > > > > mrec += extra_size; > > rec_offs_set_n_fields(offsets, new_index->n_uniq + 2); > rec_init_offsets_temp(mrec, new_index, offsets); > next_mrec = mrec + rec_offs_data_size(offsets); > if (next_mrec > mrec_end) { > return(__null); > } > > log->head.total += next_mrec - mrec_start; > > *error = row_log_table_apply_delete( > new_trx_id_col, > mrec, offsets, offsets_heap, heap, log); > break; > > case ROW_T_UPDATE: ># 2316 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > if (dup->index->online_log->same_pk) { > do { } while(0); > > extra_size = *mrec++; > > if (extra_size >= 0x80) { > > > extra_size = (extra_size & 0x7f) << 8; > extra_size |= *mrec++; > } > > mrec += extra_size; > > if (mrec > mrec_end) { > return(__null); > } > > rec_offs_set_n_fields(offsets, dup->index->n_fields); > rec_init_offsets_temp(mrec, dup->index, offsets); > > next_mrec = mrec + rec_offs_data_size(offsets); > > if (next_mrec > mrec_end) { > return(__null); > } > > old_pk = dtuple_create(heap, new_index->n_uniq); > dict_index_copy_types( > old_pk, new_index, old_pk->n_fields); > > > for (ulint i = 0; i < new_index->n_uniq; i++) { > const void* field; > ulint len; > dfield_t* dfield; > > do { } while(0); > > field = ((mrec) + rec_get_nth_field_offs(offsets, i, &len)) > ; > do { } while(0); > > dfield = dtuple_get_nth_field(old_pk, i); > dfield_set_data(dfield, field, len); > } > } else { > > > mrec += *mrec + 1; > > if (mrec > mrec_end) { > return(__null); > } > > > > rec_offs_set_n_fields(offsets, new_index->n_uniq + 2); > rec_init_offsets_temp(mrec, new_index, offsets); > > next_mrec = mrec + rec_offs_data_size(offsets); > if (next_mrec + 2 > mrec_end) { > return(__null); > } > > > > old_pk = dtuple_create(heap, new_index->n_uniq + 2); > dict_index_copy_types(old_pk, new_index, > old_pk->n_fields); > > for (ulint i = 0; > i < dict_index_get_n_unique(new_index) + 2; > i++) { > const void* field; > ulint len; > dfield_t* dfield; > > do { } while(0); > > field = ((mrec) + rec_get_nth_field_offs(offsets, i, &len)) > ; > do { } while(0); > > dfield = dtuple_get_nth_field(old_pk, i); > dfield_set_data(dfield, field, len); > } > > mrec = next_mrec; > > > > extra_size = *mrec++; > > if (extra_size >= 0x80) { > > > extra_size = (extra_size & 0x7f) << 8; > extra_size |= *mrec++; > } > > mrec += extra_size; > > if (mrec > mrec_end) { > return(__null); > } > > rec_offs_set_n_fields(offsets, dup->index->n_fields); > rec_init_offsets_temp(mrec, dup->index, offsets); > > next_mrec = mrec + rec_offs_data_size(offsets); > > if (next_mrec > mrec_end) { > return(__null); > } > } > > do { } while(0); > log->head.total += next_mrec - mrec_start; > dtuple_set_n_fields_cmp(old_pk, new_index->n_uniq); > > { > ulint len; > const byte* db_trx_id > = ((mrec) + rec_get_nth_field_offs(offsets, trx_id_col, &len)) > ; > do { } while(0); > *error = row_log_table_apply_update( > thr, new_trx_id_col, > mrec, offsets, offsets_heap, > heap, dup, trx_read_trx_id(db_trx_id), old_pk); > } > > break; > } > > do { } while(0); > mem_heap_empty(offsets_heap); > mem_heap_empty(heap); > return(next_mrec); >} ># 2505 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >inline >ulint >row_log_progress_inc_per_block() >{ > return(0); >} ># 2520 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >static __attribute__((warn_unused_result)) >dberr_t >row_log_table_apply_ops( > que_thr_t* thr, > row_merge_dup_t* dup, > ut_stage_alter_t* stage) >{ > dberr_t error; > const mrec_t* mrec = __null; > const mrec_t* next_mrec; > const mrec_t* mrec_end = __null; > const mrec_t* next_mrec_end; > mem_heap_t* heap; > mem_heap_t* offsets_heap; > offset_t* offsets; > bool has_index_lock; > dict_index_t* index = const_cast<dict_index_t*>( > dup->index); > dict_table_t* new_table = index->online_log->table; > dict_index_t* new_index = ((new_table)->indexes).start > ; > const ulint i = 1 + REC_OFFS_HEADER_SIZE > + std::max(dict_index_get_n_fields(index), > dict_index_get_n_unique(new_index) + 2); > const ulint trx_id_col = dict_col_get_clust_pos( > &(index->table)->cols[(index->table)->n_cols + (1) - 3], index); > const ulint new_trx_id_col = dict_col_get_clust_pos( > &(new_table)->cols[(new_table)->n_cols + (1) - 3], new_index); > trx_t* trx = thr_get_trx(thr); > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > ((void) (&mrec_end), (void) (sizeof mrec_end)); > > offsets = static_cast<offset_t*>(::malloc(i * sizeof *offsets)); > rec_offs_set_n_alloc(offsets, i); > rec_offs_set_n_fields(offsets, dict_index_get_n_fields(index)); > > heap = mem_heap_create_func((((ulint) srv_page_size)), 0); > offsets_heap = mem_heap_create_func((((ulint) srv_page_size)), 0); > has_index_lock = true; > >next_block: > do { } while(0); > do { } while(0); > do { } while(0); > > stage->inc(row_log_progress_inc_per_block()); > > if (trx_is_interrupted(trx)) { > goto interrupted; > } > > if (index->is_corrupted()) { > error = DB_INDEX_CORRUPT; > goto func_exit; > } > > do { } while(0); > > error = index->online_log->error; > > if (error != DB_SUCCESS) { > goto func_exit; > } > > if (__builtin_expect(index->online_log->head.blocks > index->online_log->tail.blocks, (0)) > ) { >unexpected_eof: > ib::error() << "Unexpected end of temporary file for table " > << index->table->name; >corruption: > error = DB_CORRUPTION; > goto func_exit; > } > > if (index->online_log->head.blocks > == index->online_log->tail.blocks) { > if (index->online_log->head.blocks) { > > > if (index->online_log->fd > 0 > && ftruncate(index->online_log->fd, 0) == -1) { > ib::error() > << "\'" << index->name + 1 > << "\' failed with error " > << (*__errno_location ()) << ":" << strerror((*__errno_location ())); > > goto corruption; > } > > index->online_log->head.blocks > = index->online_log->tail.blocks = 0; > } > > next_mrec = index->online_log->tail.block; > next_mrec_end = next_mrec + index->online_log->tail.bytes; > > if (next_mrec_end == next_mrec) { > >all_done: > do { } while(0); > do { } while(0); > do { } while(0); > index->online_log->head.bytes = 0; > index->online_log->tail.bytes = 0; > error = DB_SUCCESS; > goto func_exit; > } > } else { > os_offset_t ofs; > > ofs = (os_offset_t) index->online_log->head.blocks > * srv_sort_buf_size; > > do { } while(0); > has_index_lock = false; > rw_lock_x_unlock_func(dict_index_get_lock(index)); > > log_free_check(); > > do { } while(0); > > if (!row_log_block_allocate(index->online_log->head)) { > error = DB_OUT_OF_MEMORY; > goto func_exit; > } > > IORequest request(IORequest::READ); > byte* buf = index->online_log->head.block; > > if (DB_SUCCESS != os_file_read_no_error_handling_func(request, index->online_log->fd, buf, ofs, srv_sort_buf_size, __null) > > ) { > ib::error() > << "Unable to read temporary file" > " for table " << index->table_name; > goto corruption; > } > > if (log_tmp_is_encrypted()) { > if (!log_tmp_block_decrypt( > buf, srv_sort_buf_size, > index->online_log->crypt_head, ofs)) { > error = DB_DECRYPTION_FAILED; > goto func_exit; > } > > srv_stats.n_rowlog_blocks_decrypted.inc(); > memcpy(buf, index->online_log->crypt_head, > srv_sort_buf_size); > } > > > > posix_fadvise(index->online_log->fd, > ofs, srv_sort_buf_size, 4); > > > next_mrec = index->online_log->head.block; > next_mrec_end = next_mrec + srv_sort_buf_size; > } > > > > > error = index->online_log->error; > > if (error != DB_SUCCESS) { > goto func_exit; > } > > if (mrec) { > > > > > > > do { } while(0); > do { } while(0); > do { } while(0); > > memcpy((mrec_t*) mrec_end, next_mrec, > (&index->online_log->head.buf)[1] - mrec_end); > mrec = row_log_table_apply_op( > thr, trx_id_col, new_trx_id_col, > dup, &error, offsets_heap, heap, > index->online_log->head.buf, > (&index->online_log->head.buf)[1], offsets); > if (error != DB_SUCCESS) { > goto func_exit; > } else if (__builtin_expect(mrec == __null, (0))) { > > goto corruption; > } > > > > do { if (__builtin_expect(!(ulint) (mrec > mrec_end), (0))) { ut_dbg_assertion_failed("mrec > mrec_end", "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 2727); } } while (0); > > index->online_log->head.bytes = mrec - mrec_end; > next_mrec += index->online_log->head.bytes; > } > > do { } while(0); > > > > > > do { } while(0); ># 2770 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > mrec_end = next_mrec_end; > > while (!trx_is_interrupted(trx)) { > mrec = next_mrec; > do { } while(0); > > if (mrec == mrec_end) { > > > if (has_index_lock) { > goto all_done; > } > } > > if (!has_index_lock) { > > > > > > do { } while(0); > do { } while(0) > ; > do { } while(0) > ; > > > > log_free_check(); > } else { > > > > do { } while(0); > do { } while(0); > do { } while(0) > ; > do { } while(0); > } > > > > > error = index->online_log->error; > > if (error != DB_SUCCESS) { > goto func_exit; > } > > next_mrec = row_log_table_apply_op( > thr, trx_id_col, new_trx_id_col, > dup, &error, offsets_heap, heap, > mrec, mrec_end, offsets); > > if (error != DB_SUCCESS) { > goto func_exit; > } else if (next_mrec == next_mrec_end) { > > > if (has_index_lock) { > > > goto all_done; > } > > mrec = __null; >process_next_block: > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 2837); > has_index_lock = true; > > index->online_log->head.bytes = 0; > index->online_log->head.blocks++; > goto next_block; > } else if (next_mrec != __null) { > do { } while(0); > index->online_log->head.bytes += next_mrec - mrec; > } else if (has_index_lock) { > > > > do { } while(0); > do { } while(0) > ; > do { } while(0); > goto unexpected_eof; > } else { > memcpy(index->online_log->head.buf, mrec, > mrec_end - mrec); > mrec_end += index->online_log->head.buf - mrec; > mrec = index->online_log->head.buf; > goto process_next_block; > } > } > >interrupted: > error = DB_INTERRUPTED; >func_exit: > if (!has_index_lock) { > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 2868); > } > > mem_heap_free(offsets_heap); > mem_heap_free(heap); > row_log_block_free(index->online_log->head); > ::free(offsets); > return(error); >} ># 2886 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >dberr_t >row_log_table_apply( > que_thr_t* thr, > dict_table_t* old_table, > struct TABLE* table, > ut_stage_alter_t* stage) >{ > dberr_t error; > dict_index_t* clust_index; > > thr_get_trx(thr)->error_key_num = 0; > do { } while(0) > ; > > stage->begin_phase_log_table(); > > do { } while(0); > clust_index = ((old_table)->indexes).start; > > rw_lock_x_lock_func((dict_index_get_lock(clust_index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 2905); > > if (!clust_index->online_log) { > do { } while(0) > ; > > > > do { } while(0); > error = DB_ERROR; > } else { > row_merge_dup_t dup = { > clust_index, table, > clust_index->online_log->col_map, 0 > }; > > error = row_log_table_apply_ops(thr, &dup, stage); > > do { } while(0) > > ; > } > > rw_lock_x_unlock_func(dict_index_get_lock(clust_index)); > do { } while(0) > ; > > return(error); >} > > > > > >bool >row_log_allocate( > > dict_index_t* index, > dict_table_t* table, > > bool same_pk, > > const dtuple_t* add_cols, > > > const ulint* col_map, > > const char* path) >{ > row_log_t* log; > ; > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > > log = static_cast<row_log_t*>(::malloc(sizeof *log)); > > if (log == __null) { > do { return(false); } while(0); > } > > log->fd = -1; > mutex_init((&log->mutex), (LATCH_ID_INDEX_ONLINE_LOG), "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 2972); > > log->blobs = __null; > log->table = table; > log->same_pk = same_pk; > log->add_cols = add_cols; > log->col_map = col_map; > log->error = DB_SUCCESS; > log->max_trx = 0; > log->tail.blocks = log->tail.bytes = 0; > log->tail.total = 0; > log->tail.block = log->head.block = __null; > log->crypt_tail = log->crypt_head = __null; > log->head.blocks = log->head.bytes = 0; > log->head.total = 0; > log->path = path; > > dict_index_set_online_status(index, ONLINE_INDEX_CREATION); > index->online_log = log; > > if (log_tmp_is_encrypted()) { > ulint size = srv_sort_buf_size; > log->crypt_head = static_cast<byte *>(os_mem_alloc_large(&size)); > log->crypt_tail = static_cast<byte *>(os_mem_alloc_large(&size)); > > if (!log->crypt_head || !log->crypt_tail) { > row_log_free(log); > do { return(false); } while(0); > } > } > > > > > if ((monitor_set_tbl[MONITOR_ONLINE_CREATE_INDEX / (sizeof(ulint) * 8)] & ((ulint)1 << (MONITOR_ONLINE_CREATE_INDEX % (sizeof(ulint) * 8))))) { ib_uint64_t value; value = my_atomic_add64( (int64*) &(innodb_counter_value[MONITOR_ONLINE_CREATE_INDEX].mon_value), 1) + 1; if (value > (ib_uint64_t) (innodb_counter_value[MONITOR_ONLINE_CREATE_INDEX].mon_max_value)) { (innodb_counter_value[MONITOR_ONLINE_CREATE_INDEX].mon_max_value) = value; } }; > > do { return(true); } while(0); >} > > > >void >row_log_free( > > row_log_t*& log) >{ > if ((monitor_set_tbl[MONITOR_ONLINE_CREATE_INDEX / (sizeof(ulint) * 8)] & ((ulint)1 << (MONITOR_ONLINE_CREATE_INDEX % (sizeof(ulint) * 8))))) { ib_uint64_t value; value = my_atomic_add64( (int64*) &(innodb_counter_value[MONITOR_ONLINE_CREATE_INDEX].mon_value), -1) - 1; if (value < (ib_uint64_t) (innodb_counter_value[MONITOR_ONLINE_CREATE_INDEX].mon_min_value)) { (innodb_counter_value[MONITOR_ONLINE_CREATE_INDEX].mon_min_value) = value; } }; > > ::delete log->blobs; > row_log_block_free(log->tail); > row_log_block_free(log->head); > row_merge_file_destroy_low(log->fd); > > if (log->crypt_head) { > os_mem_free_large(log->crypt_head, srv_sort_buf_size); > } > > if (log->crypt_tail) { > os_mem_free_large(log->crypt_tail, srv_sort_buf_size); > } > > mutex_destroy(&log->mutex); > ::free(log); > log = __null; >} > > > > > >trx_id_t >row_log_get_max_trx( > > dict_index_t* index) >{ > do { } while(0); > > do { } while(0) > > ; > > return(index->online_log->max_trx); >} > > > >static __attribute__((nonnull)) >void >row_log_apply_op_low( > > dict_index_t* index, > row_merge_dup_t*dup, > > dberr_t* error, > mem_heap_t* offsets_heap, > > bool has_index_lock, > > enum row_op op, > trx_id_t trx_id, > const dtuple_t* entry) >{ > mtr_t mtr; > btr_cur_t cursor; > offset_t* offsets = __null; > > do { } while(0); > > do { } while(0) > ; > > do { } while(0); > do { } while(0); > > do {} while (0) > > > > ; > > (&mtr)->start(); > mtr.set_named_space(index->space); > > > > > > > btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE, > has_index_lock > ? BTR_MODIFY_TREE > : BTR_MODIFY_LEAF, > &cursor, 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3104, > &mtr); > > do { } while(0); > > > if (cursor.low_match >= dict_index_get_n_unique(index) > && !page_rec_is_infimum(((&cursor)->page_cur.rec))) { > > bool exists = (cursor.low_match > == dict_index_get_n_fields(index)); > > > > > > > do { } while(0); > > switch (op) { > case ROW_OP_DELETE: > if (!exists) { ># 3136 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > goto func_exit; > } > > if (btr_cur_optimistic_delete_func(&cursor, &mtr) > ) { > *error = DB_SUCCESS; > break; > } > > if (!has_index_lock) { > > > (&mtr)->commit(); > (&mtr)->start(); > mtr.set_named_space(index->space); > btr_cur_search_to_nth_level( > index, 0, entry, PAGE_CUR_LE, > BTR_MODIFY_TREE, &cursor, 0, > "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3154, &mtr); > > > > > do { } while(0) > ; > do { } while(0) > ; > } > > > > > > btr_cur_pessimistic_delete( > error, (0), &cursor, > BTR_CREATE_FLAG, false, &mtr); > break; > case ROW_OP_INSERT: > if (exists) { ># 3194 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > goto func_exit; > } > > if (dtuple_contains_null(entry)) { > > > > goto insert_the_rec; > } > > goto duplicate; > } > } else { > switch (op) { > rec_t* rec; > big_rec_t* big_rec; > case ROW_OP_DELETE: > > > > > > goto func_exit; > case ROW_OP_INSERT: > if (dict_index_is_unique(index) > && (cursor.up_match > >= dict_index_get_n_unique(index) > || cursor.low_match > >= dict_index_get_n_unique(index)) > && (!index->n_nullable > || !dtuple_contains_null(entry))) { >duplicate: > > do { } while(0); > row_merge_dup_report(dup, entry->fields); > *error = DB_DUPLICATE_KEY; > goto func_exit; > } >insert_the_rec: > > > > *error = btr_cur_optimistic_insert( > BTR_NO_UNDO_LOG_FLAG > | BTR_NO_LOCKING_FLAG > | BTR_CREATE_FLAG, > &cursor, &offsets, &offsets_heap, > const_cast<dtuple_t*>(entry), > &rec, &big_rec, 0, __null, &mtr); > do { } while(0); > if (*error != DB_FAIL) { > break; > } > > if (!has_index_lock) { > > > (&mtr)->commit(); > (&mtr)->start(); > mtr.set_named_space(index->space); > btr_cur_search_to_nth_level( > index, 0, entry, PAGE_CUR_LE, > BTR_MODIFY_TREE, &cursor, 0, > "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3257, &mtr); > } > > > > > > > > *error = btr_cur_pessimistic_insert( > BTR_NO_UNDO_LOG_FLAG > | BTR_NO_LOCKING_FLAG > | BTR_CREATE_FLAG, > &cursor, &offsets, &offsets_heap, > const_cast<dtuple_t*>(entry), > &rec, &big_rec, > 0, __null, &mtr); > do { } while(0); > break; > } > mem_heap_empty(offsets_heap); > } > > if (*error == DB_SUCCESS && trx_id) { > page_update_max_trx_id(((&cursor)->page_cur.block), > btr_cur_get_page_zip(&cursor), > trx_id, &mtr); > } > >func_exit: > (&mtr)->commit(); >} > > > > > >static __attribute__((nonnull, warn_unused_result)) >const mrec_t* >row_log_apply_op( > > dict_index_t* index, > row_merge_dup_t*dup, > > dberr_t* error, > mem_heap_t* offsets_heap, > > mem_heap_t* heap, > > bool has_index_lock, > > const mrec_t* mrec, > const mrec_t* mrec_end, > offset_t* offsets) > > >{ > enum row_op op; > ulint extra_size; > ulint data_size; > ulint n_ext; > dtuple_t* entry; > trx_id_t trx_id; > > > do { } while(0); > > do { } while(0) > ; > > if (index->is_corrupted()) { > *error = DB_INDEX_CORRUPT; > return(__null); > } > > *error = DB_SUCCESS; > > if (mrec + 2 >= mrec_end) { > return(__null); > } > > switch (*mrec) { > case ROW_OP_INSERT: > if (2 + 6 + mrec >= mrec_end) { > return(__null); > } > > op = static_cast<enum row_op>(*mrec++); > trx_id = trx_read_trx_id(mrec); > mrec += 6; > break; > case ROW_OP_DELETE: > op = static_cast<enum row_op>(*mrec++); > trx_id = 0; > break; > default: >corrupted: > do { } while(0); > *error = DB_CORRUPTION; > return(__null); > } > > extra_size = *mrec++; > > do { } while(0); > > if (extra_size >= 0x80) { > > > extra_size = (extra_size & 0x7f) << 8; > extra_size |= *mrec++; > } > > mrec += extra_size; > > if (mrec > mrec_end) { > return(__null); > } > > rec_init_offsets_temp(mrec, index, offsets); > > if (rec_offs_any_extern(offsets)) { > > > > > goto corrupted; > } > > data_size = rec_offs_data_size(offsets); > > mrec += data_size; > > if (mrec > mrec_end) { > return(__null); > } > > entry = row_rec_to_index_entry_low( > mrec - data_size, index, offsets, &n_ext, heap); > > > do { } while(0); > > row_log_apply_op_low(index, dup, error, offsets_heap, > has_index_lock, op, trx_id, entry); > return(mrec); >} ># 3414 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >static >dberr_t >row_log_apply_ops( > const trx_t* trx, > dict_index_t* index, > row_merge_dup_t* dup, > ut_stage_alter_t* stage) >{ > dberr_t error; > const mrec_t* mrec = __null; > const mrec_t* next_mrec; > const mrec_t* mrec_end= __null; > const mrec_t* next_mrec_end; > mem_heap_t* offsets_heap; > mem_heap_t* heap; > offset_t* offsets; > bool has_index_lock; > const ulint i = 1 + REC_OFFS_HEADER_SIZE > + dict_index_get_n_fields(index); > > do { } while(0); > do { } while(0); > do { } while(0); > do { } while(0); > ((void) (&mrec_end), (void) (sizeof mrec_end)); > > offsets = static_cast<offset_t*>(::malloc(i * sizeof *offsets)); > rec_offs_set_n_alloc(offsets, i); > rec_offs_set_n_fields(offsets, dict_index_get_n_fields(index)); > > offsets_heap = mem_heap_create_func((((ulint) srv_page_size)), 0); > heap = mem_heap_create_func((((ulint) srv_page_size)), 0); > has_index_lock = true; > >next_block: > do { } while(0); > do { } while(0); > do { } while(0); > > stage->inc(row_log_progress_inc_per_block()); > > if (trx_is_interrupted(trx)) { > goto interrupted; > } > > error = index->online_log->error; > if (error != DB_SUCCESS) { > goto func_exit; > } > > if (index->is_corrupted()) { > error = DB_INDEX_CORRUPT; > goto func_exit; > } > > if (__builtin_expect(index->online_log->head.blocks > index->online_log->tail.blocks, (0)) > ) { >unexpected_eof: > ib::error() << "Unexpected end of temporary file for index " > << index->name; >corruption: > error = DB_CORRUPTION; > goto func_exit; > } > > if (index->online_log->head.blocks > == index->online_log->tail.blocks) { > if (index->online_log->head.blocks) { > > > if (index->online_log->fd > 0 > && ftruncate(index->online_log->fd, 0) == -1) { > ib::error() > << "\'" << index->name + 1 > << "\' failed with error " > << (*__errno_location ()) << ":" << strerror((*__errno_location ())); > > goto corruption; > } > > index->online_log->head.blocks > = index->online_log->tail.blocks = 0; > } > > next_mrec = index->online_log->tail.block; > next_mrec_end = next_mrec + index->online_log->tail.bytes; > > if (next_mrec_end == next_mrec) { > >all_done: > do { } while(0); > do { } while(0); > do { } while(0); > error = DB_SUCCESS; > goto func_exit; > } > } else { > os_offset_t ofs = static_cast<os_offset_t>( > index->online_log->head.blocks) > * srv_sort_buf_size; > IORequest request(IORequest::READ); > > do { } while(0); > has_index_lock = false; > rw_lock_x_unlock_func(dict_index_get_lock(index)); > > log_free_check(); > > if (!row_log_block_allocate(index->online_log->head)) { > error = DB_OUT_OF_MEMORY; > goto func_exit; > } > > byte* buf = index->online_log->head.block; > > if (DB_SUCCESS != os_file_read_no_error_handling_func(request, index->online_log->fd, buf, ofs, srv_sort_buf_size, __null) > > ) { > ib::error() > << "Unable to read temporary file" > " for index " << index->name; > goto corruption; > } > > if (log_tmp_is_encrypted()) { > if (!log_tmp_block_decrypt( > buf, srv_sort_buf_size, > index->online_log->crypt_head, ofs)) { > error = DB_DECRYPTION_FAILED; > goto func_exit; > } > > srv_stats.n_rowlog_blocks_decrypted.inc(); > memcpy(buf, index->online_log->crypt_head, srv_sort_buf_size); > } > > > > posix_fadvise(index->online_log->fd, > ofs, srv_sort_buf_size, 4); > > > next_mrec = index->online_log->head.block; > next_mrec_end = next_mrec + srv_sort_buf_size; > } > > if (mrec) { > > > > > > > do { } while(0); > do { } while(0); > do { } while(0); > > memcpy((mrec_t*) mrec_end, next_mrec, > (&index->online_log->head.buf)[1] - mrec_end); > mrec = row_log_apply_op( > index, dup, &error, offsets_heap, heap, > has_index_lock, index->online_log->head.buf, > (&index->online_log->head.buf)[1], offsets); > if (error != DB_SUCCESS) { > goto func_exit; > } else if (__builtin_expect(mrec == __null, (0))) { > > goto corruption; > } > > > > do { if (__builtin_expect(!(ulint) (mrec > mrec_end), (0))) { ut_dbg_assertion_failed("mrec > mrec_end", "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3586); } } while (0); > > index->online_log->head.bytes = mrec - mrec_end; > next_mrec += index->online_log->head.bytes; > } > > do { } while(0); > > > > > > do { } while(0); ># 3629 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" > mrec_end = next_mrec_end; > > while (!trx_is_interrupted(trx)) { > mrec = next_mrec; > do { } while(0); > > if (!has_index_lock) { > > > > > > do { } while(0); > do { } while(0) > ; > do { } while(0) > ; > > > > log_free_check(); > } else { > > > > do { } while(0); > do { } while(0); > do { } while(0) > ; > do { } while(0); > } > > next_mrec = row_log_apply_op( > index, dup, &error, offsets_heap, heap, > has_index_lock, mrec, mrec_end, offsets); > > if (error != DB_SUCCESS) { > goto func_exit; > } else if (next_mrec == next_mrec_end) { > > > if (has_index_lock) { > > > goto all_done; > } > > mrec = __null; >process_next_block: > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3678); > has_index_lock = true; > > index->online_log->head.bytes = 0; > index->online_log->head.blocks++; > goto next_block; > } else if (next_mrec != __null) { > do { } while(0); > index->online_log->head.bytes += next_mrec - mrec; > } else if (has_index_lock) { > > > > do { } while(0); > do { } while(0) > ; > do { } while(0); > goto unexpected_eof; > } else { > memcpy(index->online_log->head.buf, mrec, > mrec_end - mrec); > mrec_end += index->online_log->head.buf - mrec; > mrec = index->online_log->head.buf; > goto process_next_block; > } > } > >interrupted: > error = DB_INTERRUPTED; >func_exit: > if (!has_index_lock) { > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3709); > } > > switch (error) { > case DB_SUCCESS: > break; > case DB_INDEX_CORRUPT: > if (((os_offset_t) index->online_log->tail.blocks + 1) > * srv_sort_buf_size >= srv_online_max_size) { > > error = DB_ONLINE_LOG_TOO_BIG; > } > > default: > > > > index->type |= 16; > } > > mem_heap_free(heap); > mem_heap_free(offsets_heap); > row_log_block_free(index->online_log->head); > ::free(offsets); > return(error); >} ># 3745 "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc" >dberr_t >row_log_apply( > const trx_t* trx, > dict_index_t* index, > struct TABLE* table, > ut_stage_alter_t* stage) >{ > dberr_t error; > row_log_t* log; > row_merge_dup_t dup = { index, table, __null, 0 }; > ; > > do { } while(0); > do { } while(0); > > stage->begin_phase_log_index(); > > log_free_check(); > > rw_lock_x_lock_func((dict_index_get_lock(index)), 0, "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3764); > > if (!dict_table_is_corrupted(index->table)) { > error = row_log_apply_ops(trx, index, &dup, stage); > } else { > error = DB_SUCCESS; > } > > if (error != DB_SUCCESS) { > do { if (__builtin_expect(!(ulint) (!dict_table_is_discarded(index->table)), (0))) { ut_dbg_assertion_failed("!dict_table_is_discarded(index->table)", "/buildbot/mariadb-10.2.31/storage/innobase/row/row0log.cc", 3773); } } while (0); > > > > index->type |= 16; > index->table->drop_aborted = (1); > > dict_index_set_online_status(index, ONLINE_INDEX_ABORTED); > } else { > do { } while(0); > dict_index_set_online_status(index, ONLINE_INDEX_COMPLETE); > } > > log = index->online_log; > index->online_log = __null; > rw_lock_x_unlock_func(dict_index_get_lock(index)); > > row_log_free(log); > > do { return(error); } while(0); >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 1788104
: 1650115