# 1 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp"
|
# 1 "<built-in>" 1
|
# 1 "<built-in>" 3
|
# 365 "<built-in>" 3
|
# 1 "<command line>" 1
|
# 1 "<built-in>" 2
|
# 1 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp" 2
|
# 48 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp"
|
# 1 "./include/Bela.h" 1
|
# 86 "./include/Bela.h"
|
extern "C"
|
{
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdint.h" 1 3
|
# 61 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdint.h" 3
|
# 1 "/usr/include/stdint.h" 1 3 4
|
# 25 "/usr/include/stdint.h" 3 4
|
# 1 "/usr/include/features.h" 1 3 4
|
# 342 "/usr/include/features.h" 3 4
|
# 1 "/usr/include/stdc-predef.h" 1 3 4
|
# 343 "/usr/include/features.h" 2 3 4
|
# 364 "/usr/include/features.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4
|
# 415 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
|
# 416 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4
|
# 365 "/usr/include/features.h" 2 3 4
|
# 388 "/usr/include/features.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4
|
# 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4
|
# 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4
|
# 389 "/usr/include/features.h" 2 3 4
|
# 26 "/usr/include/stdint.h" 2 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4
|
# 27 "/usr/include/stdint.h" 2 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
|
# 28 "/usr/include/stdint.h" 2 3 4
|
|
|
|
|
|
|
|
|
typedef signed char int8_t;
|
typedef short int int16_t;
|
typedef int int32_t;
|
|
|
|
__extension__
|
typedef long long int int64_t;
|
|
|
|
|
typedef unsigned char uint8_t;
|
typedef unsigned short int uint16_t;
|
|
typedef unsigned int uint32_t;
|
|
|
|
|
|
__extension__
|
typedef unsigned long long int uint64_t;
|
|
|
|
|
|
|
typedef signed char int_least8_t;
|
typedef short int int_least16_t;
|
typedef int int_least32_t;
|
|
|
|
__extension__
|
typedef long long int int_least64_t;
|
|
|
|
typedef unsigned char uint_least8_t;
|
typedef unsigned short int uint_least16_t;
|
typedef unsigned int uint_least32_t;
|
|
|
|
__extension__
|
typedef unsigned long long int uint_least64_t;
|
|
|
|
|
|
|
typedef signed char int_fast8_t;
|
|
|
|
|
|
typedef int int_fast16_t;
|
typedef int int_fast32_t;
|
__extension__
|
typedef long long int int_fast64_t;
|
|
|
|
typedef unsigned char uint_fast8_t;
|
|
|
|
|
|
typedef unsigned int uint_fast16_t;
|
typedef unsigned int uint_fast32_t;
|
__extension__
|
typedef unsigned long long int uint_fast64_t;
|
# 125 "/usr/include/stdint.h" 3 4
|
typedef int intptr_t;
|
|
|
typedef unsigned int uintptr_t;
|
# 137 "/usr/include/stdint.h" 3 4
|
__extension__
|
typedef long long int intmax_t;
|
__extension__
|
typedef unsigned long long int uintmax_t;
|
# 62 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdint.h" 2 3
|
# 91 "./include/Bela.h" 2
|
# 1 "/usr/xenomai/include/cobalt/unistd.h" 1
|
# 19 "/usr/xenomai/include/cobalt/unistd.h" 3
|
# 1 "/usr/include/unistd.h" 1 3 4
|
# 27 "/usr/include/unistd.h" 3 4
|
extern "C" {
|
# 205 "/usr/include/unistd.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4
|
# 206 "/usr/include/unistd.h" 2 3 4
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4
|
# 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
|
# 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4
|
# 210 "/usr/include/unistd.h" 2 3 4
|
# 220 "/usr/include/unistd.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4
|
# 27 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4
|
# 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4
|
|
|
typedef unsigned char __u_char;
|
typedef unsigned short int __u_short;
|
typedef unsigned int __u_int;
|
typedef unsigned long int __u_long;
|
|
|
typedef signed char __int8_t;
|
typedef unsigned char __uint8_t;
|
typedef signed short int __int16_t;
|
typedef unsigned short int __uint16_t;
|
typedef signed int __int32_t;
|
typedef unsigned int __uint32_t;
|
|
|
|
|
__extension__ typedef signed long long int __int64_t;
|
__extension__ typedef unsigned long long int __uint64_t;
|
|
|
|
|
|
|
|
__extension__ typedef long long int __quad_t;
|
__extension__ typedef unsigned long long int __u_quad_t;
|
# 121 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4
|
# 122 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4
|
|
|
__extension__ typedef __u_quad_t __dev_t;
|
__extension__ typedef unsigned int __uid_t;
|
__extension__ typedef unsigned int __gid_t;
|
__extension__ typedef unsigned long int __ino_t;
|
__extension__ typedef __u_quad_t __ino64_t;
|
__extension__ typedef unsigned int __mode_t;
|
__extension__ typedef unsigned int __nlink_t;
|
__extension__ typedef long int __off_t;
|
__extension__ typedef __quad_t __off64_t;
|
__extension__ typedef int __pid_t;
|
__extension__ typedef struct { int __val[2]; } __fsid_t;
|
__extension__ typedef long int __clock_t;
|
__extension__ typedef unsigned long int __rlim_t;
|
__extension__ typedef __u_quad_t __rlim64_t;
|
__extension__ typedef unsigned int __id_t;
|
__extension__ typedef long int __time_t;
|
__extension__ typedef unsigned int __useconds_t;
|
__extension__ typedef long int __suseconds_t;
|
|
__extension__ typedef int __daddr_t;
|
__extension__ typedef int __key_t;
|
|
|
__extension__ typedef int __clockid_t;
|
|
|
__extension__ typedef void * __timer_t;
|
|
|
__extension__ typedef long int __blksize_t;
|
|
|
|
|
__extension__ typedef long int __blkcnt_t;
|
__extension__ typedef __quad_t __blkcnt64_t;
|
|
|
__extension__ typedef unsigned long int __fsblkcnt_t;
|
__extension__ typedef __u_quad_t __fsblkcnt64_t;
|
|
|
__extension__ typedef unsigned long int __fsfilcnt_t;
|
__extension__ typedef __u_quad_t __fsfilcnt64_t;
|
|
|
__extension__ typedef int __fsword_t;
|
|
__extension__ typedef int __ssize_t;
|
|
|
__extension__ typedef long int __syscall_slong_t;
|
|
__extension__ typedef unsigned long int __syscall_ulong_t;
|
|
|
|
typedef __off64_t __loff_t;
|
typedef __quad_t *__qaddr_t;
|
typedef char *__caddr_t;
|
|
|
__extension__ typedef int __intptr_t;
|
|
|
__extension__ typedef unsigned int __socklen_t;
|
# 221 "/usr/include/unistd.h" 2 3 4
|
|
|
typedef __ssize_t ssize_t;
|
|
|
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 62 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 3 4
|
typedef unsigned int size_t;
|
# 230 "/usr/include/unistd.h" 2 3 4
|
|
|
|
|
|
typedef __gid_t gid_t;
|
|
|
|
|
typedef __uid_t uid_t;
|
|
|
|
|
|
typedef __off_t off_t;
|
|
|
|
|
|
|
typedef __off64_t off64_t;
|
|
|
|
|
typedef __useconds_t useconds_t;
|
|
|
|
|
typedef __pid_t pid_t;
|
# 277 "/usr/include/unistd.h" 3 4
|
typedef __socklen_t socklen_t;
|
# 290 "/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))) ;
|
# 337 "/usr/include/unistd.h" 3 4
|
extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw ();
|
# 348 "/usr/include/unistd.h" 3 4
|
extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
|
throw ();
|
|
|
|
|
|
|
extern int close (int __fd);
|
|
|
|
|
|
|
extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
|
|
|
|
|
|
extern ssize_t write (int __fd, const void *__buf, size_t __n) ;
|
# 379 "/usr/include/unistd.h" 3 4
|
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
|
__off_t __offset) ;
|
|
|
|
|
|
|
extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
|
__off_t __offset) ;
|
# 407 "/usr/include/unistd.h" 3 4
|
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
|
__off64_t __offset) ;
|
|
|
extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
|
__off64_t __offset) ;
|
|
|
|
|
|
|
|
extern int pipe (int __pipedes[2]) throw () ;
|
|
|
|
|
extern int pipe2 (int __pipedes[2], int __flags) throw () ;
|
# 435 "/usr/include/unistd.h" 3 4
|
extern unsigned int alarm (unsigned int __seconds) throw ();
|
# 447 "/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);
|
# 472 "/usr/include/unistd.h" 3 4
|
extern int pause (void);
|
|
|
|
extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () ;
|
|
|
|
|
extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
|
extern int fchownat (int __fd, const char *__file, __uid_t __owner,
|
__gid_t __group, int __flag)
|
throw () __attribute__ ((__nonnull__ (2))) ;
|
|
|
|
extern int chdir (const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
extern int fchdir (int __fd) throw () ;
|
# 514 "/usr/include/unistd.h" 3 4
|
extern char *getcwd (char *__buf, size_t __size) throw () ;
|
|
|
|
|
|
extern char *get_current_dir_name (void) throw ();
|
|
|
|
|
|
|
|
extern char *getwd (char *__buf)
|
throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
|
|
|
|
|
extern int dup (int __fd) throw () ;
|
|
|
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 () ;
|
|
|
|
|
extern void _exit (int __status) __attribute__ ((__noreturn__));
|
|
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4
|
# 24 "/usr/include/arm-linux-gnueabihf/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
|
|
};
|
# 613 "/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 ();
|
|
|
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 ();
|
# 663 "/usr/include/unistd.h" 3 4
|
extern int setpgrp (void) throw ();
|
|
|
|
|
|
|
extern __pid_t setsid (void) throw ();
|
|
|
|
extern __pid_t getsid (__pid_t __pid) throw ();
|
|
|
|
extern __uid_t getuid (void) throw ();
|
|
|
extern __uid_t geteuid (void) throw ();
|
|
|
extern __gid_t getgid (void) throw ();
|
|
|
extern __gid_t getegid (void) throw ();
|
|
|
|
|
extern int getgroups (int __size, __gid_t __list[]) throw () ;
|
|
|
|
extern int group_member (__gid_t __gid) throw ();
|
|
|
|
|
|
|
extern int setuid (__uid_t __uid) throw () ;
|
|
|
|
|
extern int setreuid (__uid_t __ruid, __uid_t __euid) throw () ;
|
|
|
|
|
extern int seteuid (__uid_t __uid) throw () ;
|
|
|
|
|
|
|
extern int setgid (__gid_t __gid) throw () ;
|
|
|
|
|
extern int setregid (__gid_t __rgid, __gid_t __egid) throw () ;
|
|
|
|
|
extern int setegid (__gid_t __gid) throw () ;
|
|
|
|
|
|
extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
|
throw ();
|
|
|
|
extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
|
throw ();
|
|
|
|
extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
|
throw () ;
|
|
|
|
extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
|
throw () ;
|
|
|
|
|
|
|
extern __pid_t 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))) ;
|
|
|
|
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))) ;
|
|
|
|
|
extern int linkat (int __fromfd, const char *__from, int __tofd,
|
const char *__to, int __flags)
|
throw () __attribute__ ((__nonnull__ (2, 4))) ;
|
|
|
|
|
extern int symlink (const char *__from, const char *__to)
|
throw () __attribute__ ((__nonnull__ (1, 2))) ;
|
|
|
|
|
extern ssize_t readlink (const char *__restrict __path,
|
char *__restrict __buf, size_t __len)
|
throw () __attribute__ ((__nonnull__ (1, 2))) ;
|
|
|
|
|
extern int symlinkat (const char *__from, int __tofd,
|
const char *__to) throw () __attribute__ ((__nonnull__ (1, 3))) ;
|
|
|
extern ssize_t readlinkat (int __fd, const char *__restrict __path,
|
char *__restrict __buf, size_t __len)
|
throw () __attribute__ ((__nonnull__ (2, 3))) ;
|
|
|
|
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)));
|
# 873 "/usr/include/unistd.h" 3 4
|
# 1 "/usr/include/getopt.h" 1 3 4
|
# 48 "/usr/include/getopt.h" 3 4
|
extern "C" {
|
# 57 "/usr/include/getopt.h" 3 4
|
extern char *optarg;
|
# 71 "/usr/include/getopt.h" 3 4
|
extern int optind;
|
|
|
|
|
extern int opterr;
|
|
|
|
extern int optopt;
|
# 150 "/usr/include/getopt.h" 3 4
|
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
|
throw ();
|
# 185 "/usr/include/getopt.h" 3 4
|
}
|
# 874 "/usr/include/unistd.h" 2 3 4
|
|
|
|
|
|
|
|
extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
|
extern int sethostname (const char *__name, size_t __len)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
extern int sethostid (long int __id) throw () ;
|
|
|
|
|
|
extern int getdomainname (char *__name, size_t __len)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
extern int setdomainname (const char *__name, size_t __len)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
extern int vhangup (void) throw ();
|
|
|
extern int revoke (const char *__file) throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
|
|
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 () ;
|
|
|
|
|
|
|
extern int chroot (const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
|
|
extern int fsync (int __fd);
|
|
|
|
|
|
extern 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 ();
|
# 995 "/usr/include/unistd.h" 3 4
|
extern int truncate (const char *__file, __off_t __length)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
# 1007 "/usr/include/unistd.h" 3 4
|
extern int truncate64 (const char *__file, __off64_t __length)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
# 1018 "/usr/include/unistd.h" 3 4
|
extern int ftruncate (int __fd, __off_t __length) throw () ;
|
# 1028 "/usr/include/unistd.h" 3 4
|
extern int ftruncate64 (int __fd, __off64_t __length) throw () ;
|
# 1039 "/usr/include/unistd.h" 3 4
|
extern int brk (void *__addr) throw () ;
|
|
|
|
|
|
extern void *sbrk (intptr_t __delta) throw ();
|
# 1060 "/usr/include/unistd.h" 3 4
|
extern long int syscall (long int __sysno, ...) throw ();
|
# 1083 "/usr/include/unistd.h" 3 4
|
extern int lockf (int __fd, int __cmd, __off_t __len) ;
|
# 1093 "/usr/include/unistd.h" 3 4
|
extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
|
# 1114 "/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 *__glibc_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)));
|
# 1166 "/usr/include/unistd.h" 3 4
|
}
|
# 20 "/usr/xenomai/include/cobalt/unistd.h" 2 3
|
|
|
|
|
# 1 "/usr/xenomai/include/cobalt/wrappers.h" 1 3
|
# 21 "/usr/xenomai/include/cobalt/wrappers.h" 3
|
# 1 "/usr/xenomai/include/boilerplate/compiler.h" 1 3
|
# 21 "/usr/xenomai/include/boilerplate/compiler.h" 3
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3
|
# 51 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 3
|
typedef int ptrdiff_t;
|
# 118 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 3
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/__stddef_max_align_t.h" 1 3
|
# 35 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/__stddef_max_align_t.h" 3
|
typedef struct {
|
long long __clang_max_align_nonce1
|
__attribute__((__aligned__(__alignof__(long long))));
|
long double __clang_max_align_nonce2
|
__attribute__((__aligned__(__alignof__(long double))));
|
} max_align_t;
|
# 119 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 2 3
|
# 22 "/usr/xenomai/include/boilerplate/compiler.h" 2 3
|
# 62 "/usr/xenomai/include/boilerplate/compiler.h" 3
|
extern "C" {
|
|
|
void __invalid_operand_size(void);
|
# 106 "/usr/xenomai/include/boilerplate/compiler.h" 3
|
}
|
# 22 "/usr/xenomai/include/cobalt/wrappers.h" 2 3
|
# 25 "/usr/xenomai/include/cobalt/unistd.h" 2 3
|
|
|
extern "C" {
|
|
|
__typeof__(ssize_t) __cobalt_read(int fd, void *buf, size_t nbyte); __typeof__(ssize_t) __real_read(int fd, void *buf, size_t nbyte); __typeof__(ssize_t) __wrap_read(int fd, void *buf, size_t nbyte);
|
|
__typeof__(ssize_t) __cobalt_write(int fd, const void *buf, size_t nbyte); __typeof__(ssize_t) __real_write(int fd, const void *buf, size_t nbyte); __typeof__(ssize_t) __wrap_write(int fd, const void *buf, size_t nbyte);
|
|
__typeof__(int) __cobalt_close(int fildes); __typeof__(int) __real_close(int fildes); __typeof__(int) __wrap_close(int fildes);
|
|
__typeof__(unsigned int) __cobalt_sleep(unsigned int seconds); __typeof__(unsigned int) __real_sleep(unsigned int seconds); __typeof__(unsigned int) __wrap_sleep(unsigned int seconds);
|
|
|
}
|
# 92 "./include/Bela.h" 2
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdbool.h" 1 3
|
# 93 "./include/Bela.h" 2
|
# 1 "/usr/xenomai/include/cobalt/stdio.h" 1
|
# 20 "/usr/xenomai/include/cobalt/stdio.h" 3
|
# 1 "/usr/include/stdio.h" 1 3 4
|
# 29 "/usr/include/stdio.h" 3 4
|
extern "C" {
|
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/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
|
# 31 "/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/llvm-3.9/bin/../lib/clang/3.9.1/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;
|
# 32 "/usr/include/libio.h" 2 3 4
|
# 49 "/usr/include/libio.h" 3 4
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdarg.h" 1 3 4
|
# 30 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdarg.h" 3 4
|
typedef __builtin_va_list va_list;
|
# 50 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdarg.h" 3 4
|
typedef __builtin_va_list __gnuc_va_list;
|
# 50 "/usr/include/libio.h" 2 3 4
|
# 144 "/usr/include/libio.h" 3 4
|
struct _IO_jump_t; struct _IO_FILE;
|
|
|
|
|
|
typedef void _IO_lock_t;
|
|
|
|
|
|
struct _IO_marker {
|
struct _IO_marker *_next;
|
struct _IO_FILE *_sbuf;
|
|
|
|
int _pos;
|
# 173 "/usr/include/libio.h" 3 4
|
};
|
|
|
enum __codecvt_result
|
{
|
__codecvt_ok,
|
__codecvt_partial,
|
__codecvt_error,
|
__codecvt_noconv
|
};
|
# 241 "/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;
|
# 289 "/usr/include/libio.h" 3 4
|
__off64_t _offset;
|
|
|
|
|
|
|
|
void *__pad1;
|
void *__pad2;
|
void *__pad3;
|
void *__pad4;
|
|
size_t __pad5;
|
int _mode;
|
|
char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
|
|
};
|
|
|
|
|
|
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_;
|
# 333 "/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);
|
# 429 "/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 ();
|
# 459 "/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 ();
|
# 521 "/usr/include/libio.h" 3 4
|
}
|
# 75 "/usr/include/stdio.h" 2 3 4
|
|
|
|
|
typedef __gnuc_va_list va_list;
|
# 112 "/usr/include/stdio.h" 3 4
|
typedef _G_fpos_t fpos_t;
|
|
|
|
|
|
typedef _G_fpos64_t fpos64_t;
|
# 166 "/usr/include/stdio.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4
|
# 167 "/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 ();
|
# 197 "/usr/include/stdio.h" 3 4
|
extern FILE *tmpfile (void) ;
|
# 207 "/usr/include/stdio.h" 3 4
|
extern FILE *tmpfile64 (void) ;
|
|
|
|
extern char *tmpnam (char *__s) throw () ;
|
|
|
|
|
|
extern char *tmpnam_r (char *__s) throw () ;
|
# 229 "/usr/include/stdio.h" 3 4
|
extern char *tempnam (const char *__dir, const char *__pfx)
|
throw () __attribute__ ((__malloc__)) ;
|
# 239 "/usr/include/stdio.h" 3 4
|
extern int fclose (FILE *__stream);
|
|
|
|
|
extern int fflush (FILE *__stream);
|
# 254 "/usr/include/stdio.h" 3 4
|
extern int fflush_unlocked (FILE *__stream);
|
# 264 "/usr/include/stdio.h" 3 4
|
extern int fcloseall (void);
|
# 274 "/usr/include/stdio.h" 3 4
|
extern FILE *fopen (const char *__restrict __filename,
|
const char *__restrict __modes) ;
|
|
|
|
|
extern FILE *freopen (const char *__restrict __filename,
|
const char *__restrict __modes,
|
FILE *__restrict __stream) ;
|
# 299 "/usr/include/stdio.h" 3 4
|
extern FILE *fopen64 (const char *__restrict __filename,
|
const char *__restrict __modes) ;
|
extern FILE *freopen64 (const char *__restrict __filename,
|
const char *__restrict __modes,
|
FILE *__restrict __stream) ;
|
|
|
|
|
extern FILE *fdopen (int __fd, const char *__modes) throw () ;
|
|
|
|
|
|
extern FILE *fopencookie (void *__restrict __magic_cookie,
|
const char *__restrict __modes,
|
_IO_cookie_io_functions_t __io_funcs) throw () ;
|
|
|
|
|
extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
|
throw () ;
|
|
|
|
|
extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ;
|
|
|
|
|
|
|
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
|
|
|
|
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
|
int __modes, size_t __n) throw ();
|
|
|
|
|
|
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
|
size_t __size) throw ();
|
|
|
extern void setlinebuf (FILE *__stream) throw ();
|
# 358 "/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))) ;
|
extern int __asprintf (char **__restrict __ptr,
|
const char *__restrict __fmt, ...)
|
throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
|
extern int asprintf (char **__restrict __ptr,
|
const char *__restrict __fmt, ...)
|
throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
|
|
|
|
|
extern int vdprintf (int __fd, const char *__restrict __fmt,
|
__gnuc_va_list __arg)
|
__attribute__ ((__format__ (__printf__, 2, 0)));
|
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
|
__attribute__ ((__format__ (__printf__, 2, 3)));
|
# 427 "/usr/include/stdio.h" 3 4
|
extern int fscanf (FILE *__restrict __stream,
|
const char *__restrict __format, ...) ;
|
|
|
|
|
extern int scanf (const char *__restrict __format, ...) ;
|
|
extern int sscanf (const char *__restrict __s,
|
const char *__restrict __format, ...) throw ();
|
# 473 "/usr/include/stdio.h" 3 4
|
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
|
__gnuc_va_list __arg)
|
__attribute__ ((__format__ (__scanf__, 2, 0))) ;
|
|
|
|
|
|
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
|
__attribute__ ((__format__ (__scanf__, 1, 0))) ;
|
|
|
extern int vsscanf (const char *__restrict __s,
|
const char *__restrict __format, __gnuc_va_list __arg)
|
throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
|
# 533 "/usr/include/stdio.h" 3 4
|
extern int fgetc (FILE *__stream);
|
extern int getc (FILE *__stream);
|
|
|
|
|
|
extern int getchar (void);
|
# 552 "/usr/include/stdio.h" 3 4
|
extern int getc_unlocked (FILE *__stream);
|
extern int getchar_unlocked (void);
|
# 563 "/usr/include/stdio.h" 3 4
|
extern int fgetc_unlocked (FILE *__stream);
|
# 575 "/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);
|
# 596 "/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);
|
# 624 "/usr/include/stdio.h" 3 4
|
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
|
;
|
# 640 "/usr/include/stdio.h" 3 4
|
extern char *gets (char *__s) __attribute__ ((__deprecated__));
|
# 651 "/usr/include/stdio.h" 3 4
|
extern char *fgets_unlocked (char *__restrict __s, int __n,
|
FILE *__restrict __stream) ;
|
# 667 "/usr/include/stdio.h" 3 4
|
extern __ssize_t __getdelim (char **__restrict __lineptr,
|
size_t *__restrict __n, int __delimiter,
|
FILE *__restrict __stream) ;
|
extern __ssize_t getdelim (char **__restrict __lineptr,
|
size_t *__restrict __n, int __delimiter,
|
FILE *__restrict __stream) ;
|
|
|
|
|
|
|
|
extern __ssize_t getline (char **__restrict __lineptr,
|
size_t *__restrict __n,
|
FILE *__restrict __stream) ;
|
# 691 "/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) ;
|
|
|
|
|
extern size_t fwrite (const void *__restrict __ptr, size_t __size,
|
size_t __n, FILE *__restrict __s);
|
# 728 "/usr/include/stdio.h" 3 4
|
extern int fputs_unlocked (const char *__restrict __s,
|
FILE *__restrict __stream);
|
# 739 "/usr/include/stdio.h" 3 4
|
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
|
size_t __n, FILE *__restrict __stream) ;
|
extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
|
size_t __n, FILE *__restrict __stream);
|
# 751 "/usr/include/stdio.h" 3 4
|
extern int fseek (FILE *__stream, long int __off, int __whence);
|
|
|
|
|
extern long int ftell (FILE *__stream) ;
|
|
|
|
|
extern void rewind (FILE *__stream);
|
# 775 "/usr/include/stdio.h" 3 4
|
extern int fseeko (FILE *__stream, __off_t __off, int __whence);
|
|
|
|
|
extern __off_t ftello (FILE *__stream) ;
|
# 800 "/usr/include/stdio.h" 3 4
|
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
|
|
|
|
|
extern int fsetpos (FILE *__stream, const fpos_t *__pos);
|
# 820 "/usr/include/stdio.h" 3 4
|
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
|
extern __off64_t ftello64 (FILE *__stream) ;
|
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
|
extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);
|
|
|
|
|
extern void clearerr (FILE *__stream) throw ();
|
|
extern int feof (FILE *__stream) throw () ;
|
|
extern int ferror (FILE *__stream) throw () ;
|
|
|
|
|
extern void clearerr_unlocked (FILE *__stream) throw ();
|
extern int feof_unlocked (FILE *__stream) throw () ;
|
extern int ferror_unlocked (FILE *__stream) throw () ;
|
# 848 "/usr/include/stdio.h" 3 4
|
extern void perror (const char *__s);
|
|
|
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/sys_errlist.h" 1 3 4
|
# 26 "/usr/include/arm-linux-gnueabihf/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[];
|
# 856 "/usr/include/stdio.h" 2 3 4
|
|
|
|
|
extern int fileno (FILE *__stream) throw () ;
|
|
|
|
|
extern int fileno_unlocked (FILE *__stream) throw () ;
|
# 874 "/usr/include/stdio.h" 3 4
|
extern FILE *popen (const char *__command, const char *__modes) ;
|
|
|
|
|
|
extern int pclose (FILE *__stream);
|
|
|
|
|
|
extern char *ctermid (char *__s) throw ();
|
|
|
|
|
|
extern char *cuserid (char *__s);
|
|
|
|
|
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 () ;
|
|
|
extern void funlockfile (FILE *__stream) throw ();
|
# 935 "/usr/include/stdio.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4
|
# 35 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4
|
extern __inline __attribute__ ((__gnu_inline__)) int
|
vprintf (const char *__restrict __fmt, __gnuc_va_list __arg)
|
{
|
return vfprintf (stdout, __fmt, __arg);
|
}
|
|
|
|
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
|
feof_unlocked (FILE *__stream) throw ()
|
{
|
return (((__stream)->_flags & 0x10) != 0);
|
}
|
|
|
extern __inline __attribute__ ((__gnu_inline__)) int
|
ferror_unlocked (FILE *__stream) throw ()
|
{
|
return (((__stream)->_flags & 0x20) != 0);
|
}
|
# 936 "/usr/include/stdio.h" 2 3 4
|
|
|
|
|
|
|
|
|
}
|
# 21 "/usr/xenomai/include/cobalt/stdio.h" 2 3
|
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3
|
# 26 "/usr/xenomai/include/cobalt/stdio.h" 2 3
|
|
# 1 "/usr/xenomai/include/xeno_config.h" 1 3
|
# 28 "/usr/xenomai/include/cobalt/stdio.h" 2 3
|
|
|
|
extern "C" {
|
|
|
__typeof__(int) __cobalt_vfprintf(FILE *stream, const char *fmt, va_list args); __typeof__(int) __real_vfprintf(FILE *stream, const char *fmt, va_list args); __typeof__(int) __wrap_vfprintf(FILE *stream, const char *fmt, va_list args);
|
|
|
|
__typeof__(int) __cobalt___vfprintf_chk(FILE *stream, int level, const char *fmt, va_list ap); __typeof__(int) __real___vfprintf_chk(FILE *stream, int level, const char *fmt, va_list ap); __typeof__(int) __wrap___vfprintf_chk(FILE *stream, int level, const char *fmt, va_list ap);
|
|
|
__typeof__(int) __cobalt___vprintf_chk(int flag, const char *fmt, va_list ap); __typeof__(int) __real___vprintf_chk(int flag, const char *fmt, va_list ap); __typeof__(int) __wrap___vprintf_chk(int flag, const char *fmt, va_list ap);
|
|
|
__typeof__(int) __cobalt___printf_chk(int flag, const char *fmt, ...); __typeof__(int) __real___printf_chk(int flag, const char *fmt, ...); __typeof__(int) __wrap___printf_chk(int flag, const char *fmt, ...);
|
|
__typeof__(int) __cobalt___fprintf_chk(FILE *fp, int flag, const char *fmt, ...); __typeof__(int) __real___fprintf_chk(FILE *fp, int flag, const char *fmt, ...); __typeof__(int) __wrap___fprintf_chk(FILE *fp, int flag, const char *fmt, ...);
|
|
int __rt_vfprintf_chk(FILE *stream, int level,
|
const char *fmt, va_list args);
|
|
void __rt_vsyslog_chk(int priority, int level,
|
const char *fmt, va_list args);
|
|
|
|
__typeof__(int) __cobalt_vprintf(const char *fmt, va_list args); __typeof__(int) __real_vprintf(const char *fmt, va_list args); __typeof__(int) __wrap_vprintf(const char *fmt, va_list args);
|
|
__typeof__(int) __cobalt_fprintf(FILE *stream, const char *fmt, ...); __typeof__(int) __real_fprintf(FILE *stream, const char *fmt, ...); __typeof__(int) __wrap_fprintf(FILE *stream, const char *fmt, ...);
|
|
__typeof__(int) __cobalt_printf(const char *fmt, ...); __typeof__(int) __real_printf(const char *fmt, ...); __typeof__(int) __wrap_printf(const char *fmt, ...);
|
|
__typeof__(int) __cobalt_puts(const char *s); __typeof__(int) __real_puts(const char *s); __typeof__(int) __wrap_puts(const char *s);
|
|
__typeof__(int) __cobalt_fputs(const char *s, FILE *stream); __typeof__(int) __real_fputs(const char *s, FILE *stream); __typeof__(int) __wrap_fputs(const char *s, FILE *stream);
|
|
|
__typeof__(int) __cobalt_putchar(int c); __typeof__(int) __real_putchar(int c); __typeof__(int) __wrap_putchar(int c);
|
# 80 "/usr/xenomai/include/cobalt/stdio.h" 3
|
__typeof__(int) __cobalt_fputc(int c, FILE *stream); __typeof__(int) __real_fputc(int c, FILE *stream); __typeof__(int) __wrap_fputc(int c, FILE *stream);
|
# 92 "/usr/xenomai/include/cobalt/stdio.h" 3
|
__typeof__(size_t) __cobalt_fwrite(const void *ptr, size_t sz, size_t nmemb, FILE *stream); __typeof__(size_t) __real_fwrite(const void *ptr, size_t sz, size_t nmemb, FILE *stream); __typeof__(size_t) __wrap_fwrite(const void *ptr, size_t sz, size_t nmemb, FILE *stream);
|
|
|
__typeof__(int) __cobalt_fclose(FILE *stream); __typeof__(int) __real_fclose(FILE *stream); __typeof__(int) __wrap_fclose(FILE *stream);
|
|
int rt_vfprintf(FILE *stream, const char *format, va_list args);
|
|
int rt_vprintf(const char *format, va_list args);
|
|
int rt_fprintf(FILE *stream, const char *format, ...);
|
|
int rt_printf(const char *format, ...);
|
|
int rt_puts(const char *s);
|
|
int rt_fputs(const char *s, FILE *stream);
|
|
int rt_fputc(int c, FILE *stream);
|
|
int rt_putchar(int c);
|
|
size_t rt_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
|
|
void rt_syslog(int priority, const char *format, ...);
|
|
void rt_vsyslog(int priority, const char *format, va_list args);
|
|
int rt_print_init(size_t buffer_size, const char *name);
|
|
const char *rt_print_buffer_name(void);
|
|
void rt_print_flush_buffers(void);
|
|
|
}
|
# 94 "./include/Bela.h" 2
|
|
|
|
int rt_printf(const char *format, ...);
|
int rt_fprintf(FILE *stream, const char *format, ...);
|
int rt_vprintf(const char *format, va_list ap);
|
int rt_vfprintf(FILE *stream, const char *format, va_list ap);
|
|
|
|
|
typedef enum
|
{
|
BelaHw_NoHw = -1,
|
BelaHw_Bela,
|
BelaHw_BelaMini,
|
BelaHw_Salt,
|
BelaHw_CtagFace,
|
BelaHw_CtagBeast,
|
BelaHw_CtagFaceBela,
|
BelaHw_CtagBeastBela,
|
BelaHw_BelaMiniMultiAudio,
|
BelaHw_BelaMiniMultiTdm,
|
BelaHw_BelaMultiTdm,
|
BelaHw_BelaMiniMultiI2s,
|
BelaHw_BelaEs9080,
|
BelaHw_BelaRevC,
|
BelaHw_Batch,
|
} BelaHw;
|
|
typedef struct _BelaHwConfig
|
{
|
float audioSampleRate;
|
unsigned int audioInChannels;
|
unsigned int audioOutChannels;
|
unsigned int analogInChannels;
|
unsigned int analogOutChannels;
|
unsigned int digitalChannels;
|
} BelaHwConfig;
|
|
|
|
|
|
|
|
BelaHwConfig* Bela_HwConfig_new(BelaHw hw);
|
|
|
|
|
void Bela_HwConfig_delete(BelaHwConfig* cfg);
|
|
|
|
|
typedef enum
|
{
|
BelaHwDetectMode_Scan,
|
BelaHwDetectMode_Cache,
|
BelaHwDetectMode_CacheOnly,
|
BelaHwDetectMode_User,
|
BelaHwDetectMode_UserOnly,
|
} BelaHwDetectMode;
|
|
|
# 1 "./include/GPIOcontrol.h" 1
|
# 41 "./include/GPIOcontrol.h"
|
extern "C"
|
{
|
# 53 "./include/GPIOcontrol.h"
|
enum PIN_DIRECTION{
|
INPUT_PIN=0,
|
OUTPUT_PIN=1
|
};
|
|
enum PIN_VALUE{
|
LOW=0,
|
HIGH=1
|
};
|
|
|
|
|
int gpio_setup(unsigned int gpio, int out_flag);
|
int gpio_export(unsigned int gpio);
|
int gpio_unexport(unsigned int gpio);
|
int gpio_set_dir(unsigned int gpio, int out_flag);
|
int gpio_set_value(unsigned int gpio, int value);
|
int gpio_get_value(unsigned int gpio, unsigned int *value);
|
int gpio_set_edge(unsigned int gpio, char *edge);
|
int gpio_fd_open(unsigned int gpio, int writeFlag);
|
int gpio_fd_close(int fd);
|
int gpio_write(int fd, int value);
|
int gpio_read(int fd, unsigned int *value);
|
int gpio_dismiss(int fd, unsigned int gpio);
|
|
int led_set_trigger(unsigned int lednum, const char *trigger);
|
|
|
}
|
# 160 "./include/Bela.h" 2
|
# 219 "./include/Bela.h"
|
struct option;
|
# 229 "./include/Bela.h"
|
typedef struct {
|
# 247 "./include/Bela.h"
|
const float * const audioIn;
|
# 262 "./include/Bela.h"
|
float * const audioOut;
|
# 281 "./include/Bela.h"
|
const float * const analogIn;
|
# 296 "./include/Bela.h"
|
float * const analogOut;
|
# 306 "./include/Bela.h"
|
uint32_t * const digital;
|
# 320 "./include/Bela.h"
|
const uint32_t audioFrames;
|
|
const uint32_t audioInChannels;
|
|
const uint32_t audioOutChannels;
|
|
const float audioSampleRate;
|
# 339 "./include/Bela.h"
|
const uint32_t analogFrames;
|
|
|
|
|
const uint32_t analogInChannels;
|
|
|
|
|
const uint32_t analogOutChannels;
|
# 360 "./include/Bela.h"
|
const float analogSampleRate;
|
|
|
const uint32_t digitalFrames;
|
|
|
|
const uint32_t digitalChannels;
|
|
const float digitalSampleRate;
|
|
|
|
|
|
|
|
const uint64_t audioFramesElapsed;
|
|
|
|
|
|
const uint32_t multiplexerChannels;
|
|
|
|
|
|
const uint32_t multiplexerStartingChannel;
|
|
|
|
|
|
|
const float * const multiplexerAnalogIn;
|
|
|
|
|
|
const uint32_t audioExpanderEnabled;
|
# 412 "./include/Bela.h"
|
const uint32_t flags;
|
|
|
char projectName[256];
|
|
|
const unsigned int underrunCount;
|
} BelaContext;
|
|
struct BelaChannelGain {
|
int channel;
|
float gain;
|
};
|
|
struct BelaChannelGainArray {
|
unsigned int length;
|
struct BelaChannelGain* data;
|
};
|
# 439 "./include/Bela.h"
|
typedef struct {
|
|
|
|
|
|
|
|
int periodSize;
|
|
int useAnalog;
|
|
int useDigital;
|
|
int numAudioInChannels;
|
|
int numAudioOutChannels;
|
|
int numAnalogInChannels;
|
|
int numAnalogOutChannels;
|
|
int numDigitalChannels;
|
|
|
int beginMuted;
|
|
float dacLevel;
|
|
float adcLevel;
|
|
float pgaGain[2];
|
|
float headphoneLevel;
|
|
int numMuxChannels;
|
|
unsigned int audioExpanderInputs;
|
|
unsigned int audioExpanderOutputs;
|
|
|
int pruNumber;
|
|
char pruFilename[256];
|
|
int detectUnderruns;
|
|
int verbose;
|
|
int enableLED;
|
|
|
int stopButtonPin;
|
|
|
|
|
int highPerformanceMode;
|
|
|
|
|
|
int interleave;
|
|
|
|
int analogOutputsPersist;
|
|
|
int uniformSampleRate;
|
|
|
unsigned int audioThreadStackSize;
|
|
|
unsigned int auxiliaryTaskStackSize;
|
|
|
bool (*setup)(BelaContext*, void*);
|
void (*render)(BelaContext*, void*);
|
void (*cleanup)(BelaContext*, void*);
|
|
|
|
|
int ampMutePin;
|
|
|
|
void (*audioThreadDone)(BelaContext*, void*);
|
|
char* codecMode;
|
|
struct BelaChannelGainArray audioInputGains;
|
|
struct BelaChannelGainArray headphoneGains;
|
|
struct BelaChannelGainArray adcGains;
|
|
struct BelaChannelGainArray lineOutGains;
|
|
char unused[224];
|
|
|
BelaHw board;
|
|
|
char* projectName;
|
|
} BelaInitSettings;
|
|
|
|
|
|
|
typedef void* AuxiliaryTask;
|
# 575 "./include/Bela.h"
|
extern int volatile gShouldStop;
|
# 605 "./include/Bela.h"
|
bool setup(BelaContext *context, void *userData);
|
# 621 "./include/Bela.h"
|
void render(BelaContext *context, void *userData);
|
# 638 "./include/Bela.h"
|
void cleanup(BelaContext *context, void *userData);
|
# 661 "./include/Bela.h"
|
BelaInitSettings* Bela_InitSettings_alloc();
|
# 671 "./include/Bela.h"
|
void Bela_InitSettings_free(BelaInitSettings* settings);
|
# 682 "./include/Bela.h"
|
void Bela_defaultSettings(BelaInitSettings *settings);
|
|
#pragma weak Bela_userSettings
|
# 696 "./include/Bela.h"
|
void Bela_userSettings(BelaInitSettings *settings);
|
# 719 "./include/Bela.h"
|
int Bela_getopt_long(int argc, char * const argv[], const char *customShortOptions,
|
const struct option *customLongOptions, BelaInitSettings *settings);
|
# 729 "./include/Bela.h"
|
void Bela_usage();
|
|
|
|
|
void Bela_getVersion(int* major, int* minor, int* bugfix);
|
|
|
|
|
|
|
|
void Bela_setVerboseLevel(int level);
|
# 751 "./include/Bela.h"
|
BelaHw Bela_detectHw(BelaHwDetectMode mode);
|
# 770 "./include/Bela.h"
|
int Bela_initAudio(BelaInitSettings *settings, void *userData);
|
# 780 "./include/Bela.h"
|
int Bela_startAudio();
|
# 790 "./include/Bela.h"
|
int Bela_runInSameThread();
|
|
|
|
|
|
|
|
void Bela_stopAudio();
|
# 807 "./include/Bela.h"
|
void Bela_cleanupAudio();
|
# 816 "./include/Bela.h"
|
void Bela_setUserData(void* newUserData);
|
# 830 "./include/Bela.h"
|
void Bela_requestStop();
|
# 841 "./include/Bela.h"
|
int Bela_stopRequested();
|
# 867 "./include/Bela.h"
|
# 1 "/usr/xenomai/include/cobalt/time.h" 1
|
# 19 "/usr/xenomai/include/cobalt/time.h" 3
|
# 1 "/usr/include/time.h" 1 3 4
|
# 29 "/usr/include/time.h" 3 4
|
extern "C" {
|
|
|
|
|
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 38 "/usr/include/time.h" 2 3 4
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4
|
# 30 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4
|
struct timeval
|
{
|
__time_t tv_sec;
|
__suseconds_t tv_usec;
|
};
|
# 88 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4
|
# 25 "/usr/include/arm-linux-gnueabihf/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/arm-linux-gnueabihf/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
|
# 59 "/usr/include/time.h" 3 4
|
typedef __clock_t clock_t;
|
# 75 "/usr/include/time.h" 3 4
|
typedef __time_t time_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;
|
# 120 "/usr/include/time.h" 3 4
|
struct timespec
|
{
|
__time_t tv_sec;
|
__syscall_slong_t tv_nsec;
|
};
|
# 133 "/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;
|
# 189 "/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);
|
|
|
}
|
# 20 "/usr/xenomai/include/cobalt/time.h" 2 3
|
|
|
|
|
|
|
|
# 1 "/usr/xenomai/include/cobalt/uapi/time.h" 1 3
|
# 28 "/usr/xenomai/include/cobalt/time.h" 2 3
|
|
|
extern "C" {
|
|
|
struct timex;
|
|
__typeof__(int) __cobalt_clock_getres(clockid_t clock_id, struct timespec *tp); __typeof__(int) __real_clock_getres(clockid_t clock_id, struct timespec *tp); __typeof__(int) __wrap_clock_getres(clockid_t clock_id, struct timespec *tp);
|
|
|
__typeof__(int) __cobalt_clock_gettime(clockid_t clock_id, struct timespec *tp); __typeof__(int) __real_clock_gettime(clockid_t clock_id, struct timespec *tp); __typeof__(int) __wrap_clock_gettime(clockid_t clock_id, struct timespec *tp);
|
|
|
__typeof__(int) __cobalt_clock_settime(clockid_t clock_id, const struct timespec *tp); __typeof__(int) __real_clock_settime(clockid_t clock_id, const struct timespec *tp); __typeof__(int) __wrap_clock_settime(clockid_t clock_id, const struct timespec *tp);
|
|
|
__typeof__(int) __cobalt_clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); __typeof__(int) __real_clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); __typeof__(int) __wrap_clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp);
|
|
|
|
|
__typeof__(time_t) __cobalt_time(time_t *t); __typeof__(time_t) __real_time(time_t *t); __typeof__(time_t) __wrap_time(time_t *t);
|
|
__typeof__(int) __cobalt_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); __typeof__(int) __real_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); __typeof__(int) __wrap_nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
|
|
|
__typeof__(int) __cobalt_timer_create(clockid_t clockid, const struct sigevent *__restrict__ evp, timer_t * __restrict__ timerid); __typeof__(int) __real_timer_create(clockid_t clockid, const struct sigevent *__restrict__ evp, timer_t * __restrict__ timerid); __typeof__(int) __wrap_timer_create(clockid_t clockid, const struct sigevent *__restrict__ evp, timer_t * __restrict__ timerid);
|
|
|
|
__typeof__(int) __cobalt_timer_delete(timer_t timerid); __typeof__(int) __real_timer_delete(timer_t timerid); __typeof__(int) __wrap_timer_delete(timer_t timerid);
|
|
__typeof__(int) __cobalt_timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); __typeof__(int) __real_timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); __typeof__(int) __wrap_timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue);
|
|
|
|
|
__typeof__(int) __cobalt_timer_gettime(timer_t timerid, struct itimerspec *value); __typeof__(int) __real_timer_gettime(timer_t timerid, struct itimerspec *value); __typeof__(int) __wrap_timer_gettime(timer_t timerid, struct itimerspec *value);
|
|
|
__typeof__(int) __cobalt_timer_getoverrun(timer_t timerid); __typeof__(int) __real_timer_getoverrun(timer_t timerid); __typeof__(int) __wrap_timer_getoverrun(timer_t timerid);
|
|
|
}
|
# 868 "./include/Bela.h" 2
|
typedef struct {
|
int count;
|
unsigned int currentCount;
|
long long unsigned int busy;
|
long long unsigned int total;
|
struct timespec tic;
|
struct timespec toc;
|
float percentage;
|
} BelaCpuData;
|
|
|
|
|
|
int Bela_cpuMonitoringInit(int count);
|
|
|
|
|
|
|
BelaCpuData* Bela_cpuMonitoringGet();
|
|
|
|
|
|
|
|
void Bela_cpuTic(BelaCpuData* data);
|
|
|
|
|
|
void Bela_cpuToc(BelaCpuData* data);
|
# 930 "./include/Bela.h"
|
int Bela_setLineOutLevel(int channel, float decibel);
|
# 939 "./include/Bela.h"
|
int Bela_setDacLevel(int channel, float decibels);
|
|
|
|
|
|
|
int Bela_setDACLevel(float decibels);
|
# 963 "./include/Bela.h"
|
int Bela_setAdcLevel(int channel, float decibels);
|
|
|
|
|
|
|
int Bela_setADCLevel(float decibels);
|
# 989 "./include/Bela.h"
|
int Bela_setAudioInputGain(int channel, float decibels);
|
|
|
|
|
|
|
int Bela_setPgaGain(float decibels, int channel);
|
# 1014 "./include/Bela.h"
|
int Bela_setHpLevel(int channel, float decibels);
|
|
|
|
|
int Bela_setHeadphoneLevel(float decibels);
|
# 1034 "./include/Bela.h"
|
int Bela_muteSpeakers(int mute);
|
# 1070 "./include/Bela.h"
|
AuxiliaryTask Bela_createAuxiliaryTask(void (*callback)(void*), int priority, const char *name, void* arg
|
|
= __null
|
|
);
|
# 1091 "./include/Bela.h"
|
int Bela_scheduleAuxiliaryTask(AuxiliaryTask task);
|
# 1106 "./include/Bela.h"
|
AuxiliaryTask Bela_runAuxiliaryTask(void (*callback)(void*), int priority = 0, void* arg = nullptr);
|
# 1126 "./include/Bela.h"
|
int Bela_startAuxiliaryTask(AuxiliaryTask task);
|
int Bela_startAllAuxiliaryTasks();
|
void Bela_stopAllAuxiliaryTasks();
|
void Bela_deleteAllAuxiliaryTasks();
|
|
|
|
|
|
|
# 1 "./include/Utilities.h" 1
|
# 29 "./include/Utilities.h"
|
static inline float map(float x, float in_min, float in_max, float out_min, float out_max);
|
# 47 "./include/Utilities.h"
|
static inline float constrain(float x, float min_val, float max_val);
|
|
|
|
|
|
|
static inline float min(float x, float y);
|
|
|
|
|
|
|
static inline float max(float x, float y);
|
# 71 "./include/Utilities.h"
|
static inline float map(float x, float in_min, float in_max, float out_min, float out_max)
|
{
|
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
}
|
|
|
|
|
|
|
static inline float constrain(float x, float min_val, float max_val)
|
{
|
if(x < min_val) return min_val;
|
if(x > max_val) return max_val;
|
return x;
|
}
|
|
static inline float max(float x, float y){
|
return x > y ? x : y;
|
}
|
|
static inline float min(float x, float y){
|
return x < y ? x : y;
|
}
|
# 1136 "./include/Bela.h" 2
|
# 1154 "./include/Bela.h"
|
enum {
|
INPUT = 0,
|
OUTPUT = 1,
|
};
|
# 1205 "./include/Bela.h"
|
static inline float audioRead(BelaContext *context, int frame, int channel);
|
|
|
|
|
|
|
static inline float audioReadNI(BelaContext *context, int frame, int channel);
|
# 1227 "./include/Bela.h"
|
static inline void audioWrite(BelaContext *context, int frame, int channel, float value);
|
|
|
|
|
|
|
static inline void audioWriteNI(BelaContext *context, int frame, int channel, float value);
|
# 1249 "./include/Bela.h"
|
static inline float analogRead(BelaContext *context, int frame, int channel);
|
|
|
|
|
|
|
static inline float analogReadNI(BelaContext *context, int frame, int channel);
|
# 1274 "./include/Bela.h"
|
static inline void analogWrite(BelaContext *context, int frame, int channel, float value);
|
|
|
|
|
|
|
static inline void analogWriteNI(BelaContext *context, int frame, int channel, float value);
|
# 1302 "./include/Bela.h"
|
static inline void analogWriteOnce(BelaContext *context, int frame, int channel, float value);
|
|
|
|
|
|
|
static inline void analogWriteOnceNI(BelaContext *context, int frame, int channel, float value);
|
# 1325 "./include/Bela.h"
|
static inline int digitalRead(BelaContext *context, int frame, int channel);
|
# 1343 "./include/Bela.h"
|
static inline void digitalWrite(BelaContext *context, int frame, int channel, int value);
|
# 1363 "./include/Bela.h"
|
static inline void digitalWriteOnce(BelaContext *context, int frame, int channel, int value);
|
# 1381 "./include/Bela.h"
|
static inline void pinMode(BelaContext *context, int frame, int channel, int mode);
|
# 1399 "./include/Bela.h"
|
static inline void pinModeOnce(BelaContext *context, int frame, int channel, int mode);
|
# 1424 "./include/Bela.h"
|
static inline float multiplexerAnalogRead(BelaContext *context, int input, int muxChannel);
|
# 1447 "./include/Bela.h"
|
static inline unsigned int multiplexerChannelForFrame(BelaContext *context, int frame);
|
|
|
|
|
|
|
static inline float audioRead(BelaContext *context, int frame, int channel) {
|
return context->audioIn[frame * context->audioInChannels + channel];
|
}
|
|
static inline float audioReadNI(BelaContext *context, int frame, int channel) {
|
return context->audioIn[channel * context->audioFrames + frame];
|
}
|
|
|
|
|
static inline void audioWrite(BelaContext *context, int frame, int channel, float value) {
|
context->audioOut[frame * context->audioOutChannels + channel] = value;
|
}
|
|
static inline void audioWriteNI(BelaContext *context, int frame, int channel, float value) {
|
context->audioOut[channel * context->audioFrames + frame] = value;
|
}
|
|
|
|
|
static inline float analogRead(BelaContext *context, int frame, int channel) {
|
return context->analogIn[frame * context->analogInChannels + channel];
|
}
|
|
static inline float analogReadNI(BelaContext *context, int frame, int channel) {
|
return context->analogIn[channel * context->analogFrames + frame];
|
}
|
|
|
|
|
static inline void analogWriteOnce(BelaContext *context, int frame, int channel, float value) {
|
context->analogOut[frame * context->analogOutChannels + channel] = value;
|
}
|
|
static inline void analogWriteOnceNI(BelaContext *context, int frame, int channel, float value) {
|
context->analogOut[channel * context->analogFrames + frame] = value;
|
}
|
|
|
|
|
|
static inline void analogWrite(BelaContext *context, int frame, int channel, float value) {
|
unsigned int f;
|
for(f = frame; f < context->analogFrames; f++)
|
analogWriteOnce(context, f, channel, value);
|
}
|
|
static inline void analogWriteNI(BelaContext *context, int frame, int channel, float value) {
|
unsigned int f;
|
for(f = frame; f < context->analogFrames; f++)
|
analogWriteOnceNI(context, f, channel, value);
|
}
|
|
|
|
|
static inline int digitalRead(BelaContext *context, int frame, int channel) {
|
return (((context->digital[frame]) >> (channel + 16)) & 1);
|
}
|
|
|
|
|
static inline void digitalWrite(BelaContext *context, int frame, int channel, int value) {
|
unsigned int f;
|
for(f = frame; f < context->digitalFrames; f++) {
|
if(value)
|
context->digital[f] |= 1 << (channel + 16);
|
else
|
context->digital[f] &= ~(1 << (channel + 16));
|
}
|
}
|
|
|
|
|
static inline void digitalWriteOnce(BelaContext *context, int frame, int channel, int value) {
|
if(value)
|
context->digital[frame] |= 1 << (channel + 16);
|
else
|
context->digital[frame] &= ~(1 << (channel + 16));
|
}
|
|
|
|
|
static inline void pinMode(BelaContext *context, int frame, int channel, int mode) {
|
unsigned int f;
|
for(f = frame; f < context->digitalFrames; f++) {
|
if(mode == INPUT)
|
context->digital[f] |= (1 << channel);
|
else
|
context->digital[f] &= ~(1 << channel);
|
}
|
}
|
|
|
|
|
static inline void pinModeOnce(BelaContext *context, int frame, int channel, int mode) {
|
if(mode == INPUT)
|
context->digital[frame] |= (1 << channel);
|
else
|
context->digital[frame] &= ~(1 << channel);
|
}
|
|
|
|
|
static inline float multiplexerAnalogRead(BelaContext *context, int input, int muxChannel) {
|
return context->multiplexerAnalogIn[muxChannel * context->analogInChannels + input];
|
}
|
|
|
|
|
static inline unsigned int multiplexerChannelForFrame(BelaContext *context, int frame) {
|
if(context->multiplexerChannels <= 1)
|
return 1;
|
return (context->multiplexerStartingChannel + frame) % context->multiplexerChannels;
|
}
|
|
|
}
|
# 49 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp" 2
|
# 1 "/usr/xenomai/include/cobalt/stdlib.h" 1
|
# 19 "/usr/xenomai/include/cobalt/stdlib.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdlib.h" 1 3
|
# 36 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdlib.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++config.h" 1 3
|
# 199 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++config.h" 3
|
namespace std
|
{
|
typedef unsigned int size_t;
|
typedef int ptrdiff_t;
|
|
|
typedef decltype(nullptr) nullptr_t;
|
|
}
|
# 221 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++config.h" 3
|
namespace std
|
{
|
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
|
}
|
namespace __gnu_cxx
|
{
|
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
|
}
|
# 507 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++config.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/os_defines.h" 1 3
|
# 508 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++config.h" 2 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/cpu_defines.h" 1 3
|
# 511 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++config.h" 2 3
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 2 3
|
# 75 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 3
|
# 1 "/usr/include/stdlib.h" 1 3 4
|
# 32 "/usr/include/stdlib.h" 3 4
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 33 "/usr/include/stdlib.h" 2 3 4
|
|
extern "C" {
|
|
|
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4
|
# 50 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 3 4
|
typedef enum
|
{
|
P_ALL,
|
P_PID,
|
P_PGID
|
} idtype_t;
|
# 42 "/usr/include/stdlib.h" 2 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4
|
# 43 "/usr/include/stdlib.h" 2 3 4
|
# 58 "/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;
|
# 100 "/usr/include/stdlib.h" 3 4
|
extern size_t __ctype_get_mb_cur_max (void) throw () ;
|
|
|
|
|
extern double atof (const char *__nptr)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
|
|
extern int atoi (const char *__nptr)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
|
|
extern long int atol (const char *__nptr)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
__extension__ extern long long int atoll (const char *__nptr)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
extern double strtod (const char *__restrict __nptr,
|
char **__restrict __endptr)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
extern float strtof (const char *__restrict __nptr,
|
char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1)));
|
|
extern long double strtold (const char *__restrict __nptr,
|
char **__restrict __endptr)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
extern long int strtol (const char *__restrict __nptr,
|
char **__restrict __endptr, int __base)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
extern unsigned long int strtoul (const char *__restrict __nptr,
|
char **__restrict __endptr, int __base)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
__extension__
|
extern long long int strtoq (const char *__restrict __nptr,
|
char **__restrict __endptr, int __base)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
__extension__
|
extern unsigned long long int strtouq (const char *__restrict __nptr,
|
char **__restrict __endptr, int __base)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
__extension__
|
extern long long int strtoll (const char *__restrict __nptr,
|
char **__restrict __endptr, int __base)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
__extension__
|
extern unsigned long long int strtoull (const char *__restrict __nptr,
|
char **__restrict __endptr, int __base)
|
throw () __attribute__ ((__nonnull__ (1)));
|
# 200 "/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
|
atoi (const char *__nptr) throw ()
|
{
|
return (int) strtol (__nptr, (char **) __null, 10);
|
}
|
extern __inline __attribute__ ((__gnu_inline__)) long int
|
atol (const char *__nptr) throw ()
|
{
|
return strtol (__nptr, (char **) __null, 10);
|
}
|
|
|
|
|
__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
|
atoll (const char *__nptr) throw ()
|
{
|
return strtoll (__nptr, (char **) __null, 10);
|
}
|
# 266 "/usr/include/stdlib.h" 3 4
|
extern char *l64a (long int __n) throw () ;
|
|
|
extern long int a64l (const char *__s)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4
|
# 27 "/usr/include/arm-linux-gnueabihf/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 __ino_t ino_t;
|
|
|
|
|
|
|
typedef __ino64_t ino64_t;
|
|
|
|
|
typedef __dev_t dev_t;
|
# 70 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
typedef __mode_t mode_t;
|
|
|
|
|
typedef __nlink_t nlink_t;
|
# 104 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
typedef __id_t id_t;
|
# 115 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
typedef __daddr_t daddr_t;
|
typedef __caddr_t caddr_t;
|
|
|
|
|
|
typedef __key_t key_t;
|
# 132 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
# 1 "/usr/xenomai/include/cobalt/time.h" 1 3 4
|
# 19 "/usr/xenomai/include/cobalt/time.h" 3
|
# 133 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
|
|
|
|
|
|
|
|
typedef __suseconds_t suseconds_t;
|
|
|
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 147 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
|
|
|
|
typedef unsigned long int ulong;
|
typedef unsigned short int ushort;
|
typedef unsigned int uint;
|
# 200 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
|
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
|
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
|
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
|
|
typedef int register_t __attribute__ ((__mode__ (__word__)));
|
# 216 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
# 1 "/usr/include/endian.h" 1 3 4
|
# 36 "/usr/include/endian.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4
|
# 37 "/usr/include/endian.h" 2 3 4
|
# 60 "/usr/include/endian.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4
|
# 34 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap-16.h" 1 3 4
|
# 35 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 2 3 4
|
# 61 "/usr/include/endian.h" 2 3 4
|
# 217 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
|
|
|
# 1 "/usr/xenomai/include/cobalt/sys/select.h" 1 3 4
|
# 19 "/usr/xenomai/include/cobalt/sys/select.h" 3
|
# 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4
|
# 30 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4
|
# 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/sigset.h" 1 3 4
|
# 22 "/usr/include/arm-linux-gnueabihf/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/arm-linux-gnueabihf/sys/select.h" 2 3 4
|
|
|
|
typedef __sigset_t sigset_t;
|
|
|
|
|
|
|
|
|
# 1 "/usr/xenomai/include/cobalt/time.h" 1 3 4
|
# 19 "/usr/xenomai/include/cobalt/time.h" 3
|
# 46 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4
|
# 48 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4
|
|
|
|
|
|
|
|
|
typedef long int __fd_mask;
|
# 66 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
|
typedef struct
|
{
|
|
|
|
__fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
|
|
|
|
|
|
} fd_set;
|
|
|
|
|
|
|
typedef __fd_mask fd_mask;
|
# 98 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
|
extern "C" {
|
# 108 "/usr/include/arm-linux-gnueabihf/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);
|
# 120 "/usr/include/arm-linux-gnueabihf/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);
|
# 133 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4
|
}
|
# 20 "/usr/xenomai/include/cobalt/sys/select.h" 2 3
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
__typeof__(int) __cobalt_select(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); __typeof__(int) __real_select(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); __typeof__(int) __wrap_select(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout);
|
|
|
|
|
}
|
# 220 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/sys/sysmacros.h" 1 3 4
|
# 24 "/usr/include/arm-linux-gnueabihf/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
|
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
|
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
|
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/arm-linux-gnueabihf/sys/types.h" 2 3 4
|
|
|
|
|
|
typedef __blksize_t blksize_t;
|
|
|
|
|
|
|
typedef __blkcnt_t blkcnt_t;
|
|
|
|
typedef __fsblkcnt_t fsblkcnt_t;
|
|
|
|
typedef __fsfilcnt_t fsfilcnt_t;
|
# 262 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4
|
typedef __blkcnt64_t blkcnt64_t;
|
typedef __fsblkcnt64_t fsblkcnt64_t;
|
typedef __fsfilcnt64_t fsfilcnt64_t;
|
|
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4
|
# 37 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4
|
typedef unsigned long int pthread_t;
|
|
|
union pthread_attr_t
|
{
|
char __size[36];
|
long int __align;
|
};
|
|
typedef union pthread_attr_t pthread_attr_t;
|
|
|
|
|
typedef struct __pthread_internal_slist
|
{
|
struct __pthread_internal_slist *__next;
|
} __pthread_slist_t;
|
|
|
|
|
typedef union
|
{
|
struct __pthread_mutex_s
|
{
|
int __lock;
|
unsigned int __count;
|
int __owner;
|
|
|
int __kind;
|
unsigned int __nusers;
|
__extension__ union
|
{
|
int __spins;
|
__pthread_slist_t __list;
|
};
|
} __data;
|
char __size[24];
|
long int __align;
|
} pthread_mutex_t;
|
|
|
|
|
typedef union
|
{
|
char __size[4];
|
long int __align;
|
} pthread_mutexattr_t;
|
|
|
|
|
typedef union
|
{
|
struct
|
{
|
int __lock;
|
unsigned int __futex;
|
__extension__ unsigned long long int __total_seq;
|
__extension__ unsigned long long int __wakeup_seq;
|
__extension__ unsigned long long int __woken_seq;
|
void *__mutex;
|
unsigned int __nwaiters;
|
unsigned int __broadcast_seq;
|
} __data;
|
char __size[48];
|
__extension__ long long int __align;
|
} pthread_cond_t;
|
|
typedef union
|
{
|
char __size[4];
|
long int __align;
|
} pthread_condattr_t;
|
|
|
|
typedef unsigned int pthread_key_t;
|
|
|
|
typedef int pthread_once_t;
|
|
|
|
|
|
typedef union
|
{
|
struct
|
{
|
int __lock;
|
unsigned int __nr_readers;
|
unsigned int __readers_wakeup;
|
unsigned int __writer_wakeup;
|
unsigned int __nr_readers_queued;
|
unsigned int __nr_writers_queued;
|
# 147 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4
|
unsigned char __flags;
|
unsigned char __shared;
|
unsigned char __pad1;
|
unsigned char __pad2;
|
|
int __writer;
|
} __data;
|
char __size[32];
|
long int __align;
|
} pthread_rwlock_t;
|
|
|
|
typedef union
|
{
|
char __size[8];
|
long int __align;
|
} pthread_rwlockattr_t;
|
|
|
|
|
|
typedef volatile int pthread_spinlock_t;
|
|
|
|
|
typedef union
|
{
|
char __size[20];
|
long int __align;
|
} pthread_barrier_t;
|
|
typedef union
|
{
|
char __size[4];
|
int __align;
|
} pthread_barrierattr_t;
|
# 271 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4
|
|
|
}
|
# 276 "/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;
|
__extension__ 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)));
|
# 427 "/usr/include/stdlib.h" 3 4
|
extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
|
|
extern void *calloc (size_t __nmemb, size_t __size)
|
throw () __attribute__ ((__malloc__)) ;
|
# 441 "/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/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 25 "/usr/include/alloca.h" 2 3 4
|
|
extern "C" {
|
|
|
|
|
|
extern void *alloca (size_t __size) throw ();
|
|
|
|
|
|
}
|
# 454 "/usr/include/stdlib.h" 2 3 4
|
|
|
|
|
|
extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
|
|
|
|
|
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
extern void *aligned_alloc (size_t __alignment, size_t __size)
|
throw () __attribute__ ((__malloc__)) ;
|
|
|
|
|
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)));
|
# 496 "/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))) ;
|
|
|
|
|
|
extern char *secure_getenv (const char *__name)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
|
|
|
|
|
|
extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
extern int setenv (const char *__name, const char *__value, int __replace)
|
throw () __attribute__ ((__nonnull__ (2)));
|
|
|
extern int unsetenv (const char *__name) throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
|
extern int clearenv (void) throw ();
|
# 567 "/usr/include/stdlib.h" 3 4
|
extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1)));
|
# 580 "/usr/include/stdlib.h" 3 4
|
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
|
# 590 "/usr/include/stdlib.h" 3 4
|
extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
|
# 602 "/usr/include/stdlib.h" 3 4
|
extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ;
|
# 612 "/usr/include/stdlib.h" 3 4
|
extern int mkstemps64 (char *__template, int __suffixlen)
|
__attribute__ ((__nonnull__ (1))) ;
|
# 623 "/usr/include/stdlib.h" 3 4
|
extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
|
# 634 "/usr/include/stdlib.h" 3 4
|
extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
|
# 644 "/usr/include/stdlib.h" 3 4
|
extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
|
# 654 "/usr/include/stdlib.h" 3 4
|
extern int mkostemps (char *__template, int __suffixlen, int __flags)
|
__attribute__ ((__nonnull__ (1))) ;
|
# 666 "/usr/include/stdlib.h" 3 4
|
extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
|
__attribute__ ((__nonnull__ (1))) ;
|
# 677 "/usr/include/stdlib.h" 3 4
|
extern int system (const char *__command) ;
|
|
|
|
|
|
|
extern char *canonicalize_file_name (const char *__name)
|
throw () __attribute__ ((__nonnull__ (1))) ;
|
# 694 "/usr/include/stdlib.h" 3 4
|
extern char *realpath (const char *__restrict __name,
|
char *__restrict __resolved) throw () ;
|
|
|
|
|
|
|
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))) ;
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4
|
# 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4
|
extern __inline __attribute__ ((__gnu_inline__)) void *
|
bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
|
__compar_fn_t __compar)
|
{
|
size_t __l, __u, __idx;
|
const void *__p;
|
int __comparison;
|
|
__l = 0;
|
__u = __nmemb;
|
while (__l < __u)
|
{
|
__idx = (__l + __u) / 2;
|
__p = (void *) (((const char *) __base) + (__idx * __size));
|
__comparison = (*__compar) (__key, __p);
|
if (__comparison < 0)
|
__u = __idx;
|
else if (__comparison > 0)
|
__l = __idx + 1;
|
else
|
return (void *) __p;
|
}
|
|
return __null;
|
}
|
# 721 "/usr/include/stdlib.h" 2 3 4
|
|
|
|
|
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__)) ;
|
extern long int labs (long int __x) throw () __attribute__ ((__const__)) ;
|
|
|
|
__extension__ extern long long int llabs (long long int __x)
|
throw () __attribute__ ((__const__)) ;
|
|
|
|
|
|
|
|
extern div_t div (int __numer, int __denom)
|
throw () __attribute__ ((__const__)) ;
|
extern ldiv_t ldiv (long int __numer, long int __denom)
|
throw () __attribute__ ((__const__)) ;
|
|
|
|
|
__extension__ extern lldiv_t lldiv (long long int __numer,
|
long long int __denom)
|
throw () __attribute__ ((__const__)) ;
|
# 772 "/usr/include/stdlib.h" 3 4
|
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
|
int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ;
|
|
|
|
|
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
|
int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) ;
|
|
|
|
|
extern char *gcvt (double __value, int __ndigit, char *__buf)
|
throw () __attribute__ ((__nonnull__ (3))) ;
|
|
|
|
|
extern char *qecvt (long double __value, int __ndigit,
|
int *__restrict __decpt, int *__restrict __sign)
|
throw () __attribute__ ((__nonnull__ (3, 4))) ;
|
extern char *qfcvt (long double __value, int __ndigit,
|
int *__restrict __decpt, int *__restrict __sign)
|
throw () __attribute__ ((__nonnull__ (3, 4))) ;
|
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
|
throw () __attribute__ ((__nonnull__ (3))) ;
|
|
|
|
|
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 ();
|
|
|
extern int mbtowc (wchar_t *__restrict __pwc,
|
const char *__restrict __s, size_t __n) throw ();
|
|
|
extern int wctomb (char *__s, wchar_t __wchar) throw ();
|
|
|
|
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 ();
|
# 848 "/usr/include/stdlib.h" 3 4
|
extern int rpmatch (const char *__response) throw () __attribute__ ((__nonnull__ (1))) ;
|
# 859 "/usr/include/stdlib.h" 3 4
|
extern int getsubopt (char **__restrict __optionp,
|
char *const *__restrict __tokens,
|
char **__restrict __valuep)
|
throw () __attribute__ ((__nonnull__ (1, 2, 3))) ;
|
|
|
|
|
|
extern void setkey (const char *__key) throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
|
|
|
extern int posix_openpt (int __oflag) ;
|
|
|
|
|
|
|
|
extern int grantpt (int __fd) throw ();
|
|
|
|
extern int unlockpt (int __fd) throw ();
|
|
|
|
|
extern char *ptsname (int __fd) throw () ;
|
|
|
|
|
|
|
extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
|
throw () __attribute__ ((__nonnull__ (2)));
|
|
|
extern int getpt (void);
|
|
|
|
|
|
|
extern int getloadavg (double __loadavg[], int __nelem)
|
throw () __attribute__ ((__nonnull__ (1)));
|
# 921 "/usr/include/stdlib.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4
|
# 25 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4
|
extern __inline __attribute__ ((__gnu_inline__)) double
|
atof (const char *__nptr) throw ()
|
{
|
return strtod (__nptr, (char **) __null);
|
}
|
# 922 "/usr/include/stdlib.h" 2 3 4
|
# 934 "/usr/include/stdlib.h" 3 4
|
}
|
# 76 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 2 3
|
# 118 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 3
|
extern "C++"
|
{
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
using ::div_t;
|
using ::ldiv_t;
|
|
using ::abort;
|
using ::abs;
|
using ::atexit;
|
|
|
using ::at_quick_exit;
|
|
|
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 ::quick_exit;
|
|
|
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); }
|
# 202 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 3
|
}
|
# 215 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
# 247 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
|
|
|
}
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdlib.h" 2 3
|
|
using std::abort;
|
using std::atexit;
|
using std::exit;
|
|
|
using std::at_quick_exit;
|
|
|
using std::quick_exit;
|
|
|
|
|
using std::div_t;
|
using std::ldiv_t;
|
|
using std::abs;
|
using std::atof;
|
using std::atoi;
|
using std::atol;
|
using std::bsearch;
|
using std::calloc;
|
using std::div;
|
using std::free;
|
using std::getenv;
|
using std::labs;
|
using std::ldiv;
|
using std::malloc;
|
|
using std::mblen;
|
using std::mbstowcs;
|
using std::mbtowc;
|
|
using std::qsort;
|
using std::rand;
|
using std::realloc;
|
using std::srand;
|
using std::strtod;
|
using std::strtol;
|
using std::strtoul;
|
using std::system;
|
|
using std::wcstombs;
|
using std::wctomb;
|
# 20 "/usr/xenomai/include/cobalt/stdlib.h" 2 3
|
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdlib.h" 1 3
|
# 26 "/usr/xenomai/include/cobalt/stdlib.h" 2 3
|
|
|
|
extern "C" {
|
|
|
__typeof__(void) __cobalt_free(void *ptr); __typeof__(void) __real_free(void *ptr); __typeof__(void) __wrap_free(void *ptr);
|
|
__typeof__(void *) __cobalt_malloc(size_t size); __typeof__(void *) __real_malloc(size_t size); __typeof__(void *) __wrap_malloc(size_t size);
|
|
|
}
|
# 50 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp" 2
|
# 1 "./libraries/Scope/Scope.h" 1
|
|
# 1 "/usr/include/ne10/NE10_types.h" 1 3 4
|
# 39 "/usr/include/ne10/NE10_types.h" 3 4
|
# 1 "/usr/include/assert.h" 1 3 4
|
# 40 "/usr/include/ne10/NE10_types.h" 2 3 4
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdint.h" 1 3 4
|
# 41 "/usr/include/ne10/NE10_types.h" 2 3 4
|
# 68 "/usr/include/ne10/NE10_types.h" 3 4
|
typedef int8_t ne10_int8_t;
|
typedef uint8_t ne10_uint8_t;
|
typedef int16_t ne10_int16_t;
|
typedef uint16_t ne10_uint16_t;
|
typedef int32_t ne10_int32_t;
|
typedef uint32_t ne10_uint32_t;
|
typedef int64_t ne10_int64_t;
|
typedef uint64_t ne10_uint64_t;
|
typedef float ne10_float32_t;
|
typedef double ne10_float64_t;
|
typedef int ne10_result_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_float32_t x;
|
ne10_float32_t y;
|
} ne10_vec2f_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_float32_t x;
|
ne10_float32_t y;
|
ne10_float32_t z;
|
} ne10_vec3f_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_float32_t x;
|
ne10_float32_t y;
|
ne10_float32_t z;
|
ne10_float32_t w;
|
} ne10_vec4f_t;
|
|
|
|
|
|
typedef struct
|
{
|
ne10_float32_t r1;
|
ne10_float32_t r2;
|
} __attribute__ ( (packed)) ne10_mat_row2f;
|
|
typedef struct
|
{
|
ne10_mat_row2f c1;
|
ne10_mat_row2f c2;
|
|
} __attribute__ ( (packed)) ne10_mat2x2f_t;
|
|
static inline void createColumnMajorMatrix2x2 (ne10_mat2x2f_t * outMat, ne10_float32_t m11, ne10_float32_t m21, ne10_float32_t m12, ne10_float32_t m22)
|
{
|
(static_cast<void> (0));
|
|
outMat->c1.r1 = m11;
|
outMat->c1.r2 = m21;
|
outMat->c2.r1 = m12;
|
outMat->c2.r2 = m22;
|
}
|
|
|
typedef struct
|
{
|
ne10_float32_t r1;
|
ne10_float32_t r2;
|
ne10_float32_t r3;
|
} __attribute__ ( (packed)) ne10_mat_row3f;
|
|
typedef struct
|
{
|
ne10_mat_row3f c1;
|
ne10_mat_row3f c2;
|
ne10_mat_row3f c3;
|
|
} __attribute__ ( (packed)) ne10_mat3x3f_t;
|
|
static inline void createColumnMajorMatrix3x3 (ne10_mat3x3f_t * outMat, ne10_float32_t m11, ne10_float32_t m21, ne10_float32_t m31,
|
ne10_float32_t m12, ne10_float32_t m22, ne10_float32_t m32,
|
ne10_float32_t m13, ne10_float32_t m23, ne10_float32_t m33)
|
{
|
(static_cast<void> (0));
|
|
outMat->c1.r1 = m11;
|
outMat->c1.r2 = m21;
|
outMat->c1.r3 = m31;
|
|
outMat->c2.r1 = m12;
|
outMat->c2.r2 = m22;
|
outMat->c2.r3 = m32;
|
|
outMat->c3.r1 = m13;
|
outMat->c3.r2 = m23;
|
outMat->c3.r3 = m33;
|
}
|
|
|
typedef struct
|
{
|
ne10_float32_t r1;
|
ne10_float32_t r2;
|
ne10_float32_t r3;
|
ne10_float32_t r4;
|
} __attribute__ ( (packed)) ne10_mat_row4f;
|
|
typedef struct
|
{
|
ne10_mat_row4f c1;
|
ne10_mat_row4f c2;
|
ne10_mat_row4f c3;
|
ne10_mat_row4f c4;
|
|
} __attribute__ ( (packed)) ne10_mat4x4f_t;
|
|
static inline void createColumnMajorMatrix4x4 (ne10_mat4x4f_t * outMat, ne10_float32_t m11, ne10_float32_t m21, ne10_float32_t m31, ne10_float32_t m41,
|
ne10_float32_t m12, ne10_float32_t m22, ne10_float32_t m32, ne10_float32_t m42,
|
ne10_float32_t m13, ne10_float32_t m23, ne10_float32_t m33, ne10_float32_t m43,
|
ne10_float32_t m14, ne10_float32_t m24, ne10_float32_t m34, ne10_float32_t m44)
|
{
|
(static_cast<void> (0));
|
|
outMat->c1.r1 = m11;
|
outMat->c1.r2 = m21;
|
outMat->c1.r3 = m31;
|
outMat->c1.r4 = m41;
|
|
outMat->c2.r1 = m12;
|
outMat->c2.r2 = m22;
|
outMat->c2.r3 = m32;
|
outMat->c2.r4 = m42;
|
|
outMat->c3.r1 = m13;
|
outMat->c3.r2 = m23;
|
outMat->c3.r3 = m33;
|
outMat->c3.r4 = m43;
|
|
outMat->c4.r1 = m14;
|
outMat->c4.r2 = m24;
|
outMat->c4.r3 = m34;
|
outMat->c4.r4 = m44;
|
}
|
# 226 "/usr/include/ne10/NE10_types.h" 3 4
|
typedef struct
|
{
|
ne10_float32_t r;
|
ne10_float32_t i;
|
} ne10_fft_cpx_float32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_int32_t nfft;
|
ne10_int32_t *factors;
|
ne10_fft_cpx_float32_t *twiddles;
|
ne10_fft_cpx_float32_t *buffer;
|
ne10_fft_cpx_float32_t *last_twiddles;
|
|
|
|
|
|
|
|
ne10_int32_t is_forward_scaled;
|
|
|
|
|
|
|
|
ne10_int32_t is_backward_scaled;
|
} ne10_fft_state_float32_t;
|
|
|
|
|
typedef ne10_fft_state_float32_t* ne10_fft_cfg_float32_t;
|
|
typedef struct
|
{
|
ne10_fft_cpx_float32_t *buffer;
|
|
ne10_int32_t ncfft;
|
ne10_int32_t *factors;
|
ne10_fft_cpx_float32_t *twiddles;
|
ne10_fft_cpx_float32_t *super_twiddles;
|
# 283 "/usr/include/ne10/NE10_types.h" 3 4
|
} ne10_fft_r2c_state_float32_t;
|
|
typedef ne10_fft_r2c_state_float32_t* ne10_fft_r2c_cfg_float32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_int16_t r;
|
ne10_int16_t i;
|
} ne10_fft_cpx_int16_t;
|
|
typedef struct
|
{
|
ne10_int32_t nfft;
|
ne10_int32_t *factors;
|
ne10_fft_cpx_int16_t *twiddles;
|
ne10_fft_cpx_int16_t *buffer;
|
} ne10_fft_state_int16_t;
|
|
typedef ne10_fft_state_int16_t* ne10_fft_cfg_int16_t;
|
|
typedef struct
|
{
|
ne10_int32_t nfft;
|
ne10_int32_t ncfft;
|
ne10_int32_t *factors;
|
ne10_fft_cpx_int16_t *twiddles;
|
ne10_fft_cpx_int16_t *super_twiddles;
|
ne10_fft_cpx_int16_t *buffer;
|
} ne10_fft_r2c_state_int16_t;
|
|
typedef ne10_fft_r2c_state_int16_t* ne10_fft_r2c_cfg_int16_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_int32_t r;
|
ne10_int32_t i;
|
} ne10_fft_cpx_int32_t;
|
|
typedef struct
|
{
|
ne10_int32_t nfft;
|
ne10_int32_t *factors;
|
ne10_fft_cpx_int32_t *twiddles;
|
ne10_fft_cpx_int32_t *buffer;
|
ne10_fft_cpx_int32_t *last_twiddles;
|
} ne10_fft_state_int32_t;
|
|
typedef ne10_fft_state_int32_t* ne10_fft_cfg_int32_t;
|
|
typedef struct
|
{
|
ne10_int32_t nfft;
|
ne10_int32_t ncfft;
|
ne10_int32_t *factors;
|
ne10_fft_cpx_int32_t *twiddles;
|
ne10_fft_cpx_int32_t *super_twiddles;
|
ne10_fft_cpx_int32_t *buffer;
|
} ne10_fft_r2c_state_int32_t;
|
|
typedef ne10_fft_r2c_state_int32_t* ne10_fft_r2c_cfg_int32_t;
|
# 357 "/usr/include/ne10/NE10_types.h" 3 4
|
typedef struct
|
{
|
ne10_uint16_t numTaps;
|
ne10_float32_t *pState;
|
ne10_float32_t *pCoeffs;
|
} ne10_fir_instance_f32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_uint16_t numStages;
|
ne10_float32_t *pState;
|
ne10_float32_t *pCoeffs;
|
} ne10_fir_lattice_instance_f32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_uint8_t M;
|
ne10_uint16_t numTaps;
|
ne10_float32_t *pCoeffs;
|
ne10_float32_t *pState;
|
} ne10_fir_decimate_instance_f32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_uint8_t L;
|
ne10_uint16_t phaseLength;
|
ne10_float32_t *pCoeffs;
|
ne10_float32_t *pState;
|
} ne10_fir_interpolate_instance_f32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_uint16_t numTaps;
|
ne10_uint16_t stateIndex;
|
ne10_float32_t *pState;
|
ne10_float32_t *pCoeffs;
|
ne10_uint16_t maxDelay;
|
ne10_int32_t *pTapDelay;
|
} ne10_fir_sparse_instance_f32_t;
|
|
|
|
|
typedef struct
|
{
|
ne10_uint16_t numStages;
|
ne10_float32_t *pState;
|
ne10_float32_t *pkCoeffs;
|
ne10_float32_t *pvCoeffs;
|
} ne10_iir_lattice_instance_f32_t;
|
# 427 "/usr/include/ne10/NE10_types.h" 3 4
|
typedef struct
|
{
|
ne10_uint32_t x;
|
ne10_uint32_t y;
|
} ne10_point_t;
|
|
typedef struct
|
{
|
ne10_uint32_t x;
|
ne10_uint32_t y;
|
} ne10_size_t;
|
|
typedef enum
|
{
|
UBUNTU_COMMAND_LINE,
|
ANDROID_DEMO,
|
IOS_DEMO
|
} ne10_print_target_t;
|
# 3 "./libraries/Scope/Scope.h" 2
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 1 3
|
# 60 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functexcept.h" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functexcept.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/exception_defines.h" 1 3
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__))
|
__attribute__((__format__(__gnu_printf__, 1, 2)));
|
|
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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/cpp_type_traits.h" 1 3
|
# 36 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/cpp_type_traits.h" 3
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/cpp_type_traits.h" 3
|
extern "C++" {
|
|
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;
|
};
|
|
|
|
template<>
|
struct __is_integer<char16_t>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<char32_t>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
|
template<>
|
struct __is_integer<short>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<unsigned short>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<int>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<unsigned int>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<long>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<unsigned long>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<long long>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<>
|
struct __is_integer<unsigned long long>
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
# 278 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/cpp_type_traits.h" 3
|
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_arithmetic
|
: public __traitor<__is_integer<_Tp>, __is_floating<_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;
|
};
|
|
|
|
template<typename _Iterator>
|
inline _Iterator
|
__miter_base(_Iterator __it)
|
{ return __it; }
|
|
|
}
|
}
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/type_traits.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/type_traits.h" 3
|
|
|
|
|
extern "C++" {
|
|
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; }
|
|
|
inline bool
|
__is_null_pointer(std::nullptr_t)
|
{ return true; }
|
|
|
|
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;
|
};
|
|
|
}
|
}
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/numeric_traits.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/numeric_traits.h" 3
|
|
|
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
{
|
# 54 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 : 53) * 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 : 15);
|
static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308);
|
};
|
|
template<typename _Value>
|
const int __numeric_traits_floating<_Value>::__max_digits10;
|
|
template<typename _Value>
|
const bool __numeric_traits_floating<_Value>::__is_signed;
|
|
template<typename _Value>
|
const int __numeric_traits_floating<_Value>::__digits10;
|
|
template<typename _Value>
|
const int __numeric_traits_floating<_Value>::__max_exponent10;
|
|
template<typename _Value>
|
struct __numeric_traits
|
: public __conditional_type<std::__is_integer<_Value>::__value,
|
__numeric_traits_integer<_Value>,
|
__numeric_traits_floating<_Value> >::__type
|
{ };
|
|
|
}
|
# 64 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/concept_check.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/concept_check.h" 3
|
# 35 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
|
template<typename _Tp>
|
inline _Tp*
|
__addressof(_Tp& __r) noexcept
|
{
|
return reinterpret_cast<_Tp*>
|
(&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
|
}
|
|
|
}
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
namespace std
|
{
|
typedef unsigned short uint_least16_t;
|
typedef unsigned int uint_least32_t;
|
}
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 68 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp, _Tp __v>
|
struct integral_constant
|
{
|
static constexpr _Tp value = __v;
|
typedef _Tp value_type;
|
typedef integral_constant<_Tp, __v> type;
|
constexpr operator value_type() const { return value; }
|
|
|
|
|
|
|
};
|
|
template<typename _Tp, _Tp __v>
|
constexpr _Tp integral_constant<_Tp, __v>::value;
|
|
|
typedef integral_constant<bool, true> true_type;
|
|
|
typedef integral_constant<bool, false> false_type;
|
|
template<bool __v>
|
using __bool_constant = integral_constant<bool, __v>;
|
# 103 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<bool, typename, typename>
|
struct conditional;
|
|
template<typename...>
|
struct __or_;
|
|
template<>
|
struct __or_<>
|
: public false_type
|
{ };
|
|
template<typename _B1>
|
struct __or_<_B1>
|
: public _B1
|
{ };
|
|
template<typename _B1, typename _B2>
|
struct __or_<_B1, _B2>
|
: public conditional<_B1::value, _B1, _B2>::type
|
{ };
|
|
template<typename _B1, typename _B2, typename _B3, typename... _Bn>
|
struct __or_<_B1, _B2, _B3, _Bn...>
|
: public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type
|
{ };
|
|
template<typename...>
|
struct __and_;
|
|
template<>
|
struct __and_<>
|
: public true_type
|
{ };
|
|
template<typename _B1>
|
struct __and_<_B1>
|
: public _B1
|
{ };
|
|
template<typename _B1, typename _B2>
|
struct __and_<_B1, _B2>
|
: public conditional<_B1::value, _B2, _B1>::type
|
{ };
|
|
template<typename _B1, typename _B2, typename _B3, typename... _Bn>
|
struct __and_<_B1, _B2, _B3, _Bn...>
|
: public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type
|
{ };
|
|
template<typename _Pp>
|
struct __not_
|
: public integral_constant<bool, !_Pp::value>
|
{ };
|
|
struct __nonesuch {
|
__nonesuch() = delete;
|
~__nonesuch() = delete;
|
__nonesuch(__nonesuch const&) = delete;
|
void operator=(__nonesuch const&) = delete;
|
};
|
# 189 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp>
|
struct __success_type
|
{ typedef _Tp type; };
|
|
struct __failure_type
|
{ };
|
|
|
|
template<typename>
|
struct remove_cv;
|
|
template<typename>
|
struct __is_void_helper
|
: public false_type { };
|
|
template<>
|
struct __is_void_helper<void>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_void
|
: public __is_void_helper<typename remove_cv<_Tp>::type>::type
|
{ };
|
|
template<typename>
|
struct __is_integral_helper
|
: public false_type { };
|
|
template<>
|
struct __is_integral_helper<bool>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<char>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<signed char>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<unsigned char>
|
: public true_type { };
|
|
|
template<>
|
struct __is_integral_helper<wchar_t>
|
: public true_type { };
|
|
|
template<>
|
struct __is_integral_helper<char16_t>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<char32_t>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<short>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<unsigned short>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<int>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<unsigned int>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<long>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<unsigned long>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<long long>
|
: public true_type { };
|
|
template<>
|
struct __is_integral_helper<unsigned long long>
|
: public true_type { };
|
# 321 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp>
|
struct is_integral
|
: public __is_integral_helper<typename remove_cv<_Tp>::type>::type
|
{ };
|
|
template<typename>
|
struct __is_floating_point_helper
|
: public false_type { };
|
|
template<>
|
struct __is_floating_point_helper<float>
|
: public true_type { };
|
|
template<>
|
struct __is_floating_point_helper<double>
|
: public true_type { };
|
|
template<>
|
struct __is_floating_point_helper<long double>
|
: public true_type { };
|
# 349 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp>
|
struct is_floating_point
|
: public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
|
{ };
|
|
|
template<typename>
|
struct is_array
|
: public false_type { };
|
|
template<typename _Tp, std::size_t _Size>
|
struct is_array<_Tp[_Size]>
|
: public true_type { };
|
|
template<typename _Tp>
|
struct is_array<_Tp[]>
|
: public true_type { };
|
|
template<typename>
|
struct __is_pointer_helper
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_pointer_helper<_Tp*>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_pointer
|
: public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
|
{ };
|
|
|
template<typename>
|
struct is_lvalue_reference
|
: public false_type { };
|
|
template<typename _Tp>
|
struct is_lvalue_reference<_Tp&>
|
: public true_type { };
|
|
|
template<typename>
|
struct is_rvalue_reference
|
: public false_type { };
|
|
template<typename _Tp>
|
struct is_rvalue_reference<_Tp&&>
|
: public true_type { };
|
|
template<typename>
|
struct is_function;
|
|
template<typename>
|
struct __is_member_object_pointer_helper
|
: public false_type { };
|
|
template<typename _Tp, typename _Cp>
|
struct __is_member_object_pointer_helper<_Tp _Cp::*>
|
: public integral_constant<bool, !is_function<_Tp>::value> { };
|
|
|
template<typename _Tp>
|
struct is_member_object_pointer
|
: public __is_member_object_pointer_helper<
|
typename remove_cv<_Tp>::type>::type
|
{ };
|
|
template<typename>
|
struct __is_member_function_pointer_helper
|
: public false_type { };
|
|
template<typename _Tp, typename _Cp>
|
struct __is_member_function_pointer_helper<_Tp _Cp::*>
|
: public integral_constant<bool, is_function<_Tp>::value> { };
|
|
|
template<typename _Tp>
|
struct is_member_function_pointer
|
: public __is_member_function_pointer_helper<
|
typename remove_cv<_Tp>::type>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_enum
|
: public integral_constant<bool, __is_enum(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_union
|
: public integral_constant<bool, __is_union(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_class
|
: public integral_constant<bool, __is_class(_Tp)>
|
{ };
|
|
|
template<typename>
|
struct is_function
|
: public false_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...)>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......)>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) const>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) const &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) const &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) const>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) const &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) const &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) volatile>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) volatile &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) volatile &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) volatile>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) volatile &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) volatile &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) const volatile>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) const volatile &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes...) const volatile &&>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) const volatile>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) const volatile &>
|
: public true_type { };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct is_function<_Res(_ArgTypes......) const volatile &&>
|
: public true_type { };
|
|
|
|
template<typename>
|
struct __is_null_pointer_helper
|
: public false_type { };
|
|
template<>
|
struct __is_null_pointer_helper<std::nullptr_t>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_null_pointer
|
: public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct __is_nullptr_t
|
: public is_null_pointer<_Tp>
|
{ };
|
|
|
|
|
template<typename _Tp>
|
struct is_reference
|
: public __or_<is_lvalue_reference<_Tp>,
|
is_rvalue_reference<_Tp>>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_arithmetic
|
: public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_fundamental
|
: public __or_<is_arithmetic<_Tp>, is_void<_Tp>,
|
is_null_pointer<_Tp>>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_object
|
: public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
|
is_void<_Tp>>>::type
|
{ };
|
|
template<typename>
|
struct is_member_pointer;
|
|
|
template<typename _Tp>
|
struct is_scalar
|
: public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
|
is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_compound
|
: public integral_constant<bool, !is_fundamental<_Tp>::value> { };
|
|
template<typename _Tp>
|
struct __is_member_pointer_helper
|
: public false_type { };
|
|
template<typename _Tp, typename _Cp>
|
struct __is_member_pointer_helper<_Tp _Cp::*>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_member_pointer
|
: public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type
|
{ };
|
|
|
|
template<typename _Tp>
|
struct __is_referenceable
|
: public __or_<is_object<_Tp>, is_reference<_Tp>>::type
|
{ };
|
|
template<typename _Res, typename... _Args>
|
struct __is_referenceable<_Res(_Args...)>
|
: public true_type
|
{ };
|
|
template<typename _Res, typename... _Args>
|
struct __is_referenceable<_Res(_Args......)>
|
: public true_type
|
{ };
|
|
|
|
|
template<typename>
|
struct is_const
|
: public false_type { };
|
|
template<typename _Tp>
|
struct is_const<_Tp const>
|
: public true_type { };
|
|
|
template<typename>
|
struct is_volatile
|
: public false_type { };
|
|
template<typename _Tp>
|
struct is_volatile<_Tp volatile>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_trivial
|
: public integral_constant<bool, __is_trivial(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_copyable
|
: public integral_constant<bool, __is_trivially_copyable(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_standard_layout
|
: public integral_constant<bool, __is_standard_layout(_Tp)>
|
{ };
|
|
|
|
template<typename _Tp>
|
struct is_pod
|
: public integral_constant<bool, __is_pod(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_literal_type
|
: public integral_constant<bool, __is_literal_type(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_empty
|
: public integral_constant<bool, __is_empty(_Tp)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_polymorphic
|
: public integral_constant<bool, __is_polymorphic(_Tp)>
|
{ };
|
# 721 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp>
|
struct is_abstract
|
: public integral_constant<bool, __is_abstract(_Tp)>
|
{ };
|
|
template<typename _Tp,
|
bool = is_arithmetic<_Tp>::value>
|
struct __is_signed_helper
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_signed_helper<_Tp, true>
|
: public integral_constant<bool, _Tp(-1) < _Tp(0)>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_signed
|
: public __is_signed_helper<_Tp>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_unsigned
|
: public __and_<is_arithmetic<_Tp>, __not_<is_signed<_Tp>>>
|
{ };
|
|
|
|
|
template<typename>
|
struct add_rvalue_reference;
|
|
|
|
|
|
template<typename _Tp>
|
typename add_rvalue_reference<_Tp>::type declval() noexcept;
|
|
template<typename, unsigned = 0>
|
struct extent;
|
|
template<typename>
|
struct remove_all_extents;
|
|
template<typename _Tp>
|
struct __is_array_known_bounds
|
: public integral_constant<bool, (extent<_Tp>::value > 0)>
|
{ };
|
|
template<typename _Tp>
|
struct __is_array_unknown_bounds
|
: public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
|
{ };
|
|
|
|
|
|
|
struct __do_is_destructible_impl
|
{
|
template<typename _Tp, typename = decltype(declval<_Tp&>().~_Tp())>
|
static true_type __test(int);
|
|
template<typename>
|
static false_type __test(...);
|
};
|
|
template<typename _Tp>
|
struct __is_destructible_impl
|
: public __do_is_destructible_impl
|
{
|
typedef decltype(__test<_Tp>(0)) type;
|
};
|
|
template<typename _Tp,
|
bool = __or_<is_void<_Tp>,
|
__is_array_unknown_bounds<_Tp>,
|
is_function<_Tp>>::value,
|
bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value>
|
struct __is_destructible_safe;
|
|
template<typename _Tp>
|
struct __is_destructible_safe<_Tp, false, false>
|
: public __is_destructible_impl<typename
|
remove_all_extents<_Tp>::type>::type
|
{ };
|
|
template<typename _Tp>
|
struct __is_destructible_safe<_Tp, true, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_destructible_safe<_Tp, false, true>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_destructible
|
: public __is_destructible_safe<_Tp>::type
|
{ };
|
|
|
|
|
|
struct __do_is_nt_destructible_impl
|
{
|
template<typename _Tp>
|
static integral_constant<bool, noexcept(declval<_Tp&>().~_Tp())>
|
__test(int);
|
|
template<typename>
|
static false_type __test(...);
|
};
|
|
template<typename _Tp>
|
struct __is_nt_destructible_impl
|
: public __do_is_nt_destructible_impl
|
{
|
typedef decltype(__test<_Tp>(0)) type;
|
};
|
|
template<typename _Tp,
|
bool = __or_<is_void<_Tp>,
|
__is_array_unknown_bounds<_Tp>,
|
is_function<_Tp>>::value,
|
bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value>
|
struct __is_nt_destructible_safe;
|
|
template<typename _Tp>
|
struct __is_nt_destructible_safe<_Tp, false, false>
|
: public __is_nt_destructible_impl<typename
|
remove_all_extents<_Tp>::type>::type
|
{ };
|
|
template<typename _Tp>
|
struct __is_nt_destructible_safe<_Tp, true, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_nt_destructible_safe<_Tp, false, true>
|
: public true_type { };
|
|
|
template<typename _Tp>
|
struct is_nothrow_destructible
|
: public __is_nt_destructible_safe<_Tp>::type
|
{ };
|
|
struct __do_is_default_constructible_impl
|
{
|
template<typename _Tp, typename = decltype(_Tp())>
|
static true_type __test(int);
|
|
template<typename>
|
static false_type __test(...);
|
};
|
|
template<typename _Tp>
|
struct __is_default_constructible_impl
|
: public __do_is_default_constructible_impl
|
{
|
typedef decltype(__test<_Tp>(0)) type;
|
};
|
|
template<typename _Tp>
|
struct __is_default_constructible_atom
|
: public __and_<__not_<is_void<_Tp>>,
|
__is_default_constructible_impl<_Tp>>
|
{ };
|
|
template<typename _Tp, bool = is_array<_Tp>::value>
|
struct __is_default_constructible_safe;
|
|
|
|
|
|
|
template<typename _Tp>
|
struct __is_default_constructible_safe<_Tp, true>
|
: public __and_<__is_array_known_bounds<_Tp>,
|
__is_default_constructible_atom<typename
|
remove_all_extents<_Tp>::type>>
|
{ };
|
|
template<typename _Tp>
|
struct __is_default_constructible_safe<_Tp, false>
|
: public __is_default_constructible_atom<_Tp>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct is_default_constructible
|
: public __is_default_constructible_safe<_Tp>::type
|
{ };
|
# 933 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
struct __do_is_static_castable_impl
|
{
|
template<typename _From, typename _To, typename
|
= decltype(static_cast<_To>(declval<_From>()))>
|
static true_type __test(int);
|
|
template<typename, typename>
|
static false_type __test(...);
|
};
|
|
template<typename _From, typename _To>
|
struct __is_static_castable_impl
|
: public __do_is_static_castable_impl
|
{
|
typedef decltype(__test<_From, _To>(0)) type;
|
};
|
|
template<typename _From, typename _To>
|
struct __is_static_castable_safe
|
: public __is_static_castable_impl<_From, _To>::type
|
{ };
|
|
|
template<typename _From, typename _To>
|
struct __is_static_castable
|
: public integral_constant<bool, (__is_static_castable_safe<
|
_From, _To>::value)>
|
{ };
|
|
|
|
|
|
|
struct __do_is_direct_constructible_impl
|
{
|
template<typename _Tp, typename _Arg, typename
|
= decltype(::new _Tp(declval<_Arg>()))>
|
static true_type __test(int);
|
|
template<typename, typename>
|
static false_type __test(...);
|
};
|
|
template<typename _Tp, typename _Arg>
|
struct __is_direct_constructible_impl
|
: public __do_is_direct_constructible_impl
|
{
|
typedef decltype(__test<_Tp, _Arg>(0)) type;
|
};
|
|
template<typename _Tp, typename _Arg>
|
struct __is_direct_constructible_new_safe
|
: public __and_<is_destructible<_Tp>,
|
__is_direct_constructible_impl<_Tp, _Arg>>
|
{ };
|
|
template<typename, typename>
|
struct is_same;
|
|
template<typename, typename>
|
struct is_base_of;
|
|
template<typename>
|
struct remove_reference;
|
|
template<typename _From, typename _To, bool
|
= __not_<__or_<is_void<_From>,
|
is_function<_From>>>::value>
|
struct __is_base_to_derived_ref;
|
|
template<typename _Tp, typename... _Args>
|
struct is_constructible;
|
|
|
|
template<typename _From, typename _To>
|
struct __is_base_to_derived_ref<_From, _To, true>
|
{
|
typedef typename remove_cv<typename remove_reference<_From
|
>::type>::type __src_t;
|
typedef typename remove_cv<typename remove_reference<_To
|
>::type>::type __dst_t;
|
typedef __and_<__not_<is_same<__src_t, __dst_t>>,
|
is_base_of<__src_t, __dst_t>,
|
__not_<is_constructible<__dst_t, _From>>> type;
|
static constexpr bool value = type::value;
|
};
|
|
template<typename _From, typename _To>
|
struct __is_base_to_derived_ref<_From, _To, false>
|
: public false_type
|
{ };
|
|
template<typename _From, typename _To, bool
|
= __and_<is_lvalue_reference<_From>,
|
is_rvalue_reference<_To>>::value>
|
struct __is_lvalue_to_rvalue_ref;
|
|
|
|
template<typename _From, typename _To>
|
struct __is_lvalue_to_rvalue_ref<_From, _To, true>
|
{
|
typedef typename remove_cv<typename remove_reference<
|
_From>::type>::type __src_t;
|
typedef typename remove_cv<typename remove_reference<
|
_To>::type>::type __dst_t;
|
typedef __and_<__not_<is_function<__src_t>>,
|
__or_<is_same<__src_t, __dst_t>,
|
is_base_of<__dst_t, __src_t>>> type;
|
static constexpr bool value = type::value;
|
};
|
|
template<typename _From, typename _To>
|
struct __is_lvalue_to_rvalue_ref<_From, _To, false>
|
: public false_type
|
{ };
|
|
|
|
|
|
|
|
template<typename _Tp, typename _Arg>
|
struct __is_direct_constructible_ref_cast
|
: public __and_<__is_static_castable<_Arg, _Tp>,
|
__not_<__or_<__is_base_to_derived_ref<_Arg, _Tp>,
|
__is_lvalue_to_rvalue_ref<_Arg, _Tp>
|
>>>
|
{ };
|
|
template<typename _Tp, typename _Arg>
|
struct __is_direct_constructible_new
|
: public conditional<is_reference<_Tp>::value,
|
__is_direct_constructible_ref_cast<_Tp, _Arg>,
|
__is_direct_constructible_new_safe<_Tp, _Arg>
|
>::type
|
{ };
|
|
template<typename _Tp, typename _Arg>
|
struct __is_direct_constructible
|
: public __is_direct_constructible_new<_Tp, _Arg>::type
|
{ };
|
|
|
|
|
|
|
struct __do_is_nary_constructible_impl
|
{
|
template<typename _Tp, typename... _Args, typename
|
= decltype(_Tp(declval<_Args>()...))>
|
static true_type __test(int);
|
|
template<typename, typename...>
|
static false_type __test(...);
|
};
|
|
template<typename _Tp, typename... _Args>
|
struct __is_nary_constructible_impl
|
: public __do_is_nary_constructible_impl
|
{
|
typedef decltype(__test<_Tp, _Args...>(0)) type;
|
};
|
|
template<typename _Tp, typename... _Args>
|
struct __is_nary_constructible
|
: public __is_nary_constructible_impl<_Tp, _Args...>::type
|
{
|
static_assert(sizeof...(_Args) > 1,
|
"Only useful for > 1 arguments");
|
};
|
|
template<typename _Tp, typename... _Args>
|
struct __is_constructible_impl
|
: public __is_nary_constructible<_Tp, _Args...>
|
{ };
|
|
template<typename _Tp, typename _Arg>
|
struct __is_constructible_impl<_Tp, _Arg>
|
: public __is_direct_constructible<_Tp, _Arg>
|
{ };
|
|
template<typename _Tp>
|
struct __is_constructible_impl<_Tp>
|
: public is_default_constructible<_Tp>
|
{ };
|
|
|
template<typename _Tp, typename... _Args>
|
struct is_constructible
|
: public __is_constructible_impl<_Tp, _Args...>::type
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_copy_constructible_impl;
|
|
template<typename _Tp>
|
struct __is_copy_constructible_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_copy_constructible_impl<_Tp, true>
|
: public is_constructible<_Tp, const _Tp&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_copy_constructible
|
: public __is_copy_constructible_impl<_Tp>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_move_constructible_impl;
|
|
template<typename _Tp>
|
struct __is_move_constructible_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_move_constructible_impl<_Tp, true>
|
: public is_constructible<_Tp, _Tp&&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_move_constructible
|
: public __is_move_constructible_impl<_Tp>
|
{ };
|
|
template<typename _Tp>
|
struct __is_nt_default_constructible_atom
|
: public integral_constant<bool, noexcept(_Tp())>
|
{ };
|
|
template<typename _Tp, bool = is_array<_Tp>::value>
|
struct __is_nt_default_constructible_impl;
|
|
template<typename _Tp>
|
struct __is_nt_default_constructible_impl<_Tp, true>
|
: public __and_<__is_array_known_bounds<_Tp>,
|
__is_nt_default_constructible_atom<typename
|
remove_all_extents<_Tp>::type>>
|
{ };
|
|
template<typename _Tp>
|
struct __is_nt_default_constructible_impl<_Tp, false>
|
: public __is_nt_default_constructible_atom<_Tp>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_nothrow_default_constructible
|
: public __and_<is_default_constructible<_Tp>,
|
__is_nt_default_constructible_impl<_Tp>>
|
{ };
|
|
template<typename _Tp, typename... _Args>
|
struct __is_nt_constructible_impl
|
: public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))>
|
{ };
|
|
template<typename _Tp, typename _Arg>
|
struct __is_nt_constructible_impl<_Tp, _Arg>
|
: public integral_constant<bool,
|
noexcept(static_cast<_Tp>(declval<_Arg>()))>
|
{ };
|
|
template<typename _Tp>
|
struct __is_nt_constructible_impl<_Tp>
|
: public is_nothrow_default_constructible<_Tp>
|
{ };
|
|
|
template<typename _Tp, typename... _Args>
|
struct is_nothrow_constructible
|
: public __and_<is_constructible<_Tp, _Args...>,
|
__is_nt_constructible_impl<_Tp, _Args...>>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_nothrow_copy_constructible_impl;
|
|
template<typename _Tp>
|
struct __is_nothrow_copy_constructible_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_nothrow_copy_constructible_impl<_Tp, true>
|
: public is_nothrow_constructible<_Tp, const _Tp&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_nothrow_copy_constructible
|
: public __is_nothrow_copy_constructible_impl<_Tp>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_nothrow_move_constructible_impl;
|
|
template<typename _Tp>
|
struct __is_nothrow_move_constructible_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_nothrow_move_constructible_impl<_Tp, true>
|
: public is_nothrow_constructible<_Tp, _Tp&&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_nothrow_move_constructible
|
: public __is_nothrow_move_constructible_impl<_Tp>
|
{ };
|
|
template<typename _Tp, typename _Up>
|
class __is_assignable_helper
|
{
|
template<typename _Tp1, typename _Up1,
|
typename = decltype(declval<_Tp1>() = declval<_Up1>())>
|
static true_type
|
__test(int);
|
|
template<typename, typename>
|
static false_type
|
__test(...);
|
|
public:
|
typedef decltype(__test<_Tp, _Up>(0)) type;
|
};
|
|
|
template<typename _Tp, typename _Up>
|
struct is_assignable
|
: public __is_assignable_helper<_Tp, _Up>::type
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_copy_assignable_impl;
|
|
template<typename _Tp>
|
struct __is_copy_assignable_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_copy_assignable_impl<_Tp, true>
|
: public is_assignable<_Tp&, const _Tp&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_copy_assignable
|
: public __is_copy_assignable_impl<_Tp>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_move_assignable_impl;
|
|
template<typename _Tp>
|
struct __is_move_assignable_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_move_assignable_impl<_Tp, true>
|
: public is_assignable<_Tp&, _Tp&&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_move_assignable
|
: public __is_move_assignable_impl<_Tp>
|
{ };
|
|
template<typename _Tp, typename _Up>
|
struct __is_nt_assignable_impl
|
: public integral_constant<bool, noexcept(declval<_Tp>() = declval<_Up>())>
|
{ };
|
|
|
template<typename _Tp, typename _Up>
|
struct is_nothrow_assignable
|
: public __and_<is_assignable<_Tp, _Up>,
|
__is_nt_assignable_impl<_Tp, _Up>>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_nt_copy_assignable_impl;
|
|
template<typename _Tp>
|
struct __is_nt_copy_assignable_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_nt_copy_assignable_impl<_Tp, true>
|
: public is_nothrow_assignable<_Tp&, const _Tp&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_nothrow_copy_assignable
|
: public __is_nt_copy_assignable_impl<_Tp>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __is_nt_move_assignable_impl;
|
|
template<typename _Tp>
|
struct __is_nt_move_assignable_impl<_Tp, false>
|
: public false_type { };
|
|
template<typename _Tp>
|
struct __is_nt_move_assignable_impl<_Tp, true>
|
: public is_nothrow_assignable<_Tp&, _Tp&&>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_nothrow_move_assignable
|
: public __is_nt_move_assignable_impl<_Tp>
|
{ };
|
|
|
template<typename _Tp, typename... _Args>
|
struct is_trivially_constructible
|
: public __and_<is_constructible<_Tp, _Args...>, integral_constant<bool,
|
__is_trivially_constructible(_Tp, _Args...)>>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_default_constructible
|
: public is_trivially_constructible<_Tp>::type
|
{ };
|
|
struct __do_is_implicitly_default_constructible_impl
|
{
|
template <typename _Tp>
|
static void __helper(const _Tp&);
|
|
template <typename _Tp>
|
static true_type __test(const _Tp&,
|
decltype(__helper<const _Tp&>({}))* = 0);
|
|
static false_type __test(...);
|
};
|
|
template<typename _Tp>
|
struct __is_implicitly_default_constructible_impl
|
: public __do_is_implicitly_default_constructible_impl
|
{
|
typedef decltype(__test(declval<_Tp>())) type;
|
};
|
|
template<typename _Tp>
|
struct __is_implicitly_default_constructible_safe
|
: public __is_implicitly_default_constructible_impl<_Tp>::type
|
{ };
|
|
template <typename _Tp>
|
struct __is_implicitly_default_constructible
|
: public __and_<is_default_constructible<_Tp>,
|
__is_implicitly_default_constructible_safe<_Tp>>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_copy_constructible
|
: public __and_<is_copy_constructible<_Tp>,
|
integral_constant<bool,
|
__is_trivially_constructible(_Tp, const _Tp&)>>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_move_constructible
|
: public __and_<is_move_constructible<_Tp>,
|
integral_constant<bool,
|
__is_trivially_constructible(_Tp, _Tp&&)>>
|
{ };
|
|
|
template<typename _Tp, typename _Up>
|
struct is_trivially_assignable
|
: public __and_<is_assignable<_Tp, _Up>,
|
integral_constant<bool,
|
__is_trivially_assignable(_Tp, _Up)>>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_copy_assignable
|
: public __and_<is_copy_assignable<_Tp>,
|
integral_constant<bool,
|
__is_trivially_assignable(_Tp&, const _Tp&)>>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_move_assignable
|
: public __and_<is_move_assignable<_Tp>,
|
integral_constant<bool,
|
__is_trivially_assignable(_Tp&, _Tp&&)>>
|
{ };
|
|
|
template<typename _Tp>
|
struct is_trivially_destructible
|
: public __and_<is_destructible<_Tp>, integral_constant<bool,
|
__has_trivial_destructor(_Tp)>>
|
{ };
|
|
|
template<typename _Tp>
|
struct has_trivial_default_constructor
|
: public integral_constant<bool, __has_trivial_constructor(_Tp)>
|
{ } __attribute__ ((__deprecated__));
|
|
|
template<typename _Tp>
|
struct has_trivial_copy_constructor
|
: public integral_constant<bool, __has_trivial_copy(_Tp)>
|
{ } __attribute__ ((__deprecated__));
|
|
|
template<typename _Tp>
|
struct has_trivial_copy_assign
|
: public integral_constant<bool, __has_trivial_assign(_Tp)>
|
{ } __attribute__ ((__deprecated__));
|
|
|
template<typename _Tp>
|
struct has_virtual_destructor
|
: public integral_constant<bool, __has_virtual_destructor(_Tp)>
|
{ };
|
|
|
|
|
|
template<typename _Tp>
|
struct alignment_of
|
: public integral_constant<std::size_t, __alignof__(_Tp)> { };
|
|
|
template<typename>
|
struct rank
|
: public integral_constant<std::size_t, 0> { };
|
|
template<typename _Tp, std::size_t _Size>
|
struct rank<_Tp[_Size]>
|
: public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
|
|
template<typename _Tp>
|
struct rank<_Tp[]>
|
: public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
|
|
|
template<typename, unsigned _Uint>
|
struct extent
|
: public integral_constant<std::size_t, 0> { };
|
|
template<typename _Tp, unsigned _Uint, std::size_t _Size>
|
struct extent<_Tp[_Size], _Uint>
|
: public integral_constant<std::size_t,
|
_Uint == 0 ? _Size : extent<_Tp,
|
_Uint - 1>::value>
|
{ };
|
|
template<typename _Tp, unsigned _Uint>
|
struct extent<_Tp[], _Uint>
|
: public integral_constant<std::size_t,
|
_Uint == 0 ? 0 : extent<_Tp,
|
_Uint - 1>::value>
|
{ };
|
|
|
|
|
|
template<typename, typename>
|
struct is_same
|
: public false_type { };
|
|
template<typename _Tp>
|
struct is_same<_Tp, _Tp>
|
: public true_type { };
|
|
|
template<typename _Base, typename _Derived>
|
struct is_base_of
|
: public integral_constant<bool, __is_base_of(_Base, _Derived)>
|
{ };
|
|
template<typename _From, typename _To,
|
bool = __or_<is_void<_From>, is_function<_To>,
|
is_array<_To>>::value>
|
struct __is_convertible_helper
|
{ typedef typename is_void<_To>::type type; };
|
|
template<typename _From, typename _To>
|
class __is_convertible_helper<_From, _To, false>
|
{
|
template<typename _To1>
|
static void __test_aux(_To1);
|
|
template<typename _From1, typename _To1,
|
typename = decltype(__test_aux<_To1>(std::declval<_From1>()))>
|
static true_type
|
__test(int);
|
|
template<typename, typename>
|
static false_type
|
__test(...);
|
|
public:
|
typedef decltype(__test<_From, _To>(0)) type;
|
};
|
|
|
|
template<typename _From, typename _To>
|
struct is_convertible
|
: public __is_convertible_helper<_From, _To>::type
|
{ };
|
|
|
|
|
|
template<typename _Tp>
|
struct remove_const
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct remove_const<_Tp const>
|
{ typedef _Tp type; };
|
|
|
template<typename _Tp>
|
struct remove_volatile
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct remove_volatile<_Tp volatile>
|
{ typedef _Tp type; };
|
|
|
template<typename _Tp>
|
struct remove_cv
|
{
|
typedef typename
|
remove_const<typename remove_volatile<_Tp>::type>::type type;
|
};
|
|
|
template<typename _Tp>
|
struct add_const
|
{ typedef _Tp const type; };
|
|
|
template<typename _Tp>
|
struct add_volatile
|
{ typedef _Tp volatile type; };
|
|
|
template<typename _Tp>
|
struct add_cv
|
{
|
typedef typename
|
add_const<typename add_volatile<_Tp>::type>::type type;
|
};
|
# 1641 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp>
|
struct remove_reference
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct remove_reference<_Tp&>
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct remove_reference<_Tp&&>
|
{ typedef _Tp type; };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __add_lvalue_reference_helper
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct __add_lvalue_reference_helper<_Tp, true>
|
{ typedef _Tp& type; };
|
|
|
template<typename _Tp>
|
struct add_lvalue_reference
|
: public __add_lvalue_reference_helper<_Tp>
|
{ };
|
|
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
|
struct __add_rvalue_reference_helper
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct __add_rvalue_reference_helper<_Tp, true>
|
{ typedef _Tp&& type; };
|
|
|
template<typename _Tp>
|
struct add_rvalue_reference
|
: public __add_rvalue_reference_helper<_Tp>
|
{ };
|
# 1698 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Unqualified, bool _IsConst, bool _IsVol>
|
struct __cv_selector;
|
|
template<typename _Unqualified>
|
struct __cv_selector<_Unqualified, false, false>
|
{ typedef _Unqualified __type; };
|
|
template<typename _Unqualified>
|
struct __cv_selector<_Unqualified, false, true>
|
{ typedef volatile _Unqualified __type; };
|
|
template<typename _Unqualified>
|
struct __cv_selector<_Unqualified, true, false>
|
{ typedef const _Unqualified __type; };
|
|
template<typename _Unqualified>
|
struct __cv_selector<_Unqualified, true, true>
|
{ typedef const volatile _Unqualified __type; };
|
|
template<typename _Qualified, typename _Unqualified,
|
bool _IsConst = is_const<_Qualified>::value,
|
bool _IsVol = is_volatile<_Qualified>::value>
|
class __match_cv_qualifiers
|
{
|
typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match;
|
|
public:
|
typedef typename __match::__type __type;
|
};
|
|
|
template<typename _Tp>
|
struct __make_unsigned
|
{ typedef _Tp __type; };
|
|
template<>
|
struct __make_unsigned<char>
|
{ typedef unsigned char __type; };
|
|
template<>
|
struct __make_unsigned<signed char>
|
{ typedef unsigned char __type; };
|
|
template<>
|
struct __make_unsigned<short>
|
{ typedef unsigned short __type; };
|
|
template<>
|
struct __make_unsigned<int>
|
{ typedef unsigned int __type; };
|
|
template<>
|
struct __make_unsigned<long>
|
{ typedef unsigned long __type; };
|
|
template<>
|
struct __make_unsigned<long long>
|
{ typedef unsigned long long __type; };
|
# 1785 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp,
|
bool _IsInt = is_integral<_Tp>::value,
|
bool _IsEnum = is_enum<_Tp>::value>
|
class __make_unsigned_selector;
|
|
template<typename _Tp>
|
class __make_unsigned_selector<_Tp, true, false>
|
{
|
typedef __make_unsigned<typename remove_cv<_Tp>::type> __unsignedt;
|
typedef typename __unsignedt::__type __unsigned_type;
|
typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned;
|
|
public:
|
typedef typename __cv_unsigned::__type __type;
|
};
|
|
template<typename _Tp>
|
class __make_unsigned_selector<_Tp, false, true>
|
{
|
|
typedef unsigned char __smallest;
|
static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest);
|
static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short);
|
static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int);
|
static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long);
|
typedef conditional<__b3, unsigned long, unsigned long long> __cond3;
|
typedef typename __cond3::type __cond3_type;
|
typedef conditional<__b2, unsigned int, __cond3_type> __cond2;
|
typedef typename __cond2::type __cond2_type;
|
typedef conditional<__b1, unsigned short, __cond2_type> __cond1;
|
typedef typename __cond1::type __cond1_type;
|
|
typedef typename conditional<__b0, __smallest, __cond1_type>::type
|
__unsigned_type;
|
typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned;
|
|
public:
|
typedef typename __cv_unsigned::__type __type;
|
};
|
|
|
|
|
|
template<typename _Tp>
|
struct make_unsigned
|
{ typedef typename __make_unsigned_selector<_Tp>::__type type; };
|
|
|
template<>
|
struct make_unsigned<bool>;
|
|
|
|
template<typename _Tp>
|
struct __make_signed
|
{ typedef _Tp __type; };
|
|
template<>
|
struct __make_signed<char>
|
{ typedef signed char __type; };
|
|
template<>
|
struct __make_signed<unsigned char>
|
{ typedef signed char __type; };
|
|
template<>
|
struct __make_signed<unsigned short>
|
{ typedef signed short __type; };
|
|
template<>
|
struct __make_signed<unsigned int>
|
{ typedef signed int __type; };
|
|
template<>
|
struct __make_signed<unsigned long>
|
{ typedef signed long __type; };
|
|
template<>
|
struct __make_signed<unsigned long long>
|
{ typedef signed long long __type; };
|
|
|
template<>
|
struct __make_signed<wchar_t> : __make_signed<unsigned int>
|
{ };
|
|
|
|
template<>
|
struct __make_signed<char16_t> : __make_signed<uint_least16_t>
|
{ };
|
template<>
|
struct __make_signed<char32_t> : __make_signed<uint_least32_t>
|
{ };
|
# 1904 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp,
|
bool _IsInt = is_integral<_Tp>::value,
|
bool _IsEnum = is_enum<_Tp>::value>
|
class __make_signed_selector;
|
|
template<typename _Tp>
|
class __make_signed_selector<_Tp, true, false>
|
{
|
typedef __make_signed<typename remove_cv<_Tp>::type> __signedt;
|
typedef typename __signedt::__type __signed_type;
|
typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed;
|
|
public:
|
typedef typename __cv_signed::__type __type;
|
};
|
|
template<typename _Tp>
|
class __make_signed_selector<_Tp, false, true>
|
{
|
typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type;
|
|
public:
|
typedef typename __make_signed_selector<__unsigned_type>::__type __type;
|
};
|
|
|
|
|
|
template<typename _Tp>
|
struct make_signed
|
{ typedef typename __make_signed_selector<_Tp>::__type type; };
|
|
|
template<>
|
struct make_signed<bool>;
|
# 1954 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp>
|
struct remove_extent
|
{ typedef _Tp type; };
|
|
template<typename _Tp, std::size_t _Size>
|
struct remove_extent<_Tp[_Size]>
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct remove_extent<_Tp[]>
|
{ typedef _Tp type; };
|
|
|
template<typename _Tp>
|
struct remove_all_extents
|
{ typedef _Tp type; };
|
|
template<typename _Tp, std::size_t _Size>
|
struct remove_all_extents<_Tp[_Size]>
|
{ typedef typename remove_all_extents<_Tp>::type type; };
|
|
template<typename _Tp>
|
struct remove_all_extents<_Tp[]>
|
{ typedef typename remove_all_extents<_Tp>::type type; };
|
# 1991 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Tp, typename>
|
struct __remove_pointer_helper
|
{ typedef _Tp type; };
|
|
template<typename _Tp, typename _Up>
|
struct __remove_pointer_helper<_Tp, _Up*>
|
{ typedef _Up type; };
|
|
|
template<typename _Tp>
|
struct remove_pointer
|
: public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type>
|
{ };
|
|
|
template<typename _Tp, bool = __or_<__is_referenceable<_Tp>,
|
is_void<_Tp>>::value>
|
struct __add_pointer_helper
|
{ typedef _Tp type; };
|
|
template<typename _Tp>
|
struct __add_pointer_helper<_Tp, true>
|
{ typedef typename remove_reference<_Tp>::type* type; };
|
|
template<typename _Tp>
|
struct add_pointer
|
: public __add_pointer_helper<_Tp>
|
{ };
|
# 2030 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<std::size_t _Len>
|
struct __aligned_storage_msa
|
{
|
union __type
|
{
|
unsigned char __data[_Len];
|
struct __attribute__((__aligned__)) { } __align;
|
};
|
};
|
# 2050 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<std::size_t _Len, std::size_t _Align =
|
__alignof__(typename __aligned_storage_msa<_Len>::__type)>
|
struct aligned_storage
|
{
|
union type
|
{
|
unsigned char __data[_Len];
|
struct __attribute__((__aligned__((_Align)))) { } __align;
|
};
|
};
|
|
template <typename... _Types>
|
struct __strictest_alignment
|
{
|
static const size_t _S_alignment = 0;
|
static const size_t _S_size = 0;
|
};
|
|
template <typename _Tp, typename... _Types>
|
struct __strictest_alignment<_Tp, _Types...>
|
{
|
static const size_t _S_alignment =
|
alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment
|
? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment;
|
static const size_t _S_size =
|
sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size
|
? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size;
|
};
|
# 2089 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template <size_t _Len, typename... _Types>
|
struct aligned_union
|
{
|
private:
|
static_assert(sizeof...(_Types) != 0, "At least one type is required");
|
|
using __strictest = __strictest_alignment<_Types...>;
|
static const size_t _S_len = _Len > __strictest::_S_size
|
? _Len : __strictest::_S_size;
|
public:
|
|
static const size_t alignment_value = __strictest::_S_alignment;
|
|
typedef typename aligned_storage<_S_len, alignment_value>::type type;
|
};
|
|
template <size_t _Len, typename... _Types>
|
const size_t aligned_union<_Len, _Types...>::alignment_value;
|
|
|
|
template<typename _Up,
|
bool _IsArray = is_array<_Up>::value,
|
bool _IsFunction = is_function<_Up>::value>
|
struct __decay_selector;
|
|
|
template<typename _Up>
|
struct __decay_selector<_Up, false, false>
|
{ typedef typename remove_cv<_Up>::type __type; };
|
|
template<typename _Up>
|
struct __decay_selector<_Up, true, false>
|
{ typedef typename remove_extent<_Up>::type* __type; };
|
|
template<typename _Up>
|
struct __decay_selector<_Up, false, true>
|
{ typedef typename add_pointer<_Up>::type __type; };
|
|
|
template<typename _Tp>
|
class decay
|
{
|
typedef typename remove_reference<_Tp>::type __remove_type;
|
|
public:
|
typedef typename __decay_selector<__remove_type>::__type type;
|
};
|
|
template<typename _Tp>
|
class reference_wrapper;
|
|
|
template<typename _Tp>
|
struct __strip_reference_wrapper
|
{
|
typedef _Tp __type;
|
};
|
|
template<typename _Tp>
|
struct __strip_reference_wrapper<reference_wrapper<_Tp> >
|
{
|
typedef _Tp& __type;
|
};
|
|
template<typename _Tp>
|
struct __decay_and_strip
|
{
|
typedef typename __strip_reference_wrapper<
|
typename decay<_Tp>::type>::__type __type;
|
};
|
|
|
|
|
template<bool, typename _Tp = void>
|
struct enable_if
|
{ };
|
|
|
template<typename _Tp>
|
struct enable_if<true, _Tp>
|
{ typedef _Tp type; };
|
|
template<typename... _Cond>
|
using _Require = typename enable_if<__and_<_Cond...>::value>::type;
|
|
|
|
template<bool _Cond, typename _Iftrue, typename _Iffalse>
|
struct conditional
|
{ typedef _Iftrue type; };
|
|
|
template<typename _Iftrue, typename _Iffalse>
|
struct conditional<false, _Iftrue, _Iffalse>
|
{ typedef _Iffalse type; };
|
|
|
template<typename... _Tp>
|
struct common_type;
|
|
|
|
struct __do_common_type_impl
|
{
|
template<typename _Tp, typename _Up>
|
static __success_type<typename decay<decltype
|
(true ? std::declval<_Tp>()
|
: std::declval<_Up>())>::type> _S_test(int);
|
|
template<typename, typename>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _Tp, typename _Up>
|
struct __common_type_impl
|
: private __do_common_type_impl
|
{
|
typedef decltype(_S_test<_Tp, _Up>(0)) type;
|
};
|
|
struct __do_member_type_wrapper
|
{
|
template<typename _Tp>
|
static __success_type<typename _Tp::type> _S_test(int);
|
|
template<typename>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _Tp>
|
struct __member_type_wrapper
|
: private __do_member_type_wrapper
|
{
|
typedef decltype(_S_test<_Tp>(0)) type;
|
};
|
|
template<typename _CTp, typename... _Args>
|
struct __expanded_common_type_wrapper
|
{
|
typedef common_type<typename _CTp::type, _Args...> type;
|
};
|
|
template<typename... _Args>
|
struct __expanded_common_type_wrapper<__failure_type, _Args...>
|
{ typedef __failure_type type; };
|
|
template<typename _Tp>
|
struct common_type<_Tp>
|
{ typedef typename decay<_Tp>::type type; };
|
|
template<typename _Tp, typename _Up>
|
struct common_type<_Tp, _Up>
|
: public __common_type_impl<_Tp, _Up>::type
|
{ };
|
|
template<typename _Tp, typename _Up, typename... _Vp>
|
struct common_type<_Tp, _Up, _Vp...>
|
: public __expanded_common_type_wrapper<typename __member_type_wrapper<
|
common_type<_Tp, _Up>>::type, _Vp...>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct underlying_type
|
{
|
typedef __underlying_type(_Tp) type;
|
};
|
|
template<typename _Tp>
|
struct __declval_protector
|
{
|
static const bool __stop = false;
|
static typename add_rvalue_reference<_Tp>::type __delegate();
|
};
|
|
template<typename _Tp>
|
inline typename add_rvalue_reference<_Tp>::type
|
declval() noexcept
|
{
|
static_assert(__declval_protector<_Tp>::__stop,
|
"declval() must not be used!");
|
return __declval_protector<_Tp>::__delegate();
|
}
|
|
|
template<typename _Signature>
|
class result_of;
|
|
|
|
|
|
struct __invoke_memfun_ref { };
|
struct __invoke_memfun_deref { };
|
struct __invoke_memobj_ref { };
|
struct __invoke_memobj_deref { };
|
struct __invoke_other { };
|
|
|
template<typename _Tp, typename _Tag>
|
struct __result_of_success : __success_type<_Tp>
|
{ using __invoke_type = _Tag; };
|
|
|
struct __result_of_memfun_ref_impl
|
{
|
template<typename _Fp, typename _Tp1, typename... _Args>
|
static __result_of_success<decltype(
|
(std::declval<_Tp1>().*std::declval<_Fp>())(std::declval<_Args>()...)
|
), __invoke_memfun_ref> _S_test(int);
|
|
template<typename...>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _MemPtr, typename _Arg, typename... _Args>
|
struct __result_of_memfun_ref
|
: private __result_of_memfun_ref_impl
|
{
|
typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
|
};
|
|
|
struct __result_of_memfun_deref_impl
|
{
|
template<typename _Fp, typename _Tp1, typename... _Args>
|
static __result_of_success<decltype(
|
((*std::declval<_Tp1>()).*std::declval<_Fp>())(std::declval<_Args>()...)
|
), __invoke_memfun_deref> _S_test(int);
|
|
template<typename...>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _MemPtr, typename _Arg, typename... _Args>
|
struct __result_of_memfun_deref
|
: private __result_of_memfun_deref_impl
|
{
|
typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
|
};
|
|
|
struct __result_of_memobj_ref_impl
|
{
|
template<typename _Fp, typename _Tp1>
|
static __result_of_success<decltype(
|
std::declval<_Tp1>().*std::declval<_Fp>()
|
), __invoke_memobj_ref> _S_test(int);
|
|
template<typename, typename>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _MemPtr, typename _Arg>
|
struct __result_of_memobj_ref
|
: private __result_of_memobj_ref_impl
|
{
|
typedef decltype(_S_test<_MemPtr, _Arg>(0)) type;
|
};
|
|
|
struct __result_of_memobj_deref_impl
|
{
|
template<typename _Fp, typename _Tp1>
|
static __result_of_success<decltype(
|
(*std::declval<_Tp1>()).*std::declval<_Fp>()
|
), __invoke_memobj_deref> _S_test(int);
|
|
template<typename, typename>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _MemPtr, typename _Arg>
|
struct __result_of_memobj_deref
|
: private __result_of_memobj_deref_impl
|
{
|
typedef decltype(_S_test<_MemPtr, _Arg>(0)) type;
|
};
|
|
template<typename _MemPtr, typename _Arg>
|
struct __result_of_memobj;
|
|
template<typename _Res, typename _Class, typename _Arg>
|
struct __result_of_memobj<_Res _Class::*, _Arg>
|
{
|
typedef typename remove_cv<typename remove_reference<
|
_Arg>::type>::type _Argval;
|
typedef _Res _Class::* _MemPtr;
|
typedef typename conditional<__or_<is_same<_Argval, _Class>,
|
is_base_of<_Class, _Argval>>::value,
|
__result_of_memobj_ref<_MemPtr, _Arg>,
|
__result_of_memobj_deref<_MemPtr, _Arg>
|
>::type::type type;
|
};
|
|
template<typename _MemPtr, typename _Arg, typename... _Args>
|
struct __result_of_memfun;
|
|
template<typename _Res, typename _Class, typename _Arg, typename... _Args>
|
struct __result_of_memfun<_Res _Class::*, _Arg, _Args...>
|
{
|
typedef typename remove_cv<typename remove_reference<
|
_Arg>::type>::type _Argval;
|
typedef _Res _Class::* _MemPtr;
|
typedef typename conditional<__or_<is_same<_Argval, _Class>,
|
is_base_of<_Class, _Argval>>::value,
|
__result_of_memfun_ref<_MemPtr, _Arg, _Args...>,
|
__result_of_memfun_deref<_MemPtr, _Arg, _Args...>
|
>::type::type type;
|
};
|
|
|
|
|
|
template<typename _Res, typename _Class, typename _Arg>
|
struct __result_of_memobj<_Res _Class::*, reference_wrapper<_Arg>>
|
: __result_of_memobj_ref<_Res _Class::*, _Arg&>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg>
|
struct __result_of_memobj<_Res _Class::*, reference_wrapper<_Arg>&>
|
: __result_of_memobj_ref<_Res _Class::*, _Arg&>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg>
|
struct __result_of_memobj<_Res _Class::*, const reference_wrapper<_Arg>&>
|
: __result_of_memobj_ref<_Res _Class::*, _Arg&>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg>
|
struct __result_of_memobj<_Res _Class::*, reference_wrapper<_Arg>&&>
|
: __result_of_memobj_ref<_Res _Class::*, _Arg&>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg>
|
struct __result_of_memobj<_Res _Class::*, const reference_wrapper<_Arg>&&>
|
: __result_of_memobj_ref<_Res _Class::*, _Arg&>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg, typename... _Args>
|
struct __result_of_memfun<_Res _Class::*, reference_wrapper<_Arg>, _Args...>
|
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg, typename... _Args>
|
struct __result_of_memfun<_Res _Class::*, reference_wrapper<_Arg>&,
|
_Args...>
|
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg, typename... _Args>
|
struct __result_of_memfun<_Res _Class::*, const reference_wrapper<_Arg>&,
|
_Args...>
|
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg, typename... _Args>
|
struct __result_of_memfun<_Res _Class::*, reference_wrapper<_Arg>&&,
|
_Args...>
|
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...>
|
{ };
|
|
template<typename _Res, typename _Class, typename _Arg, typename... _Args>
|
struct __result_of_memfun<_Res _Class::*, const reference_wrapper<_Arg>&&,
|
_Args...>
|
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...>
|
{ };
|
|
template<bool, bool, typename _Functor, typename... _ArgTypes>
|
struct __result_of_impl
|
{
|
typedef __failure_type type;
|
};
|
|
template<typename _MemPtr, typename _Arg>
|
struct __result_of_impl<true, false, _MemPtr, _Arg>
|
: public __result_of_memobj<typename decay<_MemPtr>::type, _Arg>
|
{ };
|
|
template<typename _MemPtr, typename _Arg, typename... _Args>
|
struct __result_of_impl<false, true, _MemPtr, _Arg, _Args...>
|
: public __result_of_memfun<typename decay<_MemPtr>::type, _Arg, _Args...>
|
{ };
|
|
|
struct __result_of_other_impl
|
{
|
template<typename _Fn, typename... _Args>
|
static __result_of_success<decltype(
|
std::declval<_Fn>()(std::declval<_Args>()...)
|
), __invoke_other> _S_test(int);
|
|
template<typename...>
|
static __failure_type _S_test(...);
|
};
|
|
template<typename _Functor, typename... _ArgTypes>
|
struct __result_of_impl<false, false, _Functor, _ArgTypes...>
|
: private __result_of_other_impl
|
{
|
typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type;
|
};
|
|
template<typename _Functor, typename... _ArgTypes>
|
struct result_of<_Functor(_ArgTypes...)>
|
: public __result_of_impl<
|
is_member_object_pointer<
|
typename remove_reference<_Functor>::type
|
>::value,
|
is_member_function_pointer<
|
typename remove_reference<_Functor>::type
|
>::value,
|
_Functor, _ArgTypes...
|
>::type
|
{ };
|
# 2542 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename...> using __void_t = void;
|
# 2551 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template<typename _Default, typename _AlwaysVoid,
|
template<typename...> class _Op, typename... _Args>
|
struct __detector
|
{
|
using value_t = false_type;
|
using type = _Default;
|
};
|
|
|
template<typename _Default, template<typename...> class _Op,
|
typename... _Args>
|
struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...>
|
{
|
using value_t = true_type;
|
using type = _Op<_Args...>;
|
};
|
|
|
template<typename _Default, template<typename...> class _Op,
|
typename... _Args>
|
using __detected_or = __detector<_Default, void, _Op, _Args...>;
|
|
|
template<typename _Default, template<typename...> class _Op,
|
typename... _Args>
|
using __detected_or_t
|
= typename __detected_or<_Default, _Op, _Args...>::type;
|
# 2595 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/type_traits" 3
|
template <typename _Tp>
|
struct __is_swappable;
|
|
template <typename _Tp>
|
struct __is_nothrow_swappable;
|
|
template<typename _Tp>
|
inline
|
typename enable_if<__and_<is_move_constructible<_Tp>,
|
is_move_assignable<_Tp>>::value>::type
|
swap(_Tp&, _Tp&)
|
noexcept(__and_<is_nothrow_move_constructible<_Tp>,
|
is_nothrow_move_assignable<_Tp>>::value);
|
|
template<typename _Tp, size_t _Nm>
|
inline
|
typename enable_if<__is_swappable<_Tp>::value>::type
|
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
|
noexcept(__is_nothrow_swappable<_Tp>::value);
|
|
namespace __swappable_details {
|
using std::swap;
|
|
struct __do_is_swappable_impl
|
{
|
template<typename _Tp, typename
|
= decltype(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))>
|
static true_type __test(int);
|
|
template<typename>
|
static false_type __test(...);
|
};
|
|
struct __do_is_nothrow_swappable_impl
|
{
|
template<typename _Tp>
|
static __bool_constant<
|
noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))
|
> __test(int);
|
|
template<typename>
|
static false_type __test(...);
|
};
|
|
}
|
|
template<typename _Tp>
|
struct __is_swappable_impl
|
: public __swappable_details::__do_is_swappable_impl
|
{
|
typedef decltype(__test<_Tp>(0)) type;
|
};
|
|
template<typename _Tp>
|
struct __is_nothrow_swappable_impl
|
: public __swappable_details::__do_is_nothrow_swappable_impl
|
{
|
typedef decltype(__test<_Tp>(0)) type;
|
};
|
|
template<typename _Tp>
|
struct __is_swappable
|
: public __is_swappable_impl<_Tp>::type
|
{ };
|
|
template<typename _Tp>
|
struct __is_nothrow_swappable
|
: public __is_nothrow_swappable_impl<_Tp>::type
|
{ };
|
|
|
}
|
# 58 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 74 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 3
|
template<typename _Tp>
|
constexpr _Tp&&
|
forward(typename std::remove_reference<_Tp>::type& __t) noexcept
|
{ return static_cast<_Tp&&>(__t); }
|
|
|
|
|
|
|
|
template<typename _Tp>
|
constexpr _Tp&&
|
forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
|
{
|
static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
|
" substituting _Tp is an lvalue reference type");
|
return static_cast<_Tp&&>(__t);
|
}
|
|
|
|
|
|
|
template<typename _Tp>
|
constexpr typename std::remove_reference<_Tp>::type&&
|
move(_Tp&& __t) noexcept
|
{ return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
|
|
|
template<typename _Tp>
|
struct __move_if_noexcept_cond
|
: public __and_<__not_<is_nothrow_move_constructible<_Tp>>,
|
is_copy_constructible<_Tp>>::type { };
|
# 118 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 3
|
template<typename _Tp>
|
constexpr typename
|
conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type
|
move_if_noexcept(_Tp& __x) noexcept
|
{ return std::move(__x); }
|
# 133 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 3
|
template<typename _Tp>
|
inline _Tp*
|
addressof(_Tp& __r) noexcept
|
{ return std::__addressof(__r); }
|
|
|
template <typename _Tp, typename _Up = _Tp>
|
inline _Tp
|
__exchange(_Tp& __obj, _Up&& __new_val)
|
{
|
_Tp __old_val = std::move(__obj);
|
__obj = std::forward<_Up>(__new_val);
|
return __old_val;
|
}
|
|
|
|
}
|
# 159 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 174 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/move.h" 3
|
template<typename _Tp>
|
inline
|
|
typename enable_if<__and_<is_move_constructible<_Tp>,
|
is_move_assignable<_Tp>>::value>::type
|
swap(_Tp& __a, _Tp& __b)
|
noexcept(__and_<is_nothrow_move_constructible<_Tp>,
|
is_nothrow_move_assignable<_Tp>>::value)
|
|
|
|
|
{
|
|
|
|
_Tp __tmp = std::move(__a);
|
__a = std::move(__b);
|
__b = std::move(__tmp);
|
}
|
|
|
|
|
template<typename _Tp, size_t _Nm>
|
inline
|
|
typename enable_if<__is_swappable<_Tp>::value>::type
|
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
|
noexcept(__is_nothrow_swappable<_Tp>::value)
|
|
|
|
|
{
|
for (size_t __n = 0; __n < _Nm; ++__n)
|
swap(__a[__n], __b[__n]);
|
}
|
|
|
|
}
|
# 60 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 2 3
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 76 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
|
|
|
constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
|
|
|
template<typename...>
|
class tuple;
|
|
template<std::size_t...>
|
struct _Index_tuple;
|
|
|
|
|
|
|
template <bool, typename _T1, typename _T2>
|
struct _PCC
|
{
|
template <typename _U1, typename _U2>
|
static constexpr bool _ConstructiblePair()
|
{
|
return __and_<is_constructible<_T1, const _U1&>,
|
is_constructible<_T2, const _U2&>>::value;
|
}
|
|
template <typename _U1, typename _U2>
|
static constexpr bool _ImplicitlyConvertiblePair()
|
{
|
return __and_<is_convertible<const _U1&, _T1>,
|
is_convertible<const _U2&, _T2>>::value;
|
}
|
|
template <typename _U1, typename _U2>
|
static constexpr bool _MoveConstructiblePair()
|
{
|
return __and_<is_constructible<_T1, _U1&&>,
|
is_constructible<_T2, _U2&&>>::value;
|
}
|
|
template <typename _U1, typename _U2>
|
static constexpr bool _ImplicitlyMoveConvertiblePair()
|
{
|
return __and_<is_convertible<_U1&&, _T1>,
|
is_convertible<_U2&&, _T2>>::value;
|
}
|
|
template <bool __implicit, typename _U1, typename _U2>
|
static constexpr bool _CopyMovePair()
|
{
|
using __do_converts = __and_<is_convertible<const _U1&, _T1>,
|
is_convertible<_U2&&, _T2>>;
|
using __converts = typename conditional<__implicit,
|
__do_converts,
|
__not_<__do_converts>>::type;
|
return __and_<is_constructible<_T1, const _U1&>,
|
is_constructible<_T2, _U2&&>,
|
__converts
|
>::value;
|
}
|
|
template <bool __implicit, typename _U1, typename _U2>
|
static constexpr bool _MoveCopyPair()
|
{
|
using __do_converts = __and_<is_convertible<_U1&&, _T1>,
|
is_convertible<const _U2&, _T2>>;
|
using __converts = typename conditional<__implicit,
|
__do_converts,
|
__not_<__do_converts>>::type;
|
return __and_<is_constructible<_T1, _U1&&>,
|
is_constructible<_T2, const _U2&&>,
|
__converts
|
>::value;
|
}
|
};
|
|
template <typename _T1, typename _T2>
|
struct _PCC<false, _T1, _T2>
|
{
|
template <typename _U1, typename _U2>
|
static constexpr bool _ConstructiblePair()
|
{
|
return false;
|
}
|
|
template <typename _U1, typename _U2>
|
static constexpr bool _ImplicitlyConvertiblePair()
|
{
|
return false;
|
}
|
|
template <typename _U1, typename _U2>
|
static constexpr bool _MoveConstructiblePair()
|
{
|
return false;
|
}
|
|
template <typename _U1, typename _U2>
|
static constexpr bool _ImplicitlyMoveConvertiblePair()
|
{
|
return false;
|
}
|
};
|
|
struct __wrap_nonesuch : std::__nonesuch {
|
explicit __wrap_nonesuch(const __nonesuch&) = delete;
|
};
|
# 193 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
template<typename _T1, typename _T2>
|
struct pair
|
{
|
typedef _T1 first_type;
|
typedef _T2 second_type;
|
|
_T1 first;
|
_T2 second;
|
|
|
|
|
|
|
template <typename _U1 = _T1,
|
typename _U2 = _T2,
|
typename enable_if<__and_<
|
__is_implicitly_default_constructible<_U1>,
|
__is_implicitly_default_constructible<_U2>>
|
::value, bool>::type = true>
|
|
constexpr pair()
|
: first(), second() { }
|
|
|
template <typename _U1 = _T1,
|
typename _U2 = _T2,
|
typename enable_if<__and_<
|
is_default_constructible<_U1>,
|
is_default_constructible<_U2>,
|
__not_<
|
__and_<__is_implicitly_default_constructible<_U1>,
|
__is_implicitly_default_constructible<_U2>>>>
|
::value, bool>::type = false>
|
explicit constexpr pair()
|
: first(), second() { }
|
# 237 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
using _PCCP = _PCC<true, _T1, _T2>;
|
|
template<typename _U1 = _T1, typename _U2=_T2, typename
|
enable_if<_PCCP::template
|
_ConstructiblePair<_U1, _U2>()
|
&& _PCCP::template
|
_ImplicitlyConvertiblePair<_U1, _U2>(),
|
bool>::type=true>
|
constexpr pair(const _T1& __a, const _T2& __b)
|
: first(__a), second(__b) { }
|
|
template<typename _U1 = _T1, typename _U2=_T2, typename
|
enable_if<_PCCP::template
|
_ConstructiblePair<_U1, _U2>()
|
&& !_PCCP::template
|
_ImplicitlyConvertiblePair<_U1, _U2>(),
|
bool>::type=false>
|
explicit constexpr pair(const _T1& __a, const _T2& __b)
|
: first(__a), second(__b) { }
|
# 265 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
template <typename _U1, typename _U2>
|
using _PCCFP = _PCC<!is_same<_T1, _U1>::value
|
|| !is_same<_T2, _U2>::value,
|
_T1, _T2>;
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_PCCFP<_U1, _U2>::template
|
_ConstructiblePair<_U1, _U2>()
|
&& _PCCFP<_U1, _U2>::template
|
_ImplicitlyConvertiblePair<_U1, _U2>(),
|
bool>::type=true>
|
constexpr pair(const pair<_U1, _U2>& __p)
|
: first(__p.first), second(__p.second) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_PCCFP<_U1, _U2>::template
|
_ConstructiblePair<_U1, _U2>()
|
&& !_PCCFP<_U1, _U2>::template
|
_ImplicitlyConvertiblePair<_U1, _U2>(),
|
bool>::type=false>
|
explicit constexpr pair(const pair<_U1, _U2>& __p)
|
: first(__p.first), second(__p.second) { }
|
|
constexpr pair(const pair&) = default;
|
constexpr pair(pair&&) = default;
|
|
|
template<typename _U1, typename
|
enable_if<_PCCP::template
|
_MoveCopyPair<true, _U1, _T2>(),
|
bool>::type=true>
|
constexpr pair(_U1&& __x, const _T2& __y)
|
: first(std::forward<_U1>(__x)), second(__y) { }
|
|
template<typename _U1, typename
|
enable_if<_PCCP::template
|
_MoveCopyPair<false, _U1, _T2>(),
|
bool>::type=false>
|
explicit constexpr pair(_U1&& __x, const _T2& __y)
|
: first(std::forward<_U1>(__x)), second(__y) { }
|
|
template<typename _U2, typename
|
enable_if<_PCCP::template
|
_CopyMovePair<true, _T1, _U2>(),
|
bool>::type=true>
|
constexpr pair(const _T1& __x, _U2&& __y)
|
: first(__x), second(std::forward<_U2>(__y)) { }
|
|
template<typename _U2, typename
|
enable_if<_PCCP::template
|
_CopyMovePair<false, _T1, _U2>(),
|
bool>::type=false>
|
explicit pair(const _T1& __x, _U2&& __y)
|
: first(__x), second(std::forward<_U2>(__y)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_PCCP::template
|
_MoveConstructiblePair<_U1, _U2>()
|
&& _PCCP::template
|
_ImplicitlyMoveConvertiblePair<_U1, _U2>(),
|
bool>::type=true>
|
constexpr pair(_U1&& __x, _U2&& __y)
|
: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_PCCP::template
|
_MoveConstructiblePair<_U1, _U2>()
|
&& !_PCCP::template
|
_ImplicitlyMoveConvertiblePair<_U1, _U2>(),
|
bool>::type=false>
|
explicit constexpr pair(_U1&& __x, _U2&& __y)
|
: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
|
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_PCCFP<_U1, _U2>::template
|
_MoveConstructiblePair<_U1, _U2>()
|
&& _PCCFP<_U1, _U2>::template
|
_ImplicitlyMoveConvertiblePair<_U1, _U2>(),
|
bool>::type=true>
|
constexpr pair(pair<_U1, _U2>&& __p)
|
: first(std::forward<_U1>(__p.first)),
|
second(std::forward<_U2>(__p.second)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_PCCFP<_U1, _U2>::template
|
_MoveConstructiblePair<_U1, _U2>()
|
&& !_PCCFP<_U1, _U2>::template
|
_ImplicitlyMoveConvertiblePair<_U1, _U2>(),
|
bool>::type=false>
|
explicit constexpr pair(pair<_U1, _U2>&& __p)
|
: first(std::forward<_U1>(__p.first)),
|
second(std::forward<_U2>(__p.second)) { }
|
|
template<typename... _Args1, typename... _Args2>
|
pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>);
|
|
pair&
|
operator=(typename conditional<
|
__and_<is_copy_assignable<_T1>,
|
is_copy_assignable<_T2>>::value,
|
const pair&, const __wrap_nonesuch&>::type __p)
|
{
|
first = __p.first;
|
second = __p.second;
|
return *this;
|
}
|
|
pair&
|
operator=(typename conditional<
|
__not_<__and_<is_copy_assignable<_T1>,
|
is_copy_assignable<_T2>>>::value,
|
const pair&, const __wrap_nonesuch&>::type __p) = delete;
|
|
pair&
|
operator=(typename conditional<
|
__and_<is_move_assignable<_T1>,
|
is_move_assignable<_T2>>::value,
|
pair&&, __wrap_nonesuch&&>::type __p)
|
noexcept(__and_<is_nothrow_move_assignable<_T1>,
|
is_nothrow_move_assignable<_T2>>::value)
|
{
|
first = std::forward<first_type>(__p.first);
|
second = std::forward<second_type>(__p.second);
|
return *this;
|
}
|
|
template<typename _U1, typename _U2>
|
typename enable_if<__and_<is_assignable<_T1&, const _U1&>,
|
is_assignable<_T2&, const _U2&>>::value,
|
pair&>::type
|
operator=(const pair<_U1, _U2>& __p)
|
{
|
first = __p.first;
|
second = __p.second;
|
return *this;
|
}
|
|
template<typename _U1, typename _U2>
|
typename enable_if<__and_<is_assignable<_T1&, _U1&&>,
|
is_assignable<_T2&, _U2&&>>::value,
|
pair&>::type
|
operator=(pair<_U1, _U2>&& __p)
|
{
|
first = std::forward<_U1>(__p.first);
|
second = std::forward<_U2>(__p.second);
|
return *this;
|
}
|
|
void
|
swap(pair& __p)
|
noexcept(__is_nothrow_swappable<_T1>::value
|
&& __is_nothrow_swappable<_T2>::value)
|
{
|
using std::swap;
|
swap(first, __p.first);
|
swap(second, __p.second);
|
}
|
|
private:
|
template<typename... _Args1, std::size_t... _Indexes1,
|
typename... _Args2, std::size_t... _Indexes2>
|
pair(tuple<_Args1...>&, tuple<_Args2...>&,
|
_Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>);
|
|
};
|
|
|
template<typename _T1, typename _T2>
|
inline constexpr bool
|
operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
{ return __x.first == __y.first && __x.second == __y.second; }
|
|
|
template<typename _T1, typename _T2>
|
inline constexpr 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<typename _T1, typename _T2>
|
inline constexpr bool
|
operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
{ return !(__x == __y); }
|
|
|
template<typename _T1, typename _T2>
|
inline constexpr bool
|
operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
{ return __y < __x; }
|
|
|
template<typename _T1, typename _T2>
|
inline constexpr bool
|
operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
{ return !(__y < __x); }
|
|
|
template<typename _T1, typename _T2>
|
inline constexpr bool
|
operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
{ return !(__x < __y); }
|
|
|
|
|
|
template<typename _T1, typename _T2>
|
inline void
|
swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
|
noexcept(noexcept(__x.swap(__y)))
|
{ __x.swap(__y); }
|
# 494 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
template<typename _T1, typename _T2>
|
constexpr pair<typename __decay_and_strip<_T1>::__type,
|
typename __decay_and_strip<_T2>::__type>
|
make_pair(_T1&& __x, _T2&& __y)
|
{
|
typedef typename __decay_and_strip<_T1>::__type __ds_type1;
|
typedef typename __decay_and_strip<_T2>::__type __ds_type2;
|
typedef pair<__ds_type1, __ds_type2> __pair_type;
|
return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
|
}
|
# 514 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_pair.h" 3
|
}
|
# 65 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_types.h" 1 3
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_types.h" 3
|
|
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 89 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
};
|
# 143 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_types.h" 3
|
template<typename _Iterator, typename = __void_t<>>
|
struct __iterator_traits { };
|
|
template<typename _Iterator>
|
struct __iterator_traits<_Iterator,
|
__void_t<typename _Iterator::iterator_category,
|
typename _Iterator::value_type,
|
typename _Iterator::difference_type,
|
typename _Iterator::pointer,
|
typename _Iterator::reference>>
|
{
|
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 _Iterator>
|
struct iterator_traits
|
: public __iterator_traits<_Iterator> { };
|
# 177 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_types.h" 3
|
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(); }
|
# 230 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_types.h" 3
|
template<typename _InIter>
|
using _RequireInputIter = typename
|
enable_if<is_convertible<typename
|
iterator_traits<_InIter>::iterator_category,
|
input_iterator_tag>::value>::type;
|
|
|
|
}
|
# 66 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_funcs.h" 1 3
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_funcs.h" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/debug/assertions.h" 1 3
|
# 66 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator_base_funcs.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
template <typename> struct _List_iterator;
|
template <typename> struct _List_const_iterator;
|
|
|
|
|
template<typename _InputIterator>
|
inline typename iterator_traits<_InputIterator>::difference_type
|
__distance(_InputIterator __first, _InputIterator __last,
|
input_iterator_tag)
|
{
|
|
|
|
typename iterator_traits<_InputIterator>::difference_type __n = 0;
|
while (__first != __last)
|
{
|
++__first;
|
++__n;
|
}
|
return __n;
|
}
|
|
template<typename _RandomAccessIterator>
|
inline typename iterator_traits<_RandomAccessIterator>::difference_type
|
__distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
|
random_access_iterator_tag)
|
{
|
|
|
|
return __last - __first;
|
}
|
|
|
|
template<typename _Tp>
|
ptrdiff_t
|
__distance(std::_List_iterator<_Tp>,
|
std::_List_iterator<_Tp>,
|
input_iterator_tag);
|
|
template<typename _Tp>
|
ptrdiff_t
|
__distance(std::_List_const_iterator<_Tp>,
|
std::_List_const_iterator<_Tp>,
|
input_iterator_tag);
|
# 133 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 192 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
|
|
|
template<typename _ForwardIterator>
|
inline _ForwardIterator
|
next(_ForwardIterator __x, typename
|
iterator_traits<_ForwardIterator>::difference_type __n = 1)
|
{
|
|
|
|
std::advance(__x, __n);
|
return __x;
|
}
|
|
template<typename _BidirectionalIterator>
|
inline _BidirectionalIterator
|
prev(_BidirectionalIterator __x, typename
|
iterator_traits<_BidirectionalIterator>::difference_type __n = 1)
|
{
|
|
|
|
std::advance(__x, -__n);
|
return __x;
|
}
|
|
|
|
|
}
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 1 3
|
# 66 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/ptr_traits.h" 1 3
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/ptr_traits.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
class __undefined;
|
|
|
template<typename _Tp>
|
struct __get_first_arg
|
{ using type = __undefined; };
|
|
template<template<typename, typename...> class _Template, typename _Tp,
|
typename... _Types>
|
struct __get_first_arg<_Template<_Tp, _Types...>>
|
{ using type = _Tp; };
|
|
template<typename _Tp>
|
using __get_first_arg_t = typename __get_first_arg<_Tp>::type;
|
|
|
template<typename _Tp, typename _Up>
|
struct __replace_first_arg
|
{ };
|
|
template<template<typename, typename...> class _Template, typename _Up,
|
typename _Tp, typename... _Types>
|
struct __replace_first_arg<_Template<_Tp, _Types...>, _Up>
|
{ using type = _Template<_Up, _Types...>; };
|
|
template<typename _Tp, typename _Up>
|
using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type;
|
|
template<typename _Tp>
|
using __make_not_void
|
= typename conditional<is_void<_Tp>::value, __undefined, _Tp>::type;
|
|
|
|
|
|
template<typename _Ptr>
|
struct pointer_traits
|
{
|
private:
|
template<typename _Tp>
|
using __element_type = typename _Tp::element_type;
|
|
template<typename _Tp>
|
using __difference_type = typename _Tp::difference_type;
|
|
template<typename _Tp, typename _Up, typename = void>
|
struct __rebind : __replace_first_arg<_Tp, _Up> { };
|
|
template<typename _Tp, typename _Up>
|
struct __rebind<_Tp, _Up, __void_t<typename _Tp::template rebind<_Up>>>
|
{ using type = typename _Tp::template rebind<_Up>; };
|
|
public:
|
|
using pointer = _Ptr;
|
|
|
using element_type
|
= __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>;
|
|
|
using difference_type
|
= __detected_or_t<ptrdiff_t, __difference_type, _Ptr>;
|
|
|
template<typename _Up>
|
using rebind = typename __rebind<_Ptr, _Up>::type;
|
|
static _Ptr
|
pointer_to(__make_not_void<element_type>& __e)
|
{ return _Ptr::pointer_to(__e); }
|
|
static_assert(!is_same<element_type, __undefined>::value,
|
"pointer type defines element_type or is like SomePointer<T, Args>");
|
};
|
|
|
|
|
|
template<typename _Tp>
|
struct pointer_traits<_Tp*>
|
{
|
|
typedef _Tp* pointer;
|
|
typedef _Tp element_type;
|
|
typedef ptrdiff_t difference_type;
|
|
template<typename _Up>
|
using rebind = _Up*;
|
|
|
|
|
|
|
static pointer
|
pointer_to(__make_not_void<element_type>& __r) noexcept
|
{ return std::addressof(__r); }
|
};
|
|
|
template<typename _Ptr, typename _Tp>
|
using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>;
|
|
|
}
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 96 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; }
|
# 160 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
};
|
# 290 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 auto
|
operator-(const reverse_iterator<_Iterator>& __x,
|
const reverse_iterator<_Iterator>& __y)
|
-> decltype(__x.base() - __y.base())
|
|
{ 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 auto
|
operator-(const reverse_iterator<_IteratorL>& __x,
|
const reverse_iterator<_IteratorR>& __y)
|
-> decltype(__y.base() - __x.base())
|
|
|
|
|
|
{ return __y.base() - __x.base(); }
|
|
|
|
|
template<typename _Iterator>
|
inline reverse_iterator<_Iterator>
|
__make_reverse_iterator(_Iterator __i)
|
{ return reverse_iterator<_Iterator>(__i); }
|
# 419 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
template<typename _Iterator>
|
auto
|
__niter_base(reverse_iterator<_Iterator> __it)
|
-> decltype(__make_reverse_iterator(__niter_base(__it.base())))
|
{ return __make_reverse_iterator(__niter_base(__it.base())); }
|
|
template<typename _Iterator>
|
struct __is_move_iterator<reverse_iterator<_Iterator> >
|
: __is_move_iterator<_Iterator>
|
{ };
|
|
template<typename _Iterator>
|
auto
|
__miter_base(reverse_iterator<_Iterator> __it)
|
-> decltype(__make_reverse_iterator(__miter_base(__it.base())))
|
{ return __make_reverse_iterator(__miter_base(__it.base())); }
|
# 448 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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(std::__addressof(__x)) { }
|
# 483 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
back_insert_iterator&
|
operator=(const typename _Container::value_type& __value)
|
{
|
container->push_back(__value);
|
return *this;
|
}
|
|
back_insert_iterator&
|
operator=(typename _Container::value_type&& __value)
|
{
|
container->push_back(std::move(__value));
|
return *this;
|
}
|
|
|
|
back_insert_iterator&
|
operator*()
|
{ return *this; }
|
|
|
back_insert_iterator&
|
operator++()
|
{ return *this; }
|
|
|
back_insert_iterator
|
operator++(int)
|
{ return *this; }
|
};
|
# 525 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
template<typename _Container>
|
inline back_insert_iterator<_Container>
|
back_inserter(_Container& __x)
|
{ return back_insert_iterator<_Container>(__x); }
|
# 540 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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(std::__addressof(__x)) { }
|
# 574 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
front_insert_iterator&
|
operator=(const typename _Container::value_type& __value)
|
{
|
container->push_front(__value);
|
return *this;
|
}
|
|
front_insert_iterator&
|
operator=(typename _Container::value_type&& __value)
|
{
|
container->push_front(std::move(__value));
|
return *this;
|
}
|
|
|
|
front_insert_iterator&
|
operator*()
|
{ return *this; }
|
|
|
front_insert_iterator&
|
operator++()
|
{ return *this; }
|
|
|
front_insert_iterator
|
operator++(int)
|
{ return *this; }
|
};
|
# 616 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
template<typename _Container>
|
inline front_insert_iterator<_Container>
|
front_inserter(_Container& __x)
|
{ return front_insert_iterator<_Container>(__x); }
|
# 635 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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(std::__addressof(__x)), iter(__i) {}
|
# 686 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
insert_iterator&
|
operator=(const typename _Container::value_type& __value)
|
{
|
iter = container->insert(iter, __value);
|
++iter;
|
return *this;
|
}
|
|
insert_iterator&
|
operator=(typename _Container::value_type&& __value)
|
{
|
iter = container->insert(iter, std::move(__value));
|
++iter;
|
return *this;
|
}
|
|
|
|
insert_iterator&
|
operator*()
|
{ return *this; }
|
|
|
insert_iterator&
|
operator++()
|
{ return *this; }
|
|
|
insert_iterator&
|
operator++(int)
|
{ return *this; }
|
};
|
# 730 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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")))
|
{
|
# 754 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
|
constexpr __normal_iterator() noexcept
|
: _M_current(_Iterator()) { }
|
|
explicit
|
__normal_iterator(const _Iterator& __i) noexcept
|
: _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) noexcept
|
: _M_current(__i.base()) { }
|
|
|
reference
|
operator*() const noexcept
|
{ return *_M_current; }
|
|
pointer
|
operator->() const noexcept
|
{ return _M_current; }
|
|
__normal_iterator&
|
operator++() noexcept
|
{
|
++_M_current;
|
return *this;
|
}
|
|
__normal_iterator
|
operator++(int) noexcept
|
{ return __normal_iterator(_M_current++); }
|
|
|
__normal_iterator&
|
operator--() noexcept
|
{
|
--_M_current;
|
return *this;
|
}
|
|
__normal_iterator
|
operator--(int) noexcept
|
{ return __normal_iterator(_M_current--); }
|
|
|
reference
|
operator[](difference_type __n) const noexcept
|
{ return _M_current[__n]; }
|
|
__normal_iterator&
|
operator+=(difference_type __n) noexcept
|
{ _M_current += __n; return *this; }
|
|
__normal_iterator
|
operator+(difference_type __n) const noexcept
|
{ return __normal_iterator(_M_current + __n); }
|
|
__normal_iterator&
|
operator-=(difference_type __n) noexcept
|
{ _M_current -= __n; return *this; }
|
|
__normal_iterator
|
operator-(difference_type __n) const noexcept
|
{ return __normal_iterator(_M_current - __n); }
|
|
const _Iterator&
|
base() const noexcept
|
{ return _M_current; }
|
};
|
# 854 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ return __lhs.base() >= __rhs.base(); }
|
|
|
|
|
|
template<typename _IteratorL, typename _IteratorR, typename _Container>
|
|
|
inline auto
|
operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
|
const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept
|
-> decltype(__lhs.base() - __rhs.base())
|
|
|
|
|
|
{ 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)
|
noexcept
|
{ 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)
|
noexcept
|
{ return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
|
|
|
}
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
template<typename _Iterator, typename _Container>
|
_Iterator
|
__niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it)
|
{ return __it.base(); }
|
|
|
}
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 1006 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_iterator.h" 3
|
template<typename _Iterator>
|
class move_iterator
|
{
|
protected:
|
_Iterator _M_current;
|
|
typedef iterator_traits<_Iterator> __traits_type;
|
typedef typename __traits_type::reference __base_ref;
|
|
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 _Iterator pointer;
|
|
|
typedef typename conditional<is_reference<__base_ref>::value,
|
typename remove_reference<__base_ref>::type&&,
|
__base_ref>::type reference;
|
|
move_iterator()
|
: _M_current() { }
|
|
explicit
|
move_iterator(iterator_type __i)
|
: _M_current(__i) { }
|
|
template<typename _Iter>
|
move_iterator(const move_iterator<_Iter>& __i)
|
: _M_current(__i.base()) { }
|
|
iterator_type
|
base() const
|
{ return _M_current; }
|
|
reference
|
operator*() const
|
{ return static_cast<reference>(*_M_current); }
|
|
pointer
|
operator->() const
|
{ return _M_current; }
|
|
move_iterator&
|
operator++()
|
{
|
++_M_current;
|
return *this;
|
}
|
|
move_iterator
|
operator++(int)
|
{
|
move_iterator __tmp = *this;
|
++_M_current;
|
return __tmp;
|
}
|
|
move_iterator&
|
operator--()
|
{
|
--_M_current;
|
return *this;
|
}
|
|
move_iterator
|
operator--(int)
|
{
|
move_iterator __tmp = *this;
|
--_M_current;
|
return __tmp;
|
}
|
|
move_iterator
|
operator+(difference_type __n) const
|
{ return move_iterator(_M_current + __n); }
|
|
move_iterator&
|
operator+=(difference_type __n)
|
{
|
_M_current += __n;
|
return *this;
|
}
|
|
move_iterator
|
operator-(difference_type __n) const
|
{ return move_iterator(_M_current - __n); }
|
|
move_iterator&
|
operator-=(difference_type __n)
|
{
|
_M_current -= __n;
|
return *this;
|
}
|
|
reference
|
operator[](difference_type __n) const
|
{ return std::move(_M_current[__n]); }
|
};
|
|
|
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline bool
|
operator==(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
{ return __x.base() == __y.base(); }
|
|
template<typename _Iterator>
|
inline bool
|
operator==(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
{ return __x.base() == __y.base(); }
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline bool
|
operator!=(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
{ return !(__x == __y); }
|
|
template<typename _Iterator>
|
inline bool
|
operator!=(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
{ return !(__x == __y); }
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline bool
|
operator<(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
{ return __x.base() < __y.base(); }
|
|
template<typename _Iterator>
|
inline bool
|
operator<(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
{ return __x.base() < __y.base(); }
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline bool
|
operator<=(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
{ return !(__y < __x); }
|
|
template<typename _Iterator>
|
inline bool
|
operator<=(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
{ return !(__y < __x); }
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline bool
|
operator>(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
{ return __y < __x; }
|
|
template<typename _Iterator>
|
inline bool
|
operator>(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
{ return __y < __x; }
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline bool
|
operator>=(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
{ return !(__x < __y); }
|
|
template<typename _Iterator>
|
inline bool
|
operator>=(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
{ return !(__x < __y); }
|
|
|
template<typename _IteratorL, typename _IteratorR>
|
inline auto
|
operator-(const move_iterator<_IteratorL>& __x,
|
const move_iterator<_IteratorR>& __y)
|
-> decltype(__x.base() - __y.base())
|
{ return __x.base() - __y.base(); }
|
|
template<typename _Iterator>
|
inline auto
|
operator-(const move_iterator<_Iterator>& __x,
|
const move_iterator<_Iterator>& __y)
|
-> decltype(__x.base() - __y.base())
|
{ return __x.base() - __y.base(); }
|
|
template<typename _Iterator>
|
inline move_iterator<_Iterator>
|
operator+(typename move_iterator<_Iterator>::difference_type __n,
|
const move_iterator<_Iterator>& __x)
|
{ return __x + __n; }
|
|
template<typename _Iterator>
|
inline move_iterator<_Iterator>
|
make_move_iterator(_Iterator __i)
|
{ return move_iterator<_Iterator>(__i); }
|
|
template<typename _Iterator, typename _ReturnType
|
= typename conditional<__move_if_noexcept_cond
|
<typename iterator_traits<_Iterator>::value_type>::value,
|
_Iterator, move_iterator<_Iterator>>::type>
|
inline _ReturnType
|
__make_move_if_noexcept_iterator(_Iterator __i)
|
{ return _ReturnType(__i); }
|
|
|
|
template<typename _Tp, typename _ReturnType
|
= typename conditional<__move_if_noexcept_cond<_Tp>::value,
|
const _Tp*, move_iterator<_Tp*>>::type>
|
inline _ReturnType
|
__make_move_if_noexcept_iterator(_Tp* __i)
|
{ return _ReturnType(__i); }
|
|
|
|
template<typename _Iterator>
|
auto
|
__niter_base(move_iterator<_Iterator> __it)
|
-> decltype(make_move_iterator(__niter_base(__it.base())))
|
{ return make_move_iterator(__niter_base(__it.base())); }
|
|
template<typename _Iterator>
|
struct __is_move_iterator<move_iterator<_Iterator> >
|
{
|
enum { __value = 1 };
|
typedef __true_type __type;
|
};
|
|
template<typename _Iterator>
|
auto
|
__miter_base(move_iterator<_Iterator> __it)
|
-> decltype(__miter_base(__it.base()))
|
{ return __miter_base(__it.base()); }
|
|
|
}
|
# 68 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/debug/debug.h" 1 3
|
# 48 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/debug/debug.h" 3
|
namespace std
|
{
|
namespace __debug { }
|
}
|
|
|
|
|
namespace __gnu_debug
|
{
|
using namespace std::__debug;
|
}
|
# 70 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/predefined_ops.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/predefined_ops.h" 3
|
namespace __gnu_cxx
|
{
|
namespace __ops
|
{
|
struct _Iter_less_iter
|
{
|
template<typename _Iterator1, typename _Iterator2>
|
|
bool
|
operator()(_Iterator1 __it1, _Iterator2 __it2) const
|
{ return *__it1 < *__it2; }
|
};
|
|
|
inline _Iter_less_iter
|
__iter_less_iter()
|
{ return _Iter_less_iter(); }
|
|
struct _Iter_less_val
|
{
|
template<typename _Iterator, typename _Value>
|
bool
|
operator()(_Iterator __it, _Value& __val) const
|
{ return *__it < __val; }
|
};
|
|
inline _Iter_less_val
|
__iter_less_val()
|
{ return _Iter_less_val(); }
|
|
inline _Iter_less_val
|
__iter_comp_val(_Iter_less_iter)
|
{ return _Iter_less_val(); }
|
|
struct _Val_less_iter
|
{
|
template<typename _Value, typename _Iterator>
|
bool
|
operator()(_Value& __val, _Iterator __it) const
|
{ return __val < *__it; }
|
};
|
|
inline _Val_less_iter
|
__val_less_iter()
|
{ return _Val_less_iter(); }
|
|
inline _Val_less_iter
|
__val_comp_iter(_Iter_less_iter)
|
{ return _Val_less_iter(); }
|
|
struct _Iter_equal_to_iter
|
{
|
template<typename _Iterator1, typename _Iterator2>
|
bool
|
operator()(_Iterator1 __it1, _Iterator2 __it2) const
|
{ return *__it1 == *__it2; }
|
};
|
|
inline _Iter_equal_to_iter
|
__iter_equal_to_iter()
|
{ return _Iter_equal_to_iter(); }
|
|
struct _Iter_equal_to_val
|
{
|
template<typename _Iterator, typename _Value>
|
bool
|
operator()(_Iterator __it, _Value& __val) const
|
{ return *__it == __val; }
|
};
|
|
inline _Iter_equal_to_val
|
__iter_equal_to_val()
|
{ return _Iter_equal_to_val(); }
|
|
inline _Iter_equal_to_val
|
__iter_comp_val(_Iter_equal_to_iter)
|
{ return _Iter_equal_to_val(); }
|
|
template<typename _Compare>
|
struct _Iter_comp_iter
|
{
|
_Compare _M_comp;
|
|
explicit
|
_Iter_comp_iter(_Compare __comp)
|
: _M_comp(__comp)
|
{ }
|
|
template<typename _Iterator1, typename _Iterator2>
|
|
bool
|
operator()(_Iterator1 __it1, _Iterator2 __it2)
|
{ return bool(_M_comp(*__it1, *__it2)); }
|
};
|
|
template<typename _Compare>
|
|
inline _Iter_comp_iter<_Compare>
|
__iter_comp_iter(_Compare __comp)
|
{ return _Iter_comp_iter<_Compare>(__comp); }
|
|
template<typename _Compare>
|
struct _Iter_comp_val
|
{
|
_Compare _M_comp;
|
|
explicit
|
_Iter_comp_val(_Compare __comp)
|
: _M_comp(__comp)
|
{ }
|
|
template<typename _Iterator, typename _Value>
|
bool
|
operator()(_Iterator __it, _Value& __val)
|
{ return bool(_M_comp(*__it, __val)); }
|
};
|
|
template<typename _Compare>
|
inline _Iter_comp_val<_Compare>
|
__iter_comp_val(_Compare __comp)
|
{ return _Iter_comp_val<_Compare>(__comp); }
|
|
template<typename _Compare>
|
inline _Iter_comp_val<_Compare>
|
__iter_comp_val(_Iter_comp_iter<_Compare> __comp)
|
{ return _Iter_comp_val<_Compare>(__comp._M_comp); }
|
|
template<typename _Compare>
|
struct _Val_comp_iter
|
{
|
_Compare _M_comp;
|
|
explicit
|
_Val_comp_iter(_Compare __comp)
|
: _M_comp(__comp)
|
{ }
|
|
template<typename _Value, typename _Iterator>
|
bool
|
operator()(_Value& __val, _Iterator __it)
|
{ return bool(_M_comp(__val, *__it)); }
|
};
|
|
template<typename _Compare>
|
inline _Val_comp_iter<_Compare>
|
__val_comp_iter(_Compare __comp)
|
{ return _Val_comp_iter<_Compare>(__comp); }
|
|
template<typename _Compare>
|
inline _Val_comp_iter<_Compare>
|
__val_comp_iter(_Iter_comp_iter<_Compare> __comp)
|
{ return _Val_comp_iter<_Compare>(__comp._M_comp); }
|
|
template<typename _Value>
|
struct _Iter_equals_val
|
{
|
_Value& _M_value;
|
|
explicit
|
_Iter_equals_val(_Value& __value)
|
: _M_value(__value)
|
{ }
|
|
template<typename _Iterator>
|
bool
|
operator()(_Iterator __it)
|
{ return *__it == _M_value; }
|
};
|
|
template<typename _Value>
|
inline _Iter_equals_val<_Value>
|
__iter_equals_val(_Value& __val)
|
{ return _Iter_equals_val<_Value>(__val); }
|
|
template<typename _Iterator1>
|
struct _Iter_equals_iter
|
{
|
_Iterator1 _M_it1;
|
|
explicit
|
_Iter_equals_iter(_Iterator1 __it1)
|
: _M_it1(__it1)
|
{ }
|
|
template<typename _Iterator2>
|
bool
|
operator()(_Iterator2 __it2)
|
{ return *__it2 == *_M_it1; }
|
};
|
|
template<typename _Iterator>
|
inline _Iter_equals_iter<_Iterator>
|
__iter_comp_iter(_Iter_equal_to_iter, _Iterator __it)
|
{ return _Iter_equals_iter<_Iterator>(__it); }
|
|
template<typename _Predicate>
|
struct _Iter_pred
|
{
|
_Predicate _M_pred;
|
|
explicit
|
_Iter_pred(_Predicate __pred)
|
: _M_pred(__pred)
|
{ }
|
|
template<typename _Iterator>
|
bool
|
operator()(_Iterator __it)
|
{ return bool(_M_pred(*__it)); }
|
};
|
|
template<typename _Predicate>
|
inline _Iter_pred<_Predicate>
|
__pred_iter(_Predicate __pred)
|
{ return _Iter_pred<_Predicate>(__pred); }
|
|
template<typename _Compare, typename _Value>
|
struct _Iter_comp_to_val
|
{
|
_Compare _M_comp;
|
_Value& _M_value;
|
|
_Iter_comp_to_val(_Compare __comp, _Value& __value)
|
: _M_comp(__comp), _M_value(__value)
|
{ }
|
|
template<typename _Iterator>
|
bool
|
operator()(_Iterator __it)
|
{ return bool(_M_comp(*__it, _M_value)); }
|
};
|
|
template<typename _Compare, typename _Value>
|
_Iter_comp_to_val<_Compare, _Value>
|
__iter_comp_val(_Compare __comp, _Value &__val)
|
{ return _Iter_comp_to_val<_Compare, _Value>(__comp, __val); }
|
|
template<typename _Compare, typename _Iterator1>
|
struct _Iter_comp_to_iter
|
{
|
_Compare _M_comp;
|
_Iterator1 _M_it1;
|
|
_Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1)
|
: _M_comp(__comp), _M_it1(__it1)
|
{ }
|
|
template<typename _Iterator2>
|
bool
|
operator()(_Iterator2 __it2)
|
{ return bool(_M_comp(*__it2, *_M_it1)); }
|
};
|
|
template<typename _Compare, typename _Iterator>
|
inline _Iter_comp_to_iter<_Compare, _Iterator>
|
__iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it)
|
{ return _Iter_comp_to_iter<_Compare, _Iterator>(__comp._M_comp, __it); }
|
|
template<typename _Predicate>
|
struct _Iter_negate
|
{
|
_Predicate _M_pred;
|
|
explicit
|
_Iter_negate(_Predicate __pred)
|
: _M_pred(__pred)
|
{ }
|
|
template<typename _Iterator>
|
bool
|
operator()(_Iterator __it)
|
{ return !bool(_M_pred(*__it)); }
|
};
|
|
template<typename _Predicate>
|
inline _Iter_negate<_Predicate>
|
__negate(_Iter_pred<_Predicate> __pred)
|
{ return _Iter_negate<_Predicate>(__pred._M_pred); }
|
|
}
|
}
|
# 72 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 118 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _ForwardIterator1, typename _ForwardIterator2>
|
inline void
|
iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
|
{
|
# 148 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
swap(*__a, *__b);
|
|
}
|
# 164 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _ForwardIterator1, typename _ForwardIterator2>
|
_ForwardIterator2
|
swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
|
_ForwardIterator2 __first2)
|
{
|
|
|
|
|
|
;
|
|
for (; __first1 != __last1; ++__first1, (void)++__first2)
|
std::iter_swap(__first1, __first2);
|
return __first2;
|
}
|
# 192 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 216 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 240 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 262 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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>
|
inline _Iterator
|
__niter_base(_Iterator __it)
|
{ return __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, (void)++__first)
|
*__result = *__first;
|
return __result;
|
}
|
};
|
|
|
template<typename _Category>
|
struct __copy_move<true, false, _Category>
|
{
|
template<typename _II, typename _OI>
|
static _OI
|
__copy_m(_II __first, _II __last, _OI __result)
|
{
|
for (; __first != __last; ++__result, (void)++__first)
|
*__result = std::move(*__first);
|
return __result;
|
}
|
};
|
|
|
template<>
|
struct __copy_move<false, false, random_access_iterator_tag>
|
{
|
template<typename _II, typename _OI>
|
static _OI
|
__copy_m(_II __first, _II __last, _OI __result)
|
{
|
typedef typename iterator_traits<_II>::difference_type _Distance;
|
for(_Distance __n = __last - __first; __n > 0; --__n)
|
{
|
*__result = *__first;
|
++__first;
|
++__result;
|
}
|
return __result;
|
}
|
};
|
|
|
template<>
|
struct __copy_move<true, 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 = std::move(*__first);
|
++__first;
|
++__result;
|
}
|
return __result;
|
}
|
};
|
|
|
template<bool _IsMove>
|
struct __copy_move<_IsMove, true, random_access_iterator_tag>
|
{
|
template<typename _Tp>
|
static _Tp*
|
__copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
|
{
|
|
using __assignable = conditional<_IsMove,
|
is_move_assignable<_Tp>,
|
is_copy_assignable<_Tp>>;
|
|
static_assert( __assignable::type::value, "type is not assignable" );
|
|
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)));
|
}
|
# 444 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 477 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _II, typename _OI>
|
inline _OI
|
move(_II __first, _II __last, _OI __result)
|
{
|
|
|
|
|
;
|
|
return std::__copy_move_a2<true>(std::__miter_base(__first),
|
std::__miter_base(__last), __result);
|
}
|
|
|
|
|
|
|
template<bool, bool, typename>
|
struct __copy_move_backward
|
{
|
template<typename _BI1, typename _BI2>
|
static _BI2
|
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
|
{
|
while (__first != __last)
|
*--__result = *--__last;
|
return __result;
|
}
|
};
|
|
|
template<typename _Category>
|
struct __copy_move_backward<true, false, _Category>
|
{
|
template<typename _BI1, typename _BI2>
|
static _BI2
|
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
|
{
|
while (__first != __last)
|
*--__result = std::move(*--__last);
|
return __result;
|
}
|
};
|
|
|
template<>
|
struct __copy_move_backward<false, false, random_access_iterator_tag>
|
{
|
template<typename _BI1, typename _BI2>
|
static _BI2
|
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
|
{
|
typename iterator_traits<_BI1>::difference_type __n;
|
for (__n = __last - __first; __n > 0; --__n)
|
*--__result = *--__last;
|
return __result;
|
}
|
};
|
|
|
template<>
|
struct __copy_move_backward<true, 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 = std::move(*--__last);
|
return __result;
|
}
|
};
|
|
|
template<bool _IsMove>
|
struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
|
{
|
template<typename _Tp>
|
static _Tp*
|
__copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
|
{
|
|
using __assignable = conditional<_IsMove,
|
is_move_assignable<_Tp>,
|
is_copy_assignable<_Tp>>;
|
|
static_assert( __assignable::type::value, "type is not assignable" );
|
|
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)));
|
}
|
# 620 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 656 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _BI1, typename _BI2>
|
inline _BI2
|
move_backward(_BI1 __first, _BI1 __last, _BI2 __result)
|
{
|
|
|
|
|
|
|
;
|
|
return std::__copy_move_backward_a2<true>(std::__miter_base(__first),
|
std::__miter_base(__last),
|
__result);
|
}
|
|
|
|
|
|
|
template<typename _ForwardIterator, typename _Tp>
|
inline typename
|
__gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
|
__fill_a(_ForwardIterator __first, _ForwardIterator __last,
|
const _Tp& __value)
|
{
|
for (; __first != __last; ++__first)
|
*__first = __value;
|
}
|
|
template<typename _ForwardIterator, typename _Tp>
|
inline typename
|
__gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
|
__fill_a(_ForwardIterator __first, _ForwardIterator __last,
|
const _Tp& __value)
|
{
|
const _Tp __tmp = __value;
|
for (; __first != __last; ++__first)
|
*__first = __tmp;
|
}
|
|
|
template<typename _Tp>
|
inline typename
|
__gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
|
__fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
|
{
|
const _Tp __tmp = __c;
|
if (const size_t __len = __last - __first)
|
__builtin_memset(__first, static_cast<unsigned char>(__tmp), __len);
|
}
|
# 722 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 782 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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, (void)++__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)
|
{
|
if (const size_t __len = (__last1 - __first1))
|
return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len);
|
return true;
|
}
|
};
|
|
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<typename _II1, typename _II2, typename _Compare>
|
bool
|
__lexicographical_compare_impl(_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, (void)++__first2)
|
{
|
if (__comp(__first1, __first2))
|
return true;
|
if (__comp(__first2, __first1))
|
return false;
|
}
|
return __first1 == __last1 && __first2 != __last2;
|
}
|
|
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)
|
{
|
return std::__lexicographical_compare_impl(__first1, __last1,
|
__first2, __last2,
|
__gnu_cxx::__ops::__iter_less_iter());
|
}
|
|
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;
|
if (const size_t __len = std::min(__len1, __len2))
|
if (int __result = __builtin_memcmp(__first1, __first2, __len))
|
return __result < 0;
|
return __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);
|
}
|
|
template<typename _ForwardIterator, typename _Tp, typename _Compare>
|
_ForwardIterator
|
__lower_bound(_ForwardIterator __first, _ForwardIterator __last,
|
const _Tp& __val, _Compare __comp)
|
{
|
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;
|
}
|
# 982 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _ForwardIterator, typename _Tp>
|
inline _ForwardIterator
|
lower_bound(_ForwardIterator __first, _ForwardIterator __last,
|
const _Tp& __val)
|
{
|
|
|
|
|
;
|
|
return std::__lower_bound(__first, __last, __val,
|
__gnu_cxx::__ops::__iter_less_val());
|
}
|
|
|
|
inline constexpr int
|
__lg(int __n)
|
{ return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
|
|
inline constexpr unsigned
|
__lg(unsigned __n)
|
{ return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
|
|
inline constexpr long
|
__lg(long __n)
|
{ return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
|
|
inline constexpr unsigned long
|
__lg(unsigned long __n)
|
{ return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
|
|
inline constexpr long long
|
__lg(long long __n)
|
{ return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
|
|
inline constexpr unsigned long long
|
__lg(unsigned long long __n)
|
{ return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
|
# 1039 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 1071 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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, (void)++__first2)
|
if (!bool(__binary_pred(*__first1, *__first2)))
|
return false;
|
return true;
|
}
|
# 1201 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _II1, typename _II2>
|
inline bool
|
lexicographical_compare(_II1 __first1, _II1 __last1,
|
_II2 __first2, _II2 __last2)
|
{
|
# 1215 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 1237 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _II1, typename _II2, typename _Compare>
|
inline bool
|
lexicographical_compare(_II1 __first1, _II1 __last1,
|
_II2 __first2, _II2 __last2, _Compare __comp)
|
{
|
|
|
|
;
|
;
|
|
return std::__lexicographical_compare_impl
|
(__first1, __last1, __first2, __last2,
|
__gnu_cxx::__ops::__iter_comp_iter(__comp));
|
}
|
|
template<typename _InputIterator1, typename _InputIterator2,
|
typename _BinaryPredicate>
|
pair<_InputIterator1, _InputIterator2>
|
__mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
|
_InputIterator2 __first2, _BinaryPredicate __binary_pred)
|
{
|
while (__first1 != __last1 && __binary_pred(__first1, __first2))
|
{
|
++__first1;
|
++__first2;
|
}
|
return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
|
}
|
# 1280 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _InputIterator1, typename _InputIterator2>
|
inline pair<_InputIterator1, _InputIterator2>
|
mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
|
_InputIterator2 __first2)
|
{
|
|
|
|
|
|
|
;
|
|
return std::__mismatch(__first1, __last1, __first2,
|
__gnu_cxx::__ops::__iter_equal_to_iter());
|
}
|
# 1313 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
template<typename _InputIterator1, typename _InputIterator2,
|
typename _BinaryPredicate>
|
inline pair<_InputIterator1, _InputIterator2>
|
mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
|
_InputIterator2 __first2, _BinaryPredicate __binary_pred)
|
{
|
|
|
|
;
|
|
return std::__mismatch(__first1, __last1, __first2,
|
__gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
|
}
|
# 1414 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_algobase.h" 3
|
}
|
# 61 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocator.h" 1 3
|
# 46 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocator.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++allocator.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++allocator.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/new_allocator.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/new_allocator.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/new" 1 3
|
# 38 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/new" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 3
|
|
#pragma GCC visibility push(default)
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_lockfree_defines.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_lockfree_defines.h" 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 2 3
|
|
|
extern "C++" {
|
|
namespace std
|
{
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 3
|
class exception
|
{
|
public:
|
exception() noexcept { }
|
virtual ~exception() noexcept;
|
|
|
|
virtual const char*
|
what() const noexcept;
|
};
|
|
|
|
class bad_exception : public exception
|
{
|
public:
|
bad_exception() noexcept { }
|
|
|
|
virtual ~bad_exception() noexcept;
|
|
|
virtual const char*
|
what() const noexcept;
|
};
|
|
|
typedef void (*terminate_handler) ();
|
|
|
typedef void (*unexpected_handler) ();
|
|
|
terminate_handler set_terminate(terminate_handler) noexcept;
|
|
|
|
terminate_handler get_terminate() noexcept;
|
|
|
|
|
void terminate() noexcept __attribute__ ((__noreturn__));
|
|
|
unexpected_handler set_unexpected(unexpected_handler) noexcept;
|
|
|
|
unexpected_handler get_unexpected() noexcept;
|
|
|
|
|
void unexpected() __attribute__ ((__noreturn__));
|
# 131 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 3
|
bool uncaught_exception() noexcept __attribute__ ((__pure__));
|
# 140 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 3
|
}
|
|
namespace __gnu_cxx
|
{
|
# 162 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 3
|
void __verbose_terminate_handler();
|
|
|
}
|
|
}
|
|
#pragma GCC visibility pop
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/exception_ptr.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/exception_ptr.h" 3
|
#pragma GCC visibility push(default)
|
# 45 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/exception_ptr.h" 3
|
extern "C++" {
|
|
namespace std
|
{
|
class type_info;
|
|
|
|
|
|
namespace __exception_ptr
|
{
|
class exception_ptr;
|
}
|
|
using __exception_ptr::exception_ptr;
|
|
|
|
|
|
exception_ptr current_exception() noexcept;
|
|
|
void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__));
|
|
namespace __exception_ptr
|
{
|
using std::rethrow_exception;
|
|
|
|
|
|
class exception_ptr
|
{
|
void* _M_exception_object;
|
|
explicit exception_ptr(void* __e) noexcept;
|
|
void _M_addref() noexcept;
|
void _M_release() noexcept;
|
|
void *_M_get() const noexcept __attribute__ ((__pure__));
|
|
friend exception_ptr std::current_exception() noexcept;
|
friend void std::rethrow_exception(exception_ptr);
|
|
public:
|
exception_ptr() noexcept;
|
|
exception_ptr(const exception_ptr&) noexcept;
|
|
|
exception_ptr(nullptr_t) noexcept
|
: _M_exception_object(0)
|
{ }
|
|
exception_ptr(exception_ptr&& __o) noexcept
|
: _M_exception_object(__o._M_exception_object)
|
{ __o._M_exception_object = 0; }
|
# 115 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/exception_ptr.h" 3
|
exception_ptr&
|
operator=(const exception_ptr&) noexcept;
|
|
|
exception_ptr&
|
operator=(exception_ptr&& __o) noexcept
|
{
|
exception_ptr(static_cast<exception_ptr&&>(__o)).swap(*this);
|
return *this;
|
}
|
|
|
~exception_ptr() noexcept;
|
|
void
|
swap(exception_ptr&) noexcept;
|
# 142 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/exception_ptr.h" 3
|
explicit operator bool() const
|
{ return _M_exception_object; }
|
|
|
friend bool
|
operator==(const exception_ptr&, const exception_ptr&)
|
noexcept __attribute__ ((__pure__));
|
|
const class std::type_info*
|
__cxa_exception_type() const noexcept
|
__attribute__ ((__pure__));
|
};
|
|
bool
|
operator==(const exception_ptr&, const exception_ptr&)
|
noexcept __attribute__ ((__pure__));
|
|
bool
|
operator!=(const exception_ptr&, const exception_ptr&)
|
noexcept __attribute__ ((__pure__));
|
|
inline void
|
swap(exception_ptr& __lhs, exception_ptr& __rhs)
|
{ __lhs.swap(__rhs); }
|
|
}
|
|
|
|
template<typename _Ex>
|
exception_ptr
|
make_exception_ptr(_Ex __ex) noexcept
|
{
|
|
try
|
{
|
throw __ex;
|
}
|
catch(...)
|
{
|
return current_exception();
|
}
|
|
|
|
}
|
|
|
|
|
|
template<typename _Ex>
|
exception_ptr
|
copy_exception(_Ex __ex) noexcept __attribute__ ((__deprecated__));
|
|
template<typename _Ex>
|
exception_ptr
|
copy_exception(_Ex __ex) noexcept
|
{ return std::make_exception_ptr<_Ex>(__ex); }
|
|
|
}
|
|
}
|
|
#pragma GCC visibility pop
|
# 173 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/nested_exception.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/nested_exception.h" 3
|
#pragma GCC visibility push(default)
|
# 48 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/nested_exception.h" 3
|
extern "C++" {
|
|
namespace std
|
{
|
|
|
|
|
|
|
class nested_exception
|
{
|
exception_ptr _M_ptr;
|
|
public:
|
nested_exception() noexcept : _M_ptr(current_exception()) { }
|
|
nested_exception(const nested_exception&) noexcept = default;
|
|
nested_exception& operator=(const nested_exception&) noexcept = default;
|
|
virtual ~nested_exception() noexcept;
|
|
[[noreturn]]
|
void
|
rethrow_nested() const
|
{
|
if (_M_ptr)
|
rethrow_exception(_M_ptr);
|
std::terminate();
|
}
|
|
exception_ptr
|
nested_ptr() const noexcept
|
{ return _M_ptr; }
|
};
|
|
template<typename _Except>
|
struct _Nested_exception : public _Except, public nested_exception
|
{
|
explicit _Nested_exception(const _Except& __ex)
|
: _Except(__ex)
|
{ }
|
|
explicit _Nested_exception(_Except&& __ex)
|
: _Except(static_cast<_Except&&>(__ex))
|
{ }
|
};
|
|
|
|
|
template<typename _Tp>
|
inline void
|
__throw_with_nested_impl(_Tp&& __t, true_type)
|
{
|
using _Up = typename remove_reference<_Tp>::type;
|
throw _Nested_exception<_Up>{std::forward<_Tp>(__t)};
|
}
|
|
template<typename _Tp>
|
inline void
|
__throw_with_nested_impl(_Tp&& __t, false_type)
|
{ throw std::forward<_Tp>(__t); }
|
|
|
|
template<typename _Tp>
|
[[noreturn]]
|
inline void
|
throw_with_nested(_Tp&& __t)
|
{
|
using _Up = typename decay<_Tp>::type;
|
using _CopyConstructible
|
= __and_<is_copy_constructible<_Up>, is_move_constructible<_Up>>;
|
static_assert(_CopyConstructible::value,
|
"throw_with_nested argument must be CopyConstructible");
|
using __nest = __and_<is_class<_Up>, __bool_constant<!__is_final(_Up)>,
|
__not_<is_base_of<nested_exception, _Up>>>;
|
std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{});
|
}
|
|
|
template<typename _Tp>
|
using __rethrow_if_nested_cond = typename enable_if<
|
__and_<is_polymorphic<_Tp>,
|
__or_<__not_<is_base_of<nested_exception, _Tp>>,
|
is_convertible<_Tp*, nested_exception*>>>::value
|
>::type;
|
|
|
template<typename _Ex>
|
inline __rethrow_if_nested_cond<_Ex>
|
__rethrow_if_nested_impl(const _Ex* __ptr)
|
{
|
if (auto __ne_ptr = dynamic_cast<const nested_exception*>(__ptr))
|
__ne_ptr->rethrow_nested();
|
}
|
|
|
inline void
|
__rethrow_if_nested_impl(const void*)
|
{ }
|
|
|
template<typename _Ex>
|
inline void
|
rethrow_if_nested(const _Ex& __ex)
|
{ std::__rethrow_if_nested_impl(std::__addressof(__ex)); }
|
|
|
}
|
|
}
|
|
|
|
#pragma GCC visibility pop
|
# 174 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/exception" 2 3
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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();
|
};
|
|
|
class bad_array_new_length : public bad_alloc
|
{
|
public:
|
bad_array_new_length() throw() { };
|
|
|
|
virtual ~bad_array_new_length() throw();
|
|
|
virtual const char* what() const throw();
|
};
|
|
|
struct nothrow_t
|
{
|
|
explicit nothrow_t() = default;
|
|
};
|
|
extern const nothrow_t nothrow;
|
|
|
|
typedef void (*new_handler)();
|
|
|
|
new_handler set_new_handler(new_handler) throw();
|
|
|
|
new_handler get_new_handler() noexcept;
|
|
}
|
# 116 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/new" 3
|
void* operator new(std::size_t)
|
__attribute__((__externally_visible__));
|
void* operator new[](std::size_t)
|
__attribute__((__externally_visible__));
|
void operator delete(void*) noexcept
|
__attribute__((__externally_visible__));
|
void operator delete[](void*) noexcept
|
__attribute__((__externally_visible__));
|
|
|
|
|
|
|
void* operator new(std::size_t, const std::nothrow_t&) noexcept
|
__attribute__((__externally_visible__));
|
void* operator new[](std::size_t, const std::nothrow_t&) noexcept
|
__attribute__((__externally_visible__));
|
void operator delete(void*, const std::nothrow_t&) noexcept
|
__attribute__((__externally_visible__));
|
void operator delete[](void*, const std::nothrow_t&) noexcept
|
__attribute__((__externally_visible__));
|
# 146 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/new" 3
|
inline void* operator new(std::size_t, void* __p) noexcept
|
{ return __p; }
|
inline void* operator new[](std::size_t, void* __p) noexcept
|
{ return __p; }
|
|
|
inline void operator delete (void*, void*) noexcept { }
|
inline void operator delete[](void*, void*) noexcept { }
|
|
}
|
|
#pragma GCC visibility pop
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/new_allocator.h" 2 3
|
|
|
|
|
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
using std::size_t;
|
using std::ptrdiff_t;
|
# 57 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; };
|
|
|
|
|
typedef std::true_type propagate_on_container_move_assignment;
|
|
|
new_allocator() noexcept { }
|
|
new_allocator(const new_allocator&) noexcept { }
|
|
template<typename _Tp1>
|
new_allocator(const new_allocator<_Tp1>&) noexcept { }
|
|
~new_allocator() noexcept { }
|
|
pointer
|
address(reference __x) const noexcept
|
{ return std::__addressof(__x); }
|
|
const_pointer
|
address(const_reference __x) const noexcept
|
{ 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 noexcept
|
{ return size_t(-1) / sizeof(_Tp); }
|
|
|
template<typename _Up, typename... _Args>
|
void
|
construct(_Up* __p, _Args&&... __args)
|
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
|
|
template<typename _Up>
|
void
|
destroy(_Up* __p) { __p->~_Up(); }
|
# 135 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/new_allocator.h" 3
|
};
|
|
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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++allocator.h" 2 3
|
|
|
namespace std
|
{
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++allocator.h" 3
|
template<typename _Tp>
|
using __allocator_base = __gnu_cxx::new_allocator<_Tp>;
|
}
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocator.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/memoryfwd.h" 1 3
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/memoryfwd.h" 3
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/memoryfwd.h" 3
|
template<typename>
|
class allocator;
|
|
template<>
|
class allocator<void>;
|
|
|
template<typename, typename>
|
struct uses_allocator;
|
|
|
|
|
}
|
# 48 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocator.h" 2 3
|
# 57 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocator.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; };
|
|
|
|
|
typedef true_type propagate_on_container_move_assignment;
|
|
typedef true_type is_always_equal;
|
|
template<typename _Up, typename... _Args>
|
void
|
construct(_Up* __p, _Args&&... __args)
|
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
|
|
template<typename _Up>
|
void
|
destroy(_Up* __p) { __p->~_Up(); }
|
|
};
|
# 107 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocator.h" 3
|
template<typename _Tp>
|
class allocator: public __allocator_base<_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; };
|
|
|
|
|
typedef true_type propagate_on_container_move_assignment;
|
|
typedef true_type is_always_equal;
|
|
|
allocator() throw() { }
|
|
allocator(const allocator& __a) throw()
|
: __allocator_base<_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>&)
|
noexcept
|
{ return true; }
|
|
template<typename _Tp>
|
inline bool
|
operator==(const allocator<_Tp>&, const allocator<_Tp>&)
|
noexcept
|
{ return true; }
|
|
template<typename _T1, typename _T2>
|
inline bool
|
operator!=(const allocator<_T1>&, const allocator<_T2>&)
|
noexcept
|
{ return false; }
|
|
template<typename _Tp>
|
inline bool
|
operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
|
noexcept
|
{ 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&) noexcept { } };
|
|
template<typename _Alloc>
|
struct __alloc_swap<_Alloc, false>
|
{
|
static void
|
_S_do_it(_Alloc& __one, _Alloc& __two) noexcept
|
{
|
|
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; }
|
};
|
|
|
template<typename _Tp, bool
|
= __or_<is_copy_constructible<typename _Tp::value_type>,
|
is_nothrow_move_constructible<typename _Tp::value_type>>::value>
|
struct __shrink_to_fit_aux
|
{ static bool _S_do_it(_Tp&) noexcept { return false; } };
|
|
template<typename _Tp>
|
struct __shrink_to_fit_aux<_Tp, true>
|
{
|
static bool
|
_S_do_it(_Tp& __c) noexcept
|
{
|
|
try
|
{
|
_Tp(__make_move_if_noexcept_iterator(__c.begin()),
|
__make_move_if_noexcept_iterator(__c.end()),
|
__c.get_allocator()).swap(__c);
|
return true;
|
}
|
catch(...)
|
{ return false; }
|
|
|
|
}
|
};
|
|
|
|
}
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_construct.h" 1 3
|
# 61 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_construct.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/alloc_traits.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/alloc_traits.h" 3
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 1 3
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
struct __allocator_traits_base
|
{
|
template<typename _Tp, typename _Up, typename = void>
|
struct __rebind : __replace_first_arg<_Tp, _Up> { };
|
|
template<typename _Tp, typename _Up>
|
struct __rebind<_Tp, _Up,
|
__void_t<typename _Tp::template rebind<_Up>::other>>
|
{ using type = typename _Tp::template rebind<_Up>::other; };
|
|
protected:
|
template<typename _Tp>
|
using __pointer = typename _Tp::pointer;
|
template<typename _Tp>
|
using __c_pointer = typename _Tp::const_pointer;
|
template<typename _Tp>
|
using __v_pointer = typename _Tp::void_pointer;
|
template<typename _Tp>
|
using __cv_pointer = typename _Tp::const_void_pointer;
|
template<typename _Tp>
|
using __pocca = typename _Tp::propagate_on_container_copy_assignment;
|
template<typename _Tp>
|
using __pocma = typename _Tp::propagate_on_container_move_assignment;
|
template<typename _Tp>
|
using __pocs = typename _Tp::propagate_on_container_swap;
|
template<typename _Tp>
|
using __equal = typename _Tp::is_always_equal;
|
};
|
|
template<typename _Alloc, typename _Up>
|
using __alloc_rebind
|
= typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type;
|
|
|
|
|
|
template<typename _Alloc>
|
struct allocator_traits : __allocator_traits_base
|
{
|
|
typedef _Alloc allocator_type;
|
|
typedef typename _Alloc::value_type value_type;
|
|
|
|
|
|
|
using pointer = __detected_or_t<value_type*, __pointer, _Alloc>;
|
|
private:
|
|
template<template<typename> class _Func, typename _Tp, typename = void>
|
struct _Ptr
|
{
|
using type = typename pointer_traits<pointer>::template rebind<_Tp>;
|
};
|
|
template<template<typename> class _Func, typename _Tp>
|
struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>>
|
{
|
using type = _Func<_Alloc>;
|
};
|
|
|
template<typename _A2, typename _PtrT, typename = void>
|
struct _Diff
|
{ using type = typename pointer_traits<_PtrT>::difference_type; };
|
|
template<typename _A2, typename _PtrT>
|
struct _Diff<_A2, _PtrT, __void_t<typename _A2::difference_type>>
|
{ using type = typename _A2::difference_type; };
|
|
|
template<typename _A2, typename _DiffT, typename = void>
|
struct _Size : make_unsigned<_DiffT> { };
|
|
template<typename _A2, typename _DiffT>
|
struct _Size<_A2, _DiffT, __void_t<typename _A2::size_type>>
|
{ using type = typename _A2::size_type; };
|
|
public:
|
|
|
|
|
|
|
using const_pointer = typename _Ptr<__c_pointer, const value_type>::type;
|
|
|
|
|
|
|
|
using void_pointer = typename _Ptr<__v_pointer, void>::type;
|
|
|
|
|
|
|
|
using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type;
|
|
|
|
|
|
|
|
using difference_type = typename _Diff<_Alloc, pointer>::type;
|
|
|
|
|
|
|
|
using size_type = typename _Size<_Alloc, difference_type>::type;
|
|
|
|
|
|
|
|
using propagate_on_container_copy_assignment
|
= __detected_or_t<false_type, __pocca, _Alloc>;
|
|
|
|
|
|
|
|
using propagate_on_container_move_assignment
|
= __detected_or_t<false_type, __pocma, _Alloc>;
|
|
|
|
|
|
|
|
using propagate_on_container_swap
|
= __detected_or_t<false_type, __pocs, _Alloc>;
|
|
|
|
|
|
|
|
using is_always_equal
|
= __detected_or_t<typename is_empty<_Alloc>::type, __equal, _Alloc>;
|
|
template<typename _Tp>
|
using rebind_alloc = __alloc_rebind<_Alloc, _Tp>;
|
template<typename _Tp>
|
using rebind_traits = allocator_traits<rebind_alloc<_Tp>>;
|
|
private:
|
template<typename _Alloc2>
|
static auto
|
_S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int)
|
-> decltype(__a.allocate(__n, __hint))
|
{ return __a.allocate(__n, __hint); }
|
|
template<typename _Alloc2>
|
static pointer
|
_S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...)
|
{ return __a.allocate(__n); }
|
|
template<typename _Tp, typename... _Args>
|
struct __construct_helper
|
{
|
template<typename _Alloc2,
|
typename = decltype(std::declval<_Alloc2*>()->construct(
|
std::declval<_Tp*>(), std::declval<_Args>()...))>
|
static true_type __test(int);
|
|
template<typename>
|
static false_type __test(...);
|
|
using type = decltype(__test<_Alloc>(0));
|
};
|
|
template<typename _Tp, typename... _Args>
|
using __has_construct
|
= typename __construct_helper<_Tp, _Args...>::type;
|
|
template<typename _Tp, typename... _Args>
|
static _Require<__has_construct<_Tp, _Args...>>
|
_S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args)
|
{ __a.construct(__p, std::forward<_Args>(__args)...); }
|
|
template<typename _Tp, typename... _Args>
|
static
|
_Require<__and_<__not_<__has_construct<_Tp, _Args...>>,
|
is_constructible<_Tp, _Args...>>>
|
_S_construct(_Alloc&, _Tp* __p, _Args&&... __args)
|
{ ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); }
|
|
template<typename _Alloc2, typename _Tp>
|
static auto
|
_S_destroy(_Alloc2& __a, _Tp* __p, int)
|
-> decltype(__a.destroy(__p))
|
{ __a.destroy(__p); }
|
|
template<typename _Alloc2, typename _Tp>
|
static void
|
_S_destroy(_Alloc2&, _Tp* __p, ...)
|
{ __p->~_Tp(); }
|
|
template<typename _Alloc2>
|
static auto
|
_S_max_size(_Alloc2& __a, int)
|
-> decltype(__a.max_size())
|
{ return __a.max_size(); }
|
|
template<typename _Alloc2>
|
static size_type
|
_S_max_size(_Alloc2&, ...)
|
{
|
|
|
return __gnu_cxx::__numeric_traits<size_type>::__max
|
/ sizeof(value_type);
|
}
|
|
template<typename _Alloc2>
|
static auto
|
_S_select(_Alloc2& __a, int)
|
-> decltype(__a.select_on_container_copy_construction())
|
{ return __a.select_on_container_copy_construction(); }
|
|
template<typename _Alloc2>
|
static _Alloc2
|
_S_select(_Alloc2& __a, ...)
|
{ return __a; }
|
|
public:
|
# 299 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static pointer
|
allocate(_Alloc& __a, size_type __n)
|
{ return __a.allocate(__n); }
|
# 314 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static pointer
|
allocate(_Alloc& __a, size_type __n, const_void_pointer __hint)
|
{ return _S_allocate(__a, __n, __hint, 0); }
|
# 326 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static void
|
deallocate(_Alloc& __a, pointer __p, size_type __n)
|
{ __a.deallocate(__p, __n); }
|
# 341 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
template<typename _Tp, typename... _Args>
|
static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args)
|
-> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...))
|
{ _S_construct(__a, __p, std::forward<_Args>(__args)...); }
|
# 354 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
template<typename _Tp>
|
static void destroy(_Alloc& __a, _Tp* __p)
|
{ _S_destroy(__a, __p, 0); }
|
# 366 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static size_type max_size(const _Alloc& __a) noexcept
|
{ return _S_max_size(__a, 0); }
|
# 377 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static _Alloc
|
select_on_container_copy_construction(const _Alloc& __rhs)
|
{ return _S_select(__rhs, 0); }
|
};
|
|
|
template<typename _Tp>
|
struct allocator_traits<allocator<_Tp>>
|
{
|
|
using allocator_type = allocator<_Tp>;
|
|
using value_type = _Tp;
|
|
|
using pointer = _Tp*;
|
|
|
using const_pointer = const _Tp*;
|
|
|
using void_pointer = void*;
|
|
|
using const_void_pointer = const void*;
|
|
|
using difference_type = std::ptrdiff_t;
|
|
|
using size_type = std::size_t;
|
|
|
using propagate_on_container_copy_assignment = false_type;
|
|
|
using propagate_on_container_move_assignment = true_type;
|
|
|
using propagate_on_container_swap = false_type;
|
|
|
using is_always_equal = true_type;
|
|
template<typename _Up>
|
using rebind_alloc = allocator<_Up>;
|
|
template<typename _Up>
|
using rebind_traits = allocator_traits<allocator<_Up>>;
|
# 434 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static pointer
|
allocate(allocator_type& __a, size_type __n)
|
{ return __a.allocate(__n); }
|
# 448 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static pointer
|
allocate(allocator_type& __a, size_type __n, const_void_pointer __hint)
|
{ return __a.allocate(__n, __hint); }
|
# 460 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
static void
|
deallocate(allocator_type& __a, pointer __p, size_type __n)
|
{ __a.deallocate(__p, __n); }
|
# 472 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
template<typename _Up, typename... _Args>
|
static void
|
construct(allocator_type& __a, _Up* __p, _Args&&... __args)
|
{ __a.construct(__p, std::forward<_Args>(__args)...); }
|
# 484 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/alloc_traits.h" 3
|
template<typename _Up>
|
static void
|
destroy(allocator_type& __a, _Up* __p)
|
{ __a.destroy(__p); }
|
|
|
|
|
|
|
static size_type
|
max_size(const allocator_type& __a) noexcept
|
{ return __a.max_size(); }
|
|
|
|
|
|
|
static allocator_type
|
select_on_container_copy_construction(const allocator_type& __rhs)
|
{ return __rhs; }
|
};
|
|
|
template<typename _Alloc>
|
inline void
|
__do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type)
|
{ __one = __two; }
|
|
template<typename _Alloc>
|
inline void
|
__do_alloc_on_copy(_Alloc&, const _Alloc&, false_type)
|
{ }
|
|
template<typename _Alloc>
|
inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two)
|
{
|
typedef allocator_traits<_Alloc> __traits;
|
typedef typename __traits::propagate_on_container_copy_assignment __pocca;
|
__do_alloc_on_copy(__one, __two, __pocca());
|
}
|
|
template<typename _Alloc>
|
inline _Alloc __alloc_on_copy(const _Alloc& __a)
|
{
|
typedef allocator_traits<_Alloc> __traits;
|
return __traits::select_on_container_copy_construction(__a);
|
}
|
|
template<typename _Alloc>
|
inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type)
|
{ __one = std::move(__two); }
|
|
template<typename _Alloc>
|
inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type)
|
{ }
|
|
template<typename _Alloc>
|
inline void __alloc_on_move(_Alloc& __one, _Alloc& __two)
|
{
|
typedef allocator_traits<_Alloc> __traits;
|
typedef typename __traits::propagate_on_container_move_assignment __pocma;
|
__do_alloc_on_move(__one, __two, __pocma());
|
}
|
|
template<typename _Alloc>
|
inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type)
|
{
|
using std::swap;
|
swap(__one, __two);
|
}
|
|
template<typename _Alloc>
|
inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type)
|
{ }
|
|
template<typename _Alloc>
|
inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two)
|
{
|
typedef allocator_traits<_Alloc> __traits;
|
typedef typename __traits::propagate_on_container_swap __pocs;
|
__do_alloc_on_swap(__one, __two, __pocs());
|
}
|
|
template<typename _Alloc>
|
class __is_copy_insertable_impl
|
{
|
typedef allocator_traits<_Alloc> _Traits;
|
|
template<typename _Up, typename
|
= decltype(_Traits::construct(std::declval<_Alloc&>(),
|
std::declval<_Up*>(),
|
std::declval<const _Up&>()))>
|
static true_type
|
_M_select(int);
|
|
template<typename _Up>
|
static false_type
|
_M_select(...);
|
|
public:
|
typedef decltype(_M_select<typename _Alloc::value_type>(0)) type;
|
};
|
|
|
template<typename _Alloc>
|
struct __is_copy_insertable
|
: __is_copy_insertable_impl<_Alloc>::type
|
{ };
|
|
|
template<typename _Tp>
|
struct __is_copy_insertable<allocator<_Tp>>
|
: is_copy_constructible<_Tp>
|
{ };
|
|
|
}
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/alloc_traits.h" 2 3
|
|
|
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
template<typename _Alloc>
|
struct __alloc_traits
|
|
: std::allocator_traits<_Alloc>
|
|
{
|
typedef _Alloc allocator_type;
|
|
typedef std::allocator_traits<_Alloc> _Base_type;
|
typedef typename _Base_type::value_type value_type;
|
typedef typename _Base_type::pointer pointer;
|
typedef typename _Base_type::const_pointer const_pointer;
|
typedef typename _Base_type::size_type size_type;
|
typedef typename _Base_type::difference_type difference_type;
|
|
typedef value_type& reference;
|
typedef const value_type& const_reference;
|
using _Base_type::allocate;
|
using _Base_type::deallocate;
|
using _Base_type::construct;
|
using _Base_type::destroy;
|
using _Base_type::max_size;
|
|
private:
|
template<typename _Ptr>
|
using __is_custom_pointer
|
= std::__and_<std::is_same<pointer, _Ptr>,
|
std::__not_<std::is_pointer<_Ptr>>>;
|
|
public:
|
|
template<typename _Ptr, typename... _Args>
|
static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type
|
construct(_Alloc& __a, _Ptr __p, _Args&&... __args)
|
{
|
_Base_type::construct(__a, std::addressof(*__p),
|
std::forward<_Args>(__args)...);
|
}
|
|
|
template<typename _Ptr>
|
static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type
|
destroy(_Alloc& __a, _Ptr __p)
|
{ _Base_type::destroy(__a, std::addressof(*__p)); }
|
|
static _Alloc _S_select_on_copy(const _Alloc& __a)
|
{ return _Base_type::select_on_container_copy_construction(__a); }
|
|
static void _S_on_swap(_Alloc& __a, _Alloc& __b)
|
{ std::__alloc_on_swap(__a, __b); }
|
|
static constexpr bool _S_propagate_on_copy_assign()
|
{ return _Base_type::propagate_on_container_copy_assignment::value; }
|
|
static constexpr bool _S_propagate_on_move_assign()
|
{ return _Base_type::propagate_on_container_move_assignment::value; }
|
|
static constexpr bool _S_propagate_on_swap()
|
{ return _Base_type::propagate_on_container_swap::value; }
|
|
static constexpr bool _S_always_equal()
|
{ return _Base_type::is_always_equal::value; }
|
|
static constexpr bool _S_nothrow_move()
|
{ return _S_propagate_on_move_assign() || _S_always_equal(); }
|
|
template<typename _Tp>
|
struct rebind
|
{ typedef typename _Base_type::template rebind_alloc<_Tp> other; };
|
# 158 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/alloc_traits.h" 3
|
};
|
|
|
}
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_construct.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
|
template<typename _T1, typename... _Args>
|
inline void
|
_Construct(_T1* __p, _Args&&... __args)
|
{ ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
|
# 90 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_construct.h" 3
|
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);
|
}
|
|
|
}
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_uninitialized.h" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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, (void)++__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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
|
|
|
|
typedef typename iterator_traits<_InputIterator>::reference _RefType1;
|
typedef typename iterator_traits<_ForwardIterator>::reference _RefType2;
|
const bool __assignable = is_assignable<_RefType2, _RefType1>::value;
|
|
|
return std::__uninitialized_copy<__is_trivial(_ValueType1)
|
&& __is_trivial(_ValueType2)
|
&& __assignable>::
|
__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); }
|
};
|
# 171 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
|
|
|
|
const bool __assignable = is_copy_assignable<_ValueType>::value;
|
|
|
std::__uninitialized_fill<__is_trivial(_ValueType) && __assignable>::
|
__uninit_fill(__first, __last, __x);
|
}
|
|
|
template<bool _TrivialValueType>
|
struct __uninitialized_fill_n
|
{
|
template<typename _ForwardIterator, typename _Size, typename _Tp>
|
static _ForwardIterator
|
__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);
|
return __cur;
|
}
|
catch(...)
|
{
|
std::_Destroy(__first, __cur);
|
throw;
|
}
|
}
|
};
|
|
template<>
|
struct __uninitialized_fill_n<true>
|
{
|
template<typename _ForwardIterator, typename _Size, typename _Tp>
|
static _ForwardIterator
|
__uninit_fill_n(_ForwardIterator __first, _Size __n,
|
const _Tp& __x)
|
{ return std::fill_n(__first, __n, __x); }
|
};
|
# 234 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_uninitialized.h" 3
|
template<typename _ForwardIterator, typename _Size, typename _Tp>
|
inline _ForwardIterator
|
uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
|
{
|
typedef typename iterator_traits<_ForwardIterator>::value_type
|
_ValueType;
|
|
|
|
|
const bool __assignable = is_copy_assignable<_ValueType>::value;
|
|
return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>::
|
__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, (void)++__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(std::make_move_iterator(__first),
|
std::make_move_iterator(__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
|
(std::__make_move_if_noexcept_iterator(__first),
|
std::__make_move_if_noexcept_iterator(__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>
|
_ForwardIterator
|
__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);
|
return __cur;
|
}
|
catch(...)
|
{
|
std::_Destroy(__first, __cur, __alloc);
|
throw;
|
}
|
}
|
|
template<typename _ForwardIterator, typename _Size, typename _Tp,
|
typename _Tp2>
|
inline _ForwardIterator
|
__uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
|
const _Tp& __x, allocator<_Tp2>&)
|
{ return std::uninitialized_fill_n(__first, __n, __x); }
|
# 370 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
}
|
|
|
|
|
|
template<bool _TrivialValueType>
|
struct __uninitialized_default_1
|
{
|
template<typename _ForwardIterator>
|
static void
|
__uninit_default(_ForwardIterator __first, _ForwardIterator __last)
|
{
|
_ForwardIterator __cur = __first;
|
try
|
{
|
for (; __cur != __last; ++__cur)
|
std::_Construct(std::__addressof(*__cur));
|
}
|
catch(...)
|
{
|
std::_Destroy(__first, __cur);
|
throw;
|
}
|
}
|
};
|
|
template<>
|
struct __uninitialized_default_1<true>
|
{
|
template<typename _ForwardIterator>
|
static void
|
__uninit_default(_ForwardIterator __first, _ForwardIterator __last)
|
{
|
typedef typename iterator_traits<_ForwardIterator>::value_type
|
_ValueType;
|
|
std::fill(__first, __last, _ValueType());
|
}
|
};
|
|
template<bool _TrivialValueType>
|
struct __uninitialized_default_n_1
|
{
|
template<typename _ForwardIterator, typename _Size>
|
static _ForwardIterator
|
__uninit_default_n(_ForwardIterator __first, _Size __n)
|
{
|
_ForwardIterator __cur = __first;
|
try
|
{
|
for (; __n > 0; --__n, ++__cur)
|
std::_Construct(std::__addressof(*__cur));
|
return __cur;
|
}
|
catch(...)
|
{
|
std::_Destroy(__first, __cur);
|
throw;
|
}
|
}
|
};
|
|
template<>
|
struct __uninitialized_default_n_1<true>
|
{
|
template<typename _ForwardIterator, typename _Size>
|
static _ForwardIterator
|
__uninit_default_n(_ForwardIterator __first, _Size __n)
|
{
|
typedef typename iterator_traits<_ForwardIterator>::value_type
|
_ValueType;
|
|
return std::fill_n(__first, __n, _ValueType());
|
}
|
};
|
|
|
|
|
template<typename _ForwardIterator>
|
inline void
|
__uninitialized_default(_ForwardIterator __first,
|
_ForwardIterator __last)
|
{
|
typedef typename iterator_traits<_ForwardIterator>::value_type
|
_ValueType;
|
|
const bool __assignable = is_copy_assignable<_ValueType>::value;
|
|
std::__uninitialized_default_1<__is_trivial(_ValueType)
|
&& __assignable>::
|
__uninit_default(__first, __last);
|
}
|
|
|
|
template<typename _ForwardIterator, typename _Size>
|
inline _ForwardIterator
|
__uninitialized_default_n(_ForwardIterator __first, _Size __n)
|
{
|
typedef typename iterator_traits<_ForwardIterator>::value_type
|
_ValueType;
|
|
const bool __assignable = is_copy_assignable<_ValueType>::value;
|
|
return __uninitialized_default_n_1<__is_trivial(_ValueType)
|
&& __assignable>::
|
__uninit_default_n(__first, __n);
|
}
|
|
|
|
|
|
template<typename _ForwardIterator, typename _Allocator>
|
void
|
__uninitialized_default_a(_ForwardIterator __first,
|
_ForwardIterator __last,
|
_Allocator& __alloc)
|
{
|
_ForwardIterator __cur = __first;
|
try
|
{
|
typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
|
for (; __cur != __last; ++__cur)
|
__traits::construct(__alloc, std::__addressof(*__cur));
|
}
|
catch(...)
|
{
|
std::_Destroy(__first, __cur, __alloc);
|
throw;
|
}
|
}
|
|
template<typename _ForwardIterator, typename _Tp>
|
inline void
|
__uninitialized_default_a(_ForwardIterator __first,
|
_ForwardIterator __last,
|
allocator<_Tp>&)
|
{ std::__uninitialized_default(__first, __last); }
|
|
|
|
|
|
template<typename _ForwardIterator, typename _Size, typename _Allocator>
|
_ForwardIterator
|
__uninitialized_default_n_a(_ForwardIterator __first, _Size __n,
|
_Allocator& __alloc)
|
{
|
_ForwardIterator __cur = __first;
|
try
|
{
|
typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
|
for (; __n > 0; --__n, ++__cur)
|
__traits::construct(__alloc, std::__addressof(*__cur));
|
return __cur;
|
}
|
catch(...)
|
{
|
std::_Destroy(__first, __cur, __alloc);
|
throw;
|
}
|
}
|
|
template<typename _ForwardIterator, typename _Size, typename _Tp>
|
inline _ForwardIterator
|
__uninitialized_default_n_a(_ForwardIterator __first, _Size __n,
|
allocator<_Tp>&)
|
{ return std::__uninitialized_default_n(__first, __n); }
|
|
|
template<typename _InputIterator, typename _Size,
|
typename _ForwardIterator>
|
_ForwardIterator
|
__uninitialized_copy_n(_InputIterator __first, _Size __n,
|
_ForwardIterator __result, input_iterator_tag)
|
{
|
_ForwardIterator __cur = __result;
|
try
|
{
|
for (; __n > 0; --__n, ++__first, ++__cur)
|
std::_Construct(std::__addressof(*__cur), *__first);
|
return __cur;
|
}
|
catch(...)
|
{
|
std::_Destroy(__result, __cur);
|
throw;
|
}
|
}
|
|
template<typename _RandomAccessIterator, typename _Size,
|
typename _ForwardIterator>
|
inline _ForwardIterator
|
__uninitialized_copy_n(_RandomAccessIterator __first, _Size __n,
|
_ForwardIterator __result,
|
random_access_iterator_tag)
|
{ return std::uninitialized_copy(__first, __first + __n, __result); }
|
# 677 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_uninitialized.h" 3
|
template<typename _InputIterator, typename _Size, typename _ForwardIterator>
|
inline _ForwardIterator
|
uninitialized_copy_n(_InputIterator __first, _Size __n,
|
_ForwardIterator __result)
|
{ return std::__uninitialized_copy_n(__first, __n, __result,
|
std::__iterator_category(__first)); }
|
|
|
|
}
|
# 64 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 1 3
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/initializer_list" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/initializer_list" 3
|
|
|
|
|
|
#pragma GCC visibility push(default)
|
|
|
|
namespace std
|
{
|
|
template<class _E>
|
class initializer_list
|
{
|
public:
|
typedef _E value_type;
|
typedef const _E& reference;
|
typedef const _E& const_reference;
|
typedef size_t size_type;
|
typedef const _E* iterator;
|
typedef const _E* const_iterator;
|
|
private:
|
iterator _M_array;
|
size_type _M_len;
|
|
|
constexpr initializer_list(const_iterator __a, size_type __l)
|
: _M_array(__a), _M_len(__l) { }
|
|
public:
|
constexpr initializer_list() noexcept
|
: _M_array(0), _M_len(0) { }
|
|
|
constexpr size_type
|
size() const noexcept { return _M_len; }
|
|
|
constexpr const_iterator
|
begin() const noexcept { return _M_array; }
|
|
|
constexpr const_iterator
|
end() const noexcept { return begin() + size(); }
|
};
|
|
|
|
|
|
|
template<class _Tp>
|
constexpr const _Tp*
|
begin(initializer_list<_Tp> __ils) noexcept
|
{ return __ils.begin(); }
|
|
|
|
|
|
|
template<class _Tp>
|
constexpr const _Tp*
|
end(initializer_list<_Tp> __ils) noexcept
|
{ return __ils.end(); }
|
}
|
|
#pragma GCC visibility pop
|
# 64 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 2 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(), _M_finish(), _M_end_of_storage()
|
{ }
|
|
_Vector_impl(_Tp_alloc_type const& __a) noexcept
|
: _Tp_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage()
|
{ }
|
|
|
_Vector_impl(_Tp_alloc_type&& __a) noexcept
|
: _Tp_alloc_type(std::move(__a)),
|
_M_start(), _M_finish(), _M_end_of_storage()
|
{ }
|
|
|
void _M_swap_data(_Vector_impl& __x) noexcept
|
{
|
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() noexcept
|
{ return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
|
|
const _Tp_alloc_type&
|
_M_get_Tp_allocator() const noexcept
|
{ return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
|
|
allocator_type
|
get_allocator() const noexcept
|
{ return allocator_type(_M_get_Tp_allocator()); }
|
|
_Vector_base()
|
: _M_impl() { }
|
|
_Vector_base(const allocator_type& __a) noexcept
|
: _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); }
|
|
|
_Vector_base(_Tp_alloc_type&& __a) noexcept
|
: _M_impl(std::move(__a)) { }
|
|
_Vector_base(_Vector_base&& __x) noexcept
|
: _M_impl(std::move(__x._M_get_Tp_allocator()))
|
{ this->_M_impl._M_swap_data(__x._M_impl); }
|
|
_Vector_base(_Vector_base&& __x, const allocator_type& __a)
|
: _M_impl(__a)
|
{
|
if (__x.get_allocator() == __a)
|
this->_M_impl._M_swap_data(__x._M_impl);
|
else
|
{
|
size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start;
|
_M_create_storage(__n);
|
}
|
}
|
|
|
~_Vector_base() noexcept
|
{ _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)
|
{
|
typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr;
|
return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer();
|
}
|
|
void
|
_M_deallocate(pointer __p, size_t __n)
|
{
|
typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr;
|
if (__p)
|
_Tr::deallocate(_M_impl, __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;
|
}
|
};
|
# 213 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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()
|
|
noexcept(is_nothrow_default_constructible<_Alloc>::value)
|
|
: _Base() { }
|
|
|
|
|
|
explicit
|
vector(const allocator_type& __a) noexcept
|
: _Base(__a) { }
|
# 278 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
explicit
|
vector(size_type __n, const allocator_type& __a = allocator_type())
|
: _Base(__n, __a)
|
{ _M_default_initialize(__n); }
|
# 291 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
vector(size_type __n, const value_type& __value,
|
const allocator_type& __a = allocator_type())
|
: _Base(__n, __a)
|
{ _M_fill_initialize(__n, __value); }
|
# 320 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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());
|
}
|
# 337 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
vector(vector&& __x) noexcept
|
: _Base(std::move(__x)) { }
|
|
|
vector(const vector& __x, const allocator_type& __a)
|
: _Base(__x.size(), __a)
|
{ this->_M_impl._M_finish =
|
std::__uninitialized_copy_a(__x.begin(), __x.end(),
|
this->_M_impl._M_start,
|
_M_get_Tp_allocator());
|
}
|
|
|
vector(vector&& __rv, const allocator_type& __m)
|
noexcept(_Alloc_traits::_S_always_equal())
|
: _Base(std::move(__rv), __m)
|
{
|
if (__rv.get_allocator() != __m)
|
{
|
this->_M_impl._M_finish =
|
std::__uninitialized_move_a(__rv.begin(), __rv.end(),
|
this->_M_impl._M_start,
|
_M_get_Tp_allocator());
|
__rv.clear();
|
}
|
}
|
# 375 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
vector(initializer_list<value_type> __l,
|
const allocator_type& __a = allocator_type())
|
: _Base(__a)
|
{
|
_M_range_initialize(__l.begin(), __l.end(),
|
random_access_iterator_tag());
|
}
|
# 401 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
vector(_InputIterator __first, _InputIterator __last,
|
const allocator_type& __a = allocator_type())
|
: _Base(__a)
|
{ _M_initialize_dispatch(__first, __last, __false_type()); }
|
# 425 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
~vector() noexcept
|
{ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
|
_M_get_Tp_allocator()); }
|
# 437 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
vector&
|
operator=(const vector& __x);
|
# 449 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
vector&
|
operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
|
{
|
constexpr bool __move_storage =
|
_Alloc_traits::_S_propagate_on_move_assign()
|
|| _Alloc_traits::_S_always_equal();
|
_M_move_assign(std::move(__x), __bool_constant<__move_storage>());
|
return *this;
|
}
|
# 470 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
vector&
|
operator=(initializer_list<value_type> __l)
|
{
|
this->assign(__l.begin(), __l.end());
|
return *this;
|
}
|
# 488 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
assign(size_type __n, const value_type& __val)
|
{ _M_fill_assign(__n, __val); }
|
# 505 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
void
|
assign(_InputIterator __first, _InputIterator __last)
|
{ _M_assign_dispatch(__first, __last, __false_type()); }
|
# 533 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
assign(initializer_list<value_type> __l)
|
{ this->assign(__l.begin(), __l.end()); }
|
|
|
|
using _Base::get_allocator;
|
|
|
|
|
|
|
|
iterator
|
begin() noexcept
|
{ return iterator(this->_M_impl._M_start); }
|
|
|
|
|
|
|
const_iterator
|
begin() const noexcept
|
{ return const_iterator(this->_M_impl._M_start); }
|
|
|
|
|
|
|
iterator
|
end() noexcept
|
{ return iterator(this->_M_impl._M_finish); }
|
|
|
|
|
|
|
const_iterator
|
end() const noexcept
|
{ return const_iterator(this->_M_impl._M_finish); }
|
|
|
|
|
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return reverse_iterator(end()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
|
|
|
|
|
reverse_iterator
|
rend() noexcept
|
{ return reverse_iterator(begin()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
|
|
|
|
|
|
const_iterator
|
cbegin() const noexcept
|
{ return const_iterator(this->_M_impl._M_start); }
|
|
|
|
|
|
|
const_iterator
|
cend() const noexcept
|
{ return const_iterator(this->_M_impl._M_finish); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
|
|
|
size_type
|
size() const noexcept
|
{ return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
|
|
|
size_type
|
max_size() const noexcept
|
{ return _Alloc_traits::max_size(_M_get_Tp_allocator()); }
|
# 673 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
resize(size_type __new_size)
|
{
|
if (__new_size > size())
|
_M_default_append(__new_size - size());
|
else if (__new_size < size())
|
_M_erase_at_end(this->_M_impl._M_start + __new_size);
|
}
|
# 693 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
resize(size_type __new_size, const value_type& __x)
|
{
|
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);
|
}
|
# 725 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
shrink_to_fit()
|
{ _M_shrink_to_fit(); }
|
|
|
|
|
|
|
size_type
|
capacity() const noexcept
|
{ return size_type(this->_M_impl._M_end_of_storage
|
- this->_M_impl._M_start); }
|
|
|
|
|
|
bool
|
empty() const noexcept
|
{ return begin() == end(); }
|
# 764 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
reserve(size_type __n);
|
# 779 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
reference
|
operator[](size_type __n) noexcept
|
{ return *(this->_M_impl._M_start + __n); }
|
# 794 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
const_reference
|
operator[](size_type __n) const noexcept
|
{ return *(this->_M_impl._M_start + __n); }
|
|
protected:
|
|
void
|
_M_range_check(size_type __n) const
|
{
|
if (__n >= this->size())
|
__throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)"),
|
|
|
__n, this->size());
|
}
|
|
public:
|
# 822 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
reference
|
at(size_type __n)
|
{
|
_M_range_check(__n);
|
return (*this)[__n];
|
}
|
# 840 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
const_reference
|
at(size_type __n) const
|
{
|
_M_range_check(__n);
|
return (*this)[__n];
|
}
|
|
|
|
|
|
reference
|
front() noexcept
|
{ return *begin(); }
|
|
|
|
|
|
const_reference
|
front() const noexcept
|
{ return *begin(); }
|
|
|
|
|
|
reference
|
back() noexcept
|
{ return *(end() - 1); }
|
|
|
|
|
|
const_reference
|
back() const noexcept
|
{ return *(end() - 1); }
|
# 887 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
_Tp*
|
|
|
|
data() noexcept
|
{ return _M_data_ptr(this->_M_impl._M_start); }
|
|
|
const _Tp*
|
|
|
|
data() const noexcept
|
{ return _M_data_ptr(this->_M_impl._M_start); }
|
# 913 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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_emplace_back_aux(__x);
|
|
|
|
}
|
|
|
void
|
push_back(value_type&& __x)
|
{ emplace_back(std::move(__x)); }
|
|
template<typename... _Args>
|
void
|
emplace_back(_Args&&... __args);
|
# 949 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
pop_back() noexcept
|
{
|
--this->_M_impl._M_finish;
|
_Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish);
|
}
|
# 969 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
template<typename... _Args>
|
iterator
|
emplace(const_iterator __position, _Args&&... __args);
|
# 984 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
iterator
|
insert(const_iterator __position, const value_type& __x);
|
# 1014 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
iterator
|
insert(const_iterator __position, value_type&& __x)
|
{ return emplace(__position, std::move(__x)); }
|
# 1031 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
iterator
|
insert(const_iterator __position, initializer_list<value_type> __l)
|
{ return this->insert(__position, __l.begin(), __l.end()); }
|
# 1051 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
iterator
|
insert(const_iterator __position, size_type __n, const value_type& __x)
|
{
|
difference_type __offset = __position - cbegin();
|
_M_fill_insert(begin() + __offset, __n, __x);
|
return begin() + __offset;
|
}
|
# 1093 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
iterator
|
insert(const_iterator __position, _InputIterator __first,
|
_InputIterator __last)
|
{
|
difference_type __offset = __position - cbegin();
|
_M_insert_dispatch(begin() + __offset,
|
__first, __last, __false_type());
|
return begin() + __offset;
|
}
|
# 1145 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
iterator
|
|
erase(const_iterator __position)
|
{ return _M_erase(begin() + (__position - cbegin())); }
|
# 1172 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
iterator
|
|
erase(const_iterator __first, const_iterator __last)
|
{
|
const auto __beg = begin();
|
const auto __cbeg = cbegin();
|
return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg));
|
}
|
# 1194 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
void
|
swap(vector& __x) noexcept
|
{
|
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() noexcept
|
{ _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;
|
}
|
}
|
# 1243 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
|
emplace_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)
|
{
|
this->_M_impl._M_finish =
|
std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
|
_M_get_Tp_allocator());
|
}
|
|
|
|
void
|
_M_default_initialize(size_type __n)
|
{
|
this->_M_impl._M_finish =
|
std::__uninitialized_default_n_a(this->_M_impl._M_start, __n,
|
_M_get_Tp_allocator());
|
}
|
# 1321 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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);
|
# 1361 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h" 3
|
template<typename _Integer>
|
void
|
_M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
|
__true_type)
|
{ _M_fill_insert(__pos, __n, __val); }
|
|
|
template<typename _InputIterator>
|
void
|
_M_insert_dispatch(iterator __pos, _InputIterator __first,
|
_InputIterator __last, __false_type)
|
{
|
typedef typename std::iterator_traits<_InputIterator>::
|
iterator_category _IterCategory;
|
_M_range_insert(__pos, __first, __last, _IterCategory());
|
}
|
|
|
template<typename _InputIterator>
|
void
|
_M_range_insert(iterator __pos, _InputIterator __first,
|
_InputIterator __last, std::input_iterator_tag);
|
|
|
template<typename _ForwardIterator>
|
void
|
_M_range_insert(iterator __pos, _ForwardIterator __first,
|
_ForwardIterator __last, std::forward_iterator_tag);
|
|
|
|
void
|
_M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
|
|
|
|
void
|
_M_default_append(size_type __n);
|
|
bool
|
_M_shrink_to_fit();
|
|
|
|
|
|
|
|
template<typename... _Args>
|
void
|
_M_insert_aux(iterator __position, _Args&&... __args);
|
|
template<typename... _Args>
|
void
|
_M_emplace_back_aux(_Args&&... __args);
|
|
|
|
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) noexcept
|
{
|
std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());
|
this->_M_impl._M_finish = __pos;
|
}
|
|
iterator
|
_M_erase(iterator __position);
|
|
iterator
|
_M_erase(iterator __first, iterator __last);
|
|
|
private:
|
|
|
|
void
|
_M_move_assign(vector&& __x, std::true_type) noexcept
|
{
|
vector __tmp(get_allocator());
|
this->_M_impl._M_swap_data(__tmp._M_impl);
|
this->_M_impl._M_swap_data(__x._M_impl);
|
std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator());
|
}
|
|
|
|
void
|
_M_move_assign(vector&& __x, std::false_type)
|
{
|
if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator())
|
_M_move_assign(std::move(__x), std::true_type());
|
else
|
{
|
|
|
this->assign(std::__make_move_if_noexcept_iterator(__x.begin()),
|
std::__make_move_if_noexcept_iterator(__x.end()));
|
__x.clear();
|
}
|
}
|
|
|
|
template<typename _Up>
|
_Up*
|
_M_data_ptr(_Up* __ptr) const
|
{ return __ptr; }
|
|
template<typename _Ptr>
|
typename std::pointer_traits<_Ptr>::element_type*
|
_M_data_ptr(_Ptr __ptr) const
|
{ return empty() ? nullptr : std::__addressof(*__ptr); }
|
|
|
|
|
|
|
};
|
# 1507 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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())); }
|
# 1524 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept(noexcept(__x.swap(__y)))
|
{ __x.swap(__y); }
|
|
|
}
|
# 65 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 1 3
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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() noexcept : _M_p(0), _M_mask(0) { }
|
|
operator bool() const noexcept
|
{ return !!(*_M_p & _M_mask); }
|
|
_Bit_reference&
|
operator=(bool __x) noexcept
|
{
|
if (__x)
|
*_M_p |= _M_mask;
|
else
|
*_M_p &= ~_M_mask;
|
return *this;
|
}
|
|
_Bit_reference&
|
operator=(const _Bit_reference& __x) noexcept
|
{ 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() noexcept
|
{ *_M_p ^= _M_mask; }
|
};
|
|
|
inline void
|
swap(_Bit_reference __x, _Bit_reference __y) noexcept
|
{
|
bool __tmp = __x;
|
__x = __y;
|
__y = __tmp;
|
}
|
|
inline void
|
swap(_Bit_reference __x, bool& __y) noexcept
|
{
|
bool __tmp = __x;
|
__x = __y;
|
__y = __tmp;
|
}
|
|
inline void
|
swap(bool& __x, _Bit_reference __y) noexcept
|
{
|
bool __tmp = __x;
|
__x = __y;
|
__y = __tmp;
|
}
|
|
|
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) { }
|
|
iterator
|
_M_const_cast() const
|
{ return *this; }
|
|
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) { }
|
|
_Bit_iterator
|
_M_const_cast() const
|
{ return _Bit_iterator(_M_p, _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 __gnu_cxx::__alloc_traits<_Alloc>::template
|
rebind<_Bit_type>::other _Bit_alloc_type;
|
typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type>
|
_Bit_alloc_traits;
|
typedef typename _Bit_alloc_traits::pointer _Bit_pointer;
|
|
struct _Bvector_impl
|
: public _Bit_alloc_type
|
{
|
_Bit_iterator _M_start;
|
_Bit_iterator _M_finish;
|
_Bit_pointer _M_end_of_storage;
|
|
_Bvector_impl()
|
: _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage()
|
{ }
|
|
_Bvector_impl(const _Bit_alloc_type& __a)
|
: _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage()
|
{ }
|
|
|
_Bvector_impl(_Bit_alloc_type&& __a)
|
: _Bit_alloc_type(std::move(__a)), _M_start(), _M_finish(),
|
_M_end_of_storage()
|
{ }
|
|
|
_Bit_type*
|
_M_end_addr() const noexcept
|
{
|
if (_M_end_of_storage)
|
return std::__addressof(_M_end_of_storage[-1]) + 1;
|
return 0;
|
}
|
};
|
|
public:
|
typedef _Alloc allocator_type;
|
|
_Bit_alloc_type&
|
_M_get_Bit_allocator() noexcept
|
{ return *static_cast<_Bit_alloc_type*>(&this->_M_impl); }
|
|
const _Bit_alloc_type&
|
_M_get_Bit_allocator() const noexcept
|
{ return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); }
|
|
allocator_type
|
get_allocator() const noexcept
|
{ return allocator_type(_M_get_Bit_allocator()); }
|
|
_Bvector_base()
|
: _M_impl() { }
|
|
_Bvector_base(const allocator_type& __a)
|
: _M_impl(__a) { }
|
|
|
_Bvector_base(_Bvector_base&& __x) noexcept
|
: _M_impl(std::move(__x._M_get_Bit_allocator()))
|
{
|
this->_M_impl._M_start = __x._M_impl._M_start;
|
this->_M_impl._M_finish = __x._M_impl._M_finish;
|
this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
|
__x._M_impl._M_start = _Bit_iterator();
|
__x._M_impl._M_finish = _Bit_iterator();
|
__x._M_impl._M_end_of_storage = nullptr;
|
}
|
|
|
~_Bvector_base()
|
{ this->_M_deallocate(); }
|
|
protected:
|
_Bvector_impl _M_impl;
|
|
_Bit_pointer
|
_M_allocate(size_t __n)
|
{ return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); }
|
|
void
|
_M_deallocate()
|
{
|
if (_M_impl._M_start._M_p)
|
{
|
const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p;
|
_Bit_alloc_traits::deallocate(_M_impl,
|
_M_impl._M_end_of_storage - __n,
|
__n);
|
}
|
}
|
|
static size_t
|
_S_nword(size_t __n)
|
{ return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); }
|
};
|
|
|
}
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 540 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 3
|
template<typename _Alloc>
|
class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
|
{
|
typedef _Bvector_base<_Alloc> _Base;
|
typedef typename _Base::_Bit_pointer _Bit_pointer;
|
typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits;
|
|
|
template<typename> friend struct hash;
|
|
|
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()
|
|
noexcept(is_nothrow_default_constructible<allocator_type>::value)
|
|
: _Base() { }
|
|
explicit
|
vector(const allocator_type& __a)
|
: _Base(__a) { }
|
|
|
explicit
|
vector(size_type __n, const allocator_type& __a = allocator_type())
|
: vector(__n, false, __a)
|
{ }
|
|
vector(size_type __n, const bool& __value,
|
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_addr(),
|
__value ? ~0 : 0);
|
}
|
# 611 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 3
|
vector(const vector& __x)
|
: _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator()))
|
{
|
_M_initialize(__x.size());
|
_M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
|
}
|
|
|
vector(vector&& __x) noexcept
|
: _Base(std::move(__x)) { }
|
|
vector(vector&& __x, const allocator_type& __a)
|
noexcept(_Bit_alloc_traits::_S_always_equal())
|
: _Base(__a)
|
{
|
if (__x.get_allocator() == __a)
|
{
|
this->_M_impl._M_start = __x._M_impl._M_start;
|
this->_M_impl._M_finish = __x._M_impl._M_finish;
|
this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
|
__x._M_impl._M_start = _Bit_iterator();
|
__x._M_impl._M_finish = _Bit_iterator();
|
__x._M_impl._M_end_of_storage = nullptr;
|
}
|
else
|
{
|
_M_initialize(__x.size());
|
_M_copy_aligned(__x.begin(), __x.end(), begin());
|
__x.clear();
|
}
|
}
|
|
vector(const vector& __x, const allocator_type& __a)
|
: _Base(__a)
|
{
|
_M_initialize(__x.size());
|
_M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
|
}
|
|
vector(initializer_list<bool> __l,
|
const allocator_type& __a = allocator_type())
|
: _Base(__a)
|
{
|
_M_initialize_range(__l.begin(), __l.end(),
|
random_access_iterator_tag());
|
}
|
|
|
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
vector(_InputIterator __first, _InputIterator __last,
|
const allocator_type& __a = allocator_type())
|
: _Base(__a)
|
{ _M_initialize_dispatch(__first, __last, __false_type()); }
|
# 677 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 3
|
~vector() noexcept { }
|
|
vector&
|
operator=(const vector& __x)
|
{
|
if (&__x == this)
|
return *this;
|
|
if (_Bit_alloc_traits::_S_propagate_on_copy_assign())
|
{
|
if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator())
|
{
|
this->_M_deallocate();
|
std::__alloc_on_copy(_M_get_Bit_allocator(),
|
__x._M_get_Bit_allocator());
|
_M_initialize(__x.size());
|
}
|
else
|
std::__alloc_on_copy(_M_get_Bit_allocator(),
|
__x._M_get_Bit_allocator());
|
}
|
|
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;
|
}
|
|
|
vector&
|
operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move())
|
{
|
if (_Bit_alloc_traits::_S_propagate_on_move_assign()
|
|| this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator())
|
{
|
this->_M_deallocate();
|
this->_M_impl._M_start = __x._M_impl._M_start;
|
this->_M_impl._M_finish = __x._M_impl._M_finish;
|
this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage;
|
__x._M_impl._M_start = _Bit_iterator();
|
__x._M_impl._M_finish = _Bit_iterator();
|
__x._M_impl._M_end_of_storage = nullptr;
|
std::__alloc_on_move(_M_get_Bit_allocator(),
|
__x._M_get_Bit_allocator());
|
}
|
else
|
{
|
if (__x.size() > capacity())
|
{
|
this->_M_deallocate();
|
_M_initialize(__x.size());
|
}
|
this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
|
begin());
|
__x.clear();
|
}
|
return *this;
|
}
|
|
vector&
|
operator=(initializer_list<bool> __l)
|
{
|
this->assign (__l.begin(), __l.end());
|
return *this;
|
}
|
|
|
|
|
|
|
void
|
assign(size_type __n, const bool& __x)
|
{ _M_fill_assign(__n, __x); }
|
|
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
void
|
assign(_InputIterator __first, _InputIterator __last)
|
{ _M_assign_dispatch(__first, __last, __false_type()); }
|
# 773 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 3
|
void
|
assign(initializer_list<bool> __l)
|
{ this->assign(__l.begin(), __l.end()); }
|
|
|
iterator
|
begin() noexcept
|
{ return this->_M_impl._M_start; }
|
|
const_iterator
|
begin() const noexcept
|
{ return this->_M_impl._M_start; }
|
|
iterator
|
end() noexcept
|
{ return this->_M_impl._M_finish; }
|
|
const_iterator
|
end() const noexcept
|
{ return this->_M_impl._M_finish; }
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return reverse_iterator(end()); }
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
reverse_iterator
|
rend() noexcept
|
{ return reverse_iterator(begin()); }
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
|
const_iterator
|
cbegin() const noexcept
|
{ return this->_M_impl._M_start; }
|
|
const_iterator
|
cend() const noexcept
|
{ return this->_M_impl._M_finish; }
|
|
const_reverse_iterator
|
crbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
const_reverse_iterator
|
crend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
|
size_type
|
size() const noexcept
|
{ return size_type(end() - begin()); }
|
|
size_type
|
max_size() const noexcept
|
{
|
const size_type __isize =
|
__gnu_cxx::__numeric_traits<difference_type>::__max
|
- int(_S_word_bit) + 1;
|
const size_type __asize
|
= _Bit_alloc_traits::max_size(_M_get_Bit_allocator());
|
return (__asize <= __isize / int(_S_word_bit)
|
? __asize * int(_S_word_bit) : __isize);
|
}
|
|
size_type
|
capacity() const noexcept
|
{ return size_type(const_iterator(this->_M_impl._M_end_addr(), 0)
|
- begin()); }
|
|
bool
|
empty() const noexcept
|
{ 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_fmt(("vector<bool>::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)"),
|
|
|
__n, this->size());
|
}
|
|
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() noexcept { }
|
|
void
|
push_back(bool __x)
|
{
|
if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr())
|
*this->_M_impl._M_finish++ = __x;
|
else
|
_M_insert_aux(end(), __x);
|
}
|
|
void
|
swap(vector& __x) noexcept
|
{
|
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);
|
_Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(),
|
__x._M_get_Bit_allocator());
|
}
|
|
|
static void
|
swap(reference __x, reference __y) noexcept
|
{
|
bool __tmp = __x;
|
__x = __y;
|
__y = __tmp;
|
}
|
|
iterator
|
|
insert(const_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_addr()
|
&& __position == end())
|
*this->_M_impl._M_finish++ = __x;
|
else
|
_M_insert_aux(__position._M_const_cast(), __x);
|
return begin() + __n;
|
}
|
|
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
iterator
|
insert(const_iterator __position,
|
_InputIterator __first, _InputIterator __last)
|
{
|
difference_type __offset = __position - cbegin();
|
_M_insert_dispatch(__position._M_const_cast(),
|
__first, __last, __false_type());
|
return begin() + __offset;
|
}
|
# 989 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 3
|
iterator
|
insert(const_iterator __position, size_type __n, const bool& __x)
|
{
|
difference_type __offset = __position - cbegin();
|
_M_fill_insert(__position._M_const_cast(), __n, __x);
|
return begin() + __offset;
|
}
|
|
|
|
|
|
|
|
iterator
|
insert(const_iterator __p, initializer_list<bool> __l)
|
{ return this->insert(__p, __l.begin(), __l.end()); }
|
|
|
void
|
pop_back()
|
{ --this->_M_impl._M_finish; }
|
|
iterator
|
|
erase(const_iterator __position)
|
|
|
|
{ return _M_erase(__position._M_const_cast()); }
|
|
iterator
|
|
erase(const_iterator __first, const_iterator __last)
|
|
|
|
{ return _M_erase(__first._M_const_cast(), __last._M_const_cast()); }
|
|
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
|
shrink_to_fit()
|
{ _M_shrink_to_fit(); }
|
|
|
void
|
flip() noexcept
|
{
|
_Bit_type * const __end = this->_M_impl._M_end_addr();
|
for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p)
|
*__p = ~*__p;
|
}
|
|
void
|
clear() noexcept
|
{ _M_erase_at_end(begin()); }
|
|
|
template<typename... _Args>
|
void
|
emplace_back(_Args&&... __args)
|
{ push_back(bool(__args...)); }
|
|
template<typename... _Args>
|
iterator
|
emplace(const_iterator __pos, _Args&&... __args)
|
{ return insert(__pos, bool(__args...)); }
|
|
|
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_pointer __q = this->_M_allocate(__n);
|
this->_M_impl._M_end_of_storage = __q + _S_nword(__n);
|
this->_M_impl._M_start = iterator(std::__addressof(*__q), 0);
|
this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
|
}
|
|
void
|
_M_reallocate(size_type __n);
|
|
|
bool
|
_M_shrink_to_fit();
|
|
|
|
|
|
|
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_addr(), __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_addr(), __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_addr(), __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; }
|
|
iterator
|
_M_erase(iterator __pos);
|
|
iterator
|
_M_erase(iterator __first, iterator __last);
|
};
|
|
|
}
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functional_hash.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functional_hash.h" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/hash_bytes.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/hash_bytes.h" 3
|
|
|
|
namespace std
|
{
|
|
|
|
|
|
|
|
size_t
|
_Hash_bytes(const void* __ptr, size_t __len, size_t __seed);
|
|
|
|
|
|
size_t
|
_Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed);
|
|
|
}
|
# 36 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functional_hash.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 49 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functional_hash.h" 3
|
template<typename _Result, typename _Arg>
|
struct __hash_base
|
{
|
typedef _Result result_type;
|
typedef _Arg argument_type;
|
};
|
|
|
template<typename _Tp>
|
struct hash;
|
|
|
template<typename _Tp, bool = is_enum<_Tp>::value>
|
struct __hash_enum
|
{
|
private:
|
|
__hash_enum(__hash_enum&&);
|
~__hash_enum();
|
};
|
|
|
template<typename _Tp>
|
struct __hash_enum<_Tp, true> : public __hash_base<size_t, _Tp>
|
{
|
size_t
|
operator()(_Tp __val) const noexcept
|
{
|
using __type = typename underlying_type<_Tp>::type;
|
return hash<__type>{}(static_cast<__type>(__val));
|
}
|
};
|
|
|
|
template<typename _Tp>
|
struct hash : __hash_enum<_Tp>
|
{ };
|
|
|
template<typename _Tp>
|
struct hash<_Tp*> : public __hash_base<size_t, _Tp*>
|
{
|
size_t
|
operator()(_Tp* __p) const noexcept
|
{ return reinterpret_cast<size_t>(__p); }
|
};
|
# 108 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functional_hash.h" 3
|
template<> struct hash<bool> : public __hash_base<size_t, bool> { size_t operator()(bool __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<char> : public __hash_base<size_t, char> { size_t operator()(char __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<signed char> : public __hash_base<size_t, signed char> { size_t operator()(signed char __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<unsigned char> : public __hash_base<size_t, unsigned char> { size_t operator()(unsigned char __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<wchar_t> : public __hash_base<size_t, wchar_t> { size_t operator()(wchar_t __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<char16_t> : public __hash_base<size_t, char16_t> { size_t operator()(char16_t __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<char32_t> : public __hash_base<size_t, char32_t> { size_t operator()(char32_t __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<short> : public __hash_base<size_t, short> { size_t operator()(short __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<int> : public __hash_base<size_t, int> { size_t operator()(int __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<long> : public __hash_base<size_t, long> { size_t operator()(long __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<long long> : public __hash_base<size_t, long long> { size_t operator()(long long __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<unsigned short> : public __hash_base<size_t, unsigned short> { size_t operator()(unsigned short __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<unsigned int> : public __hash_base<size_t, unsigned int> { size_t operator()(unsigned int __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<unsigned long> : public __hash_base<size_t, unsigned long> { size_t operator()(unsigned long __val) const noexcept { return static_cast<size_t>(__val); } };
|
|
|
template<> struct hash<unsigned long long> : public __hash_base<size_t, unsigned long long> { size_t operator()(unsigned long long __val) const noexcept { return static_cast<size_t>(__val); } };
|
# 171 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/functional_hash.h" 3
|
struct _Hash_impl
|
{
|
static size_t
|
hash(const void* __ptr, size_t __clength,
|
size_t __seed = static_cast<size_t>(0xc70f6907UL))
|
{ return _Hash_bytes(__ptr, __clength, __seed); }
|
|
template<typename _Tp>
|
static size_t
|
hash(const _Tp& __val)
|
{ return hash(&__val, sizeof(__val)); }
|
|
template<typename _Tp>
|
static size_t
|
__hash_combine(const _Tp& __val, size_t __hash)
|
{ return hash(&__val, sizeof(__val), __hash); }
|
};
|
|
struct _Fnv_hash_impl
|
{
|
static size_t
|
hash(const void* __ptr, size_t __clength,
|
size_t __seed = static_cast<size_t>(2166136261UL))
|
{ return _Fnv_hash_bytes(__ptr, __clength, __seed); }
|
|
template<typename _Tp>
|
static size_t
|
hash(const _Tp& __val)
|
{ return hash(&__val, sizeof(__val)); }
|
|
template<typename _Tp>
|
static size_t
|
__hash_combine(const _Tp& __val, size_t __hash)
|
{ return hash(&__val, sizeof(__val), __hash); }
|
};
|
|
|
template<>
|
struct hash<float> : public __hash_base<size_t, float>
|
{
|
size_t
|
operator()(float __val) const noexcept
|
{
|
|
return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0;
|
}
|
};
|
|
|
template<>
|
struct hash<double> : public __hash_base<size_t, double>
|
{
|
size_t
|
operator()(double __val) const noexcept
|
{
|
|
return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0;
|
}
|
};
|
|
|
template<>
|
struct hash<long double>
|
: public __hash_base<size_t, long double>
|
{
|
__attribute__ ((__pure__)) size_t
|
operator()(long double __val) const noexcept;
|
};
|
|
|
|
|
|
|
|
template<typename _Hash>
|
struct __is_fast_hash : public std::true_type
|
{ };
|
|
template<>
|
struct __is_fast_hash<hash<long double>> : public std::false_type
|
{ };
|
|
|
}
|
# 1263 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
template<typename _Alloc>
|
struct hash<std::vector<bool, _Alloc>>
|
: public __hash_base<size_t, std::vector<bool, _Alloc>>
|
{
|
size_t
|
operator()(const std::vector<bool, _Alloc>&) const noexcept;
|
};
|
|
|
}
|
# 66 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/range_access.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/range_access.h" 3
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
|
template<typename _Container>
|
inline auto
|
begin(_Container& __cont) -> decltype(__cont.begin())
|
{ return __cont.begin(); }
|
|
|
|
|
|
|
template<typename _Container>
|
inline auto
|
begin(const _Container& __cont) -> decltype(__cont.begin())
|
{ return __cont.begin(); }
|
|
|
|
|
|
|
template<typename _Container>
|
inline auto
|
end(_Container& __cont) -> decltype(__cont.end())
|
{ return __cont.end(); }
|
|
|
|
|
|
|
template<typename _Container>
|
inline auto
|
end(const _Container& __cont) -> decltype(__cont.end())
|
{ return __cont.end(); }
|
|
|
|
|
|
template<typename _Tp, size_t _Nm>
|
inline _Tp*
|
begin(_Tp (&__arr)[_Nm])
|
{ return __arr; }
|
|
|
|
|
|
|
template<typename _Tp, size_t _Nm>
|
inline _Tp*
|
end(_Tp (&__arr)[_Nm])
|
{ return __arr + _Nm; }
|
# 320 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/range_access.h" 3
|
}
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/vector.tcc" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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,
|
std::__make_move_if_noexcept_iterator(this->_M_impl._M_start),
|
std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish));
|
std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
|
_M_get_Tp_allocator());
|
_M_deallocate(this->_M_impl._M_start,
|
this->_M_impl._M_end_of_storage
|
- this->_M_impl._M_start);
|
this->_M_impl._M_start = __tmp;
|
this->_M_impl._M_finish = __tmp + __old_size;
|
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
|
}
|
}
|
|
|
template<typename _Tp, typename _Alloc>
|
template<typename... _Args>
|
void
|
vector<_Tp, _Alloc>::
|
emplace_back(_Args&&... __args)
|
{
|
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
|
{
|
_Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
|
std::forward<_Args>(__args)...);
|
++this->_M_impl._M_finish;
|
}
|
else
|
_M_emplace_back_aux(std::forward<_Args>(__args)...);
|
}
|
|
|
template<typename _Tp, typename _Alloc>
|
typename vector<_Tp, _Alloc>::iterator
|
vector<_Tp, _Alloc>::
|
|
insert(const_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
|
{
|
|
const auto __pos = begin() + (__position - cbegin());
|
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
|
{
|
_Tp __x_copy = __x;
|
_M_insert_aux(__pos, std::move(__x_copy));
|
}
|
else
|
_M_insert_aux(__pos, __x);
|
|
|
|
}
|
return iterator(this->_M_impl._M_start + __n);
|
}
|
|
template<typename _Tp, typename _Alloc>
|
typename vector<_Tp, _Alloc>::iterator
|
vector<_Tp, _Alloc>::
|
_M_erase(iterator __position)
|
{
|
if (__position + 1 != end())
|
std::move(__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>::
|
_M_erase(iterator __first, iterator __last)
|
{
|
if (__first != __last)
|
{
|
if (__last != end())
|
std::move(__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)
|
{
|
|
if (_Alloc_traits::_S_propagate_on_copy_assign())
|
{
|
if (!_Alloc_traits::_S_always_equal()
|
&& _M_get_Tp_allocator() != __x._M_get_Tp_allocator())
|
{
|
|
this->clear();
|
_M_deallocate(this->_M_impl._M_start,
|
this->_M_impl._M_end_of_storage
|
- this->_M_impl._M_start);
|
this->_M_impl._M_start = nullptr;
|
this->_M_impl._M_finish = nullptr;
|
this->_M_impl._M_end_of_storage = nullptr;
|
}
|
std::__alloc_on_copy(_M_get_Tp_allocator(),
|
__x._M_get_Tp_allocator());
|
}
|
|
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._M_impl._M_swap_data(this->_M_impl);
|
}
|
else if (__n > size())
|
{
|
std::fill(begin(), end(), __val);
|
this->_M_impl._M_finish =
|
std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
|
__n - size(), __val,
|
_M_get_Tp_allocator());
|
}
|
else
|
_M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
|
}
|
|
template<typename _Tp, typename _Alloc>
|
template<typename _InputIterator>
|
void
|
vector<_Tp, _Alloc>::
|
_M_assign_aux(_InputIterator __first, _InputIterator __last,
|
std::input_iterator_tag)
|
{
|
pointer __cur(this->_M_impl._M_start);
|
for (; __first != __last && __cur != this->_M_impl._M_finish;
|
++__cur, ++__first)
|
*__cur = *__first;
|
if (__first == __last)
|
_M_erase_at_end(__cur);
|
else
|
insert(end(), __first, __last);
|
}
|
|
template<typename _Tp, typename _Alloc>
|
template<typename _ForwardIterator>
|
void
|
vector<_Tp, _Alloc>::
|
_M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
|
std::forward_iterator_tag)
|
{
|
const size_type __len = std::distance(__first, __last);
|
|
if (__len > capacity())
|
{
|
pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
|
std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
|
_M_get_Tp_allocator());
|
_M_deallocate(this->_M_impl._M_start,
|
this->_M_impl._M_end_of_storage
|
- this->_M_impl._M_start);
|
this->_M_impl._M_start = __tmp;
|
this->_M_impl._M_finish = this->_M_impl._M_start + __len;
|
this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
|
}
|
else if (size() >= __len)
|
_M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
|
else
|
{
|
_ForwardIterator __mid = __first;
|
std::advance(__mid, size());
|
std::copy(__first, __mid, this->_M_impl._M_start);
|
this->_M_impl._M_finish =
|
std::__uninitialized_copy_a(__mid, __last,
|
this->_M_impl._M_finish,
|
_M_get_Tp_allocator());
|
}
|
}
|
|
|
template<typename _Tp, typename _Alloc>
|
template<typename... _Args>
|
typename vector<_Tp, _Alloc>::iterator
|
vector<_Tp, _Alloc>::
|
emplace(const_iterator __position, _Args&&... __args)
|
{
|
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,
|
std::forward<_Args>(__args)...);
|
++this->_M_impl._M_finish;
|
}
|
else
|
_M_insert_aux(begin() + (__position - cbegin()),
|
std::forward<_Args>(__args)...);
|
return iterator(this->_M_impl._M_start + __n);
|
}
|
|
template<typename _Tp, typename _Alloc>
|
template<typename... _Args>
|
void
|
vector<_Tp, _Alloc>::
|
_M_insert_aux(iterator __position, _Args&&... __args)
|
|
|
|
|
|
|
{
|
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
|
{
|
_Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
|
std::move(*(this->_M_impl._M_finish - 1)));
|
|
++this->_M_impl._M_finish;
|
|
|
|
std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1);
|
|
|
|
|
|
*__position = _Tp(std::forward<_Args>(__args)...);
|
|
}
|
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,
|
|
std::forward<_Args>(__args)...);
|
|
|
|
__new_finish = pointer();
|
|
__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;
|
}
|
}
|
|
|
template<typename _Tp, typename _Alloc>
|
template<typename... _Args>
|
void
|
vector<_Tp, _Alloc>::
|
_M_emplace_back_aux(_Args&&... __args)
|
{
|
const size_type __len =
|
_M_check_len(size_type(1), "vector::_M_emplace_back_aux");
|
pointer __new_start(this->_M_allocate(__len));
|
pointer __new_finish(__new_start);
|
try
|
{
|
_Alloc_traits::construct(this->_M_impl, __new_start + size(),
|
std::forward<_Args>(__args)...);
|
__new_finish = pointer();
|
|
__new_finish
|
= std::__uninitialized_move_if_noexcept_a
|
(this->_M_impl._M_start, this->_M_impl._M_finish,
|
__new_start, _M_get_Tp_allocator());
|
|
++__new_finish;
|
}
|
catch(...)
|
{
|
if (!__new_finish)
|
_Alloc_traits::destroy(this->_M_impl, __new_start + size());
|
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;
|
}
|
|
|
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::move_backward(__position.base(), __old_finish - __n, __old_finish);
|
|
std::fill(__position.base(), __position.base() + __n,
|
__x_copy);
|
}
|
else
|
{
|
this->_M_impl._M_finish =
|
std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
|
__n - __elems_after,
|
__x_copy,
|
_M_get_Tp_allocator());
|
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 = pointer();
|
|
__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;
|
}
|
}
|
}
|
|
|
template<typename _Tp, typename _Alloc>
|
void
|
vector<_Tp, _Alloc>::
|
_M_default_append(size_type __n)
|
{
|
if (__n != 0)
|
{
|
if (size_type(this->_M_impl._M_end_of_storage
|
- this->_M_impl._M_finish) >= __n)
|
{
|
this->_M_impl._M_finish =
|
std::__uninitialized_default_n_a(this->_M_impl._M_finish,
|
__n, _M_get_Tp_allocator());
|
}
|
else
|
{
|
const size_type __len =
|
_M_check_len(__n, "vector::_M_default_append");
|
const size_type __old_size = this->size();
|
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, this->_M_impl._M_finish,
|
__new_start, _M_get_Tp_allocator());
|
__new_finish =
|
std::__uninitialized_default_n_a(__new_finish, __n,
|
_M_get_Tp_allocator());
|
}
|
catch(...)
|
{
|
std::_Destroy(__new_start, __new_finish,
|
_M_get_Tp_allocator());
|
_M_deallocate(__new_start, __len);
|
throw;
|
}
|
std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
|
_M_get_Tp_allocator());
|
_M_deallocate(this->_M_impl._M_start,
|
this->_M_impl._M_end_of_storage
|
- this->_M_impl._M_start);
|
this->_M_impl._M_start = __new_start;
|
this->_M_impl._M_finish = __new_finish;
|
this->_M_impl._M_end_of_storage = __new_start + __len;
|
}
|
}
|
}
|
|
template<typename _Tp, typename _Alloc>
|
bool
|
vector<_Tp, _Alloc>::
|
_M_shrink_to_fit()
|
{
|
if (capacity() == size())
|
return false;
|
return std::__shrink_to_fit_aux<vector>::_S_do_it(*this);
|
}
|
|
|
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::move_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_pointer __q = this->_M_allocate(__n);
|
iterator __start(std::__addressof(*__q), 0);
|
this->_M_impl._M_finish = _M_copy_aligned(begin(), end(), __start);
|
this->_M_deallocate();
|
this->_M_impl._M_start = __start;
|
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_pointer __q = this->_M_allocate(__len);
|
iterator __start(std::__addressof(*__q), 0);
|
iterator __i = _M_copy_aligned(begin(), __position, __start);
|
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 = __start;
|
}
|
}
|
|
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_pointer __q = this->_M_allocate(__len);
|
iterator __start(std::__addressof(*__q), 0);
|
iterator __i = _M_copy_aligned(begin(), __position, __start);
|
__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 = __start;
|
}
|
}
|
}
|
|
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_addr())
|
{
|
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_pointer __q = this->_M_allocate(__len);
|
iterator __start(std::__addressof(*__q), 0);
|
iterator __i = _M_copy_aligned(begin(), __position, __start);
|
*__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 = __start;
|
}
|
}
|
|
template<typename _Alloc>
|
typename vector<bool, _Alloc>::iterator
|
vector<bool, _Alloc>::
|
_M_erase(iterator __position)
|
{
|
if (__position + 1 != end())
|
std::copy(__position + 1, end(), __position);
|
--this->_M_impl._M_finish;
|
return __position;
|
}
|
|
template<typename _Alloc>
|
typename vector<bool, _Alloc>::iterator
|
vector<bool, _Alloc>::
|
_M_erase(iterator __first, iterator __last)
|
{
|
if (__first != __last)
|
_M_erase_at_end(std::copy(__last, end(), __first));
|
return __first;
|
}
|
|
|
template<typename _Alloc>
|
bool
|
vector<bool, _Alloc>::
|
_M_shrink_to_fit()
|
{
|
if (capacity() - size() < int(_S_word_bit))
|
return false;
|
try
|
{
|
_M_reallocate(size());
|
return true;
|
}
|
catch(...)
|
{ return false; }
|
}
|
|
|
|
}
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
template<typename _Alloc>
|
size_t
|
hash<std::vector<bool, _Alloc>>::
|
operator()(const std::vector<bool, _Alloc>& __b) const noexcept
|
{
|
size_t __hash = 0;
|
using std::_S_word_bit;
|
using std::_Bit_type;
|
|
const size_t __words = __b.size() / _S_word_bit;
|
if (__words)
|
{
|
const size_t __clength = __words * sizeof(_Bit_type);
|
__hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength);
|
}
|
|
const size_t __extrabits = __b.size() % _S_word_bit;
|
if (__extrabits)
|
{
|
_Bit_type __hiword = *__b._M_impl._M_finish._M_p;
|
__hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits);
|
|
const size_t __clength
|
= (__extrabits + 8 - 1) / 8;
|
if (__words)
|
__hash = std::_Hash_impl::hash(&__hiword, __clength, __hash);
|
else
|
__hash = std::_Hash_impl::hash(&__hiword, __clength);
|
}
|
|
return __hash;
|
}
|
|
|
}
|
# 70 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/vector" 2 3
|
# 4 "./libraries/Scope/Scope.h" 2
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/map" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/map" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 1 3
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_function.h" 1 3
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_function.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 104 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
};
|
# 166 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; }
|
};
|
# 350 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; }
|
};
|
# 523 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; }
|
};
|
# 616 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_function.h" 3
|
template<typename _Tp>
|
struct bit_and : public binary_function<_Tp, _Tp, _Tp>
|
{
|
|
_Tp
|
operator()(const _Tp& __x, const _Tp& __y) const
|
{ return __x & __y; }
|
};
|
|
template<typename _Tp>
|
struct bit_or : public binary_function<_Tp, _Tp, _Tp>
|
{
|
|
_Tp
|
operator()(const _Tp& __x, const _Tp& __y) const
|
{ return __x | __y; }
|
};
|
|
template<typename _Tp>
|
struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
|
{
|
|
_Tp
|
operator()(const _Tp& __x, const _Tp& __y) const
|
{ return __x ^ __y; }
|
};
|
|
template<typename _Tp>
|
struct bit_not : public unary_function<_Tp, _Tp>
|
{
|
|
_Tp
|
operator()(const _Tp& __x) const
|
{ return ~__x; }
|
};
|
# 740 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
# 817 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_function.h" 3
|
template<typename _Arg, typename _Result>
|
class pointer_to_unary_function : public unary_function<_Arg, _Result>
|
{
|
protected:
|
_Result (*_M_ptr)(_Arg);
|
|
public:
|
pointer_to_unary_function() { }
|
|
explicit
|
pointer_to_unary_function(_Result (*__x)(_Arg))
|
: _M_ptr(__x) { }
|
|
_Result
|
operator()(_Arg __x) const
|
{ return _M_ptr(__x); }
|
};
|
|
|
template<typename _Arg, typename _Result>
|
inline pointer_to_unary_function<_Arg, _Result>
|
ptr_fun(_Result (*__x)(_Arg))
|
{ return pointer_to_unary_function<_Arg, _Result>(__x); }
|
|
|
template<typename _Arg1, typename _Arg2, typename _Result>
|
class pointer_to_binary_function
|
: public binary_function<_Arg1, _Arg2, _Result>
|
{
|
protected:
|
_Result (*_M_ptr)(_Arg1, _Arg2);
|
|
public:
|
pointer_to_binary_function() { }
|
|
explicit
|
pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
|
: _M_ptr(__x) { }
|
|
_Result
|
operator()(_Arg1 __x, _Arg2 __y) const
|
{ return _M_ptr(__x, __y); }
|
};
|
|
|
template<typename _Arg1, typename _Arg2, typename _Result>
|
inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
|
ptr_fun(_Result (*__x)(_Arg1, _Arg2))
|
{ return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
|
|
|
template<typename _Tp>
|
struct _Identity
|
: public unary_function<_Tp,_Tp>
|
{
|
_Tp&
|
operator()(_Tp& __x) const
|
{ return __x; }
|
|
const _Tp&
|
operator()(const _Tp& __x) const
|
{ return __x; }
|
};
|
|
template<typename _Pair>
|
struct _Select1st
|
: public unary_function<_Pair, typename _Pair::first_type>
|
{
|
typename _Pair::first_type&
|
operator()(_Pair& __x) const
|
{ return __x.first; }
|
|
const typename _Pair::first_type&
|
operator()(const _Pair& __x) const
|
{ return __x.first; }
|
|
|
template<typename _Pair2>
|
typename _Pair2::first_type&
|
operator()(_Pair2& __x) const
|
{ return __x.first; }
|
|
template<typename _Pair2>
|
const typename _Pair2::first_type&
|
operator()(const _Pair2& __x) const
|
{ return __x.first; }
|
|
};
|
|
template<typename _Pair>
|
struct _Select2nd
|
: public unary_function<_Pair, typename _Pair::second_type>
|
{
|
typename _Pair::second_type&
|
operator()(_Pair& __x) const
|
{ return __x.second; }
|
|
const typename _Pair::second_type&
|
operator()(const _Pair& __x) const
|
{ return __x.second; }
|
};
|
# 937 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/binders.h" 1 3
|
# 60 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/binders.h" 3
|
#pragma GCC diagnostic push
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 107 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
} __attribute__ ((__deprecated__));
|
|
|
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); }
|
} __attribute__ ((__deprecated__));
|
|
|
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));
|
}
|
|
|
|
}
|
|
#pragma GCC diagnostic pop
|
# 1128 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_function.h" 2 3
|
# 66 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 2 3
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/aligned_buffer.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/aligned_buffer.h" 3
|
|
|
|
|
|
|
|
namespace __gnu_cxx
|
{
|
|
|
|
|
template<typename _Tp>
|
struct __aligned_membuf
|
{
|
|
|
|
struct _Tp2 { _Tp _M_t; };
|
|
alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)];
|
|
__aligned_membuf() = default;
|
|
|
__aligned_membuf(std::nullptr_t) { }
|
|
void*
|
_M_addr() noexcept
|
{ return static_cast<void*>(&_M_storage); }
|
|
const void*
|
_M_addr() const noexcept
|
{ return static_cast<const void*>(&_M_storage); }
|
|
_Tp*
|
_M_ptr() noexcept
|
{ return static_cast<_Tp*>(_M_addr()); }
|
|
const _Tp*
|
_M_ptr() const noexcept
|
{ return static_cast<const _Tp*>(_M_addr()); }
|
};
|
|
|
|
|
|
|
template<typename _Tp>
|
struct __aligned_buffer
|
: std::aligned_storage<sizeof(_Tp), std::alignment_of<_Tp>::value>
|
{
|
typename
|
std::aligned_storage<sizeof(_Tp), std::alignment_of<_Tp>::value>::type
|
_M_storage;
|
|
__aligned_buffer() = default;
|
|
|
__aligned_buffer(std::nullptr_t) { }
|
|
void*
|
_M_addr() noexcept
|
{
|
return static_cast<void*>(&_M_storage);
|
}
|
|
const void*
|
_M_addr() const noexcept
|
{
|
return static_cast<const void*>(&_M_storage);
|
}
|
|
_Tp*
|
_M_ptr() noexcept
|
{ return static_cast<_Tp*>(_M_addr()); }
|
|
const _Tp*
|
_M_ptr() const noexcept
|
{ return static_cast<const _Tp*>(_M_addr()); }
|
};
|
|
}
|
# 70 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 2 3
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 96 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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) noexcept
|
{
|
while (__x->_M_left != 0) __x = __x->_M_left;
|
return __x;
|
}
|
|
static _Const_Base_ptr
|
_S_minimum(_Const_Base_ptr __x) noexcept
|
{
|
while (__x->_M_left != 0) __x = __x->_M_left;
|
return __x;
|
}
|
|
static _Base_ptr
|
_S_maximum(_Base_ptr __x) noexcept
|
{
|
while (__x->_M_right != 0) __x = __x->_M_right;
|
return __x;
|
}
|
|
static _Const_Base_ptr
|
_S_maximum(_Const_Base_ptr __x) noexcept
|
{
|
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;
|
# 153 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
__gnu_cxx::__aligned_membuf<_Val> _M_storage;
|
|
_Val*
|
_M_valptr()
|
{ return _M_storage._M_ptr(); }
|
|
const _Val*
|
_M_valptr() const
|
{ return _M_storage._M_ptr(); }
|
|
};
|
|
__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() noexcept
|
: _M_node() { }
|
|
explicit
|
_Rb_tree_iterator(_Base_ptr __x) noexcept
|
: _M_node(__x) { }
|
|
reference
|
operator*() const noexcept
|
{ return *static_cast<_Link_type>(_M_node)->_M_valptr(); }
|
|
pointer
|
operator->() const noexcept
|
{ return static_cast<_Link_type> (_M_node)->_M_valptr(); }
|
|
_Self&
|
operator++() noexcept
|
{
|
_M_node = _Rb_tree_increment(_M_node);
|
return *this;
|
}
|
|
_Self
|
operator++(int) noexcept
|
{
|
_Self __tmp = *this;
|
_M_node = _Rb_tree_increment(_M_node);
|
return __tmp;
|
}
|
|
_Self&
|
operator--() noexcept
|
{
|
_M_node = _Rb_tree_decrement(_M_node);
|
return *this;
|
}
|
|
_Self
|
operator--(int) noexcept
|
{
|
_Self __tmp = *this;
|
_M_node = _Rb_tree_decrement(_M_node);
|
return __tmp;
|
}
|
|
bool
|
operator==(const _Self& __x) const noexcept
|
{ return _M_node == __x._M_node; }
|
|
bool
|
operator!=(const _Self& __x) const noexcept
|
{ 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() noexcept
|
: _M_node() { }
|
|
explicit
|
_Rb_tree_const_iterator(_Base_ptr __x) noexcept
|
: _M_node(__x) { }
|
|
_Rb_tree_const_iterator(const iterator& __it) noexcept
|
: _M_node(__it._M_node) { }
|
|
iterator
|
_M_const_cast() const noexcept
|
{ return iterator(const_cast<typename iterator::_Base_ptr>(_M_node)); }
|
|
reference
|
operator*() const noexcept
|
{ return *static_cast<_Link_type>(_M_node)->_M_valptr(); }
|
|
pointer
|
operator->() const noexcept
|
{ return static_cast<_Link_type>(_M_node)->_M_valptr(); }
|
|
_Self&
|
operator++() noexcept
|
{
|
_M_node = _Rb_tree_increment(_M_node);
|
return *this;
|
}
|
|
_Self
|
operator++(int) noexcept
|
{
|
_Self __tmp = *this;
|
_M_node = _Rb_tree_increment(_M_node);
|
return __tmp;
|
}
|
|
_Self&
|
operator--() noexcept
|
{
|
_M_node = _Rb_tree_decrement(_M_node);
|
return *this;
|
}
|
|
_Self
|
operator--(int) noexcept
|
{
|
_Self __tmp = *this;
|
_M_node = _Rb_tree_decrement(_M_node);
|
return __tmp;
|
}
|
|
bool
|
operator==(const _Self& __x) const noexcept
|
{ return _M_node == __x._M_node; }
|
|
bool
|
operator!=(const _Self& __x) const noexcept
|
{ 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) noexcept
|
{ 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) noexcept
|
{ 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 ();
|
# 359 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc = allocator<_Val> >
|
class _Rb_tree
|
{
|
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
|
rebind<_Rb_tree_node<_Val> >::other _Node_allocator;
|
|
typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits;
|
|
protected:
|
typedef _Rb_tree_node_base* _Base_ptr;
|
typedef const _Rb_tree_node_base* _Const_Base_ptr;
|
typedef _Rb_tree_node<_Val>* _Link_type;
|
typedef const _Rb_tree_node<_Val>* _Const_Link_type;
|
|
private:
|
|
|
struct _Reuse_or_alloc_node
|
{
|
_Reuse_or_alloc_node(_Rb_tree& __t)
|
: _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t)
|
{
|
if (_M_root)
|
{
|
_M_root->_M_parent = 0;
|
|
if (_M_nodes->_M_left)
|
_M_nodes = _M_nodes->_M_left;
|
}
|
else
|
_M_nodes = 0;
|
}
|
|
|
_Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete;
|
|
|
~_Reuse_or_alloc_node()
|
{ _M_t._M_erase(static_cast<_Link_type>(_M_root)); }
|
|
template<typename _Arg>
|
_Link_type
|
|
|
|
operator()(_Arg&& __arg)
|
|
{
|
_Link_type __node = static_cast<_Link_type>(_M_extract());
|
if (__node)
|
{
|
_M_t._M_destroy_node(__node);
|
_M_t._M_construct_node(__node, std::forward<_Arg>(__arg));
|
return __node;
|
}
|
|
return _M_t._M_create_node(std::forward<_Arg>(__arg));
|
}
|
|
private:
|
_Base_ptr
|
_M_extract()
|
{
|
if (!_M_nodes)
|
return _M_nodes;
|
|
_Base_ptr __node = _M_nodes;
|
_M_nodes = _M_nodes->_M_parent;
|
if (_M_nodes)
|
{
|
if (_M_nodes->_M_right == __node)
|
{
|
_M_nodes->_M_right = 0;
|
|
if (_M_nodes->_M_left)
|
{
|
_M_nodes = _M_nodes->_M_left;
|
|
while (_M_nodes->_M_right)
|
_M_nodes = _M_nodes->_M_right;
|
|
if (_M_nodes->_M_left)
|
_M_nodes = _M_nodes->_M_left;
|
}
|
}
|
else
|
_M_nodes->_M_left = 0;
|
}
|
else
|
_M_root = 0;
|
|
return __node;
|
}
|
|
_Base_ptr _M_root;
|
_Base_ptr _M_nodes;
|
_Rb_tree& _M_t;
|
};
|
|
|
|
struct _Alloc_node
|
{
|
_Alloc_node(_Rb_tree& __t)
|
: _M_t(__t) { }
|
|
template<typename _Arg>
|
_Link_type
|
|
|
|
operator()(_Arg&& __arg) const
|
|
{ return _M_t._M_create_node(std::forward<_Arg>(__arg)); }
|
|
private:
|
_Rb_tree& _M_t;
|
};
|
|
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 size_t size_type;
|
typedef ptrdiff_t difference_type;
|
typedef _Alloc allocator_type;
|
|
_Node_allocator&
|
_M_get_Node_allocator() noexcept
|
{ return *static_cast<_Node_allocator*>(&this->_M_impl); }
|
|
const _Node_allocator&
|
_M_get_Node_allocator() const noexcept
|
{ return *static_cast<const _Node_allocator*>(&this->_M_impl); }
|
|
allocator_type
|
get_allocator() const noexcept
|
{ return allocator_type(_M_get_Node_allocator()); }
|
|
protected:
|
_Link_type
|
_M_get_node()
|
{ return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); }
|
|
void
|
_M_put_node(_Link_type __p) noexcept
|
{ _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); }
|
# 536 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
template<typename... _Args>
|
void
|
_M_construct_node(_Link_type __node, _Args&&... __args)
|
{
|
try
|
{
|
::new(__node) _Rb_tree_node<_Val>;
|
_Alloc_traits::construct(_M_get_Node_allocator(),
|
__node->_M_valptr(),
|
std::forward<_Args>(__args)...);
|
}
|
catch(...)
|
{
|
__node->~_Rb_tree_node<_Val>();
|
_M_put_node(__node);
|
throw;
|
}
|
}
|
|
template<typename... _Args>
|
_Link_type
|
_M_create_node(_Args&&... __args)
|
{
|
_Link_type __tmp = _M_get_node();
|
_M_construct_node(__tmp, std::forward<_Args>(__args)...);
|
return __tmp;
|
}
|
|
void
|
_M_destroy_node(_Link_type __p) noexcept
|
{
|
_Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr());
|
__p->~_Rb_tree_node<_Val>();
|
}
|
|
|
void
|
_M_drop_node(_Link_type __p) noexcept
|
{
|
_M_destroy_node(__p);
|
_M_put_node(__p);
|
}
|
|
template<typename _NodeGen>
|
_Link_type
|
_M_clone_node(_Const_Link_type __x, _NodeGen& __node_gen)
|
{
|
_Link_type __tmp = __node_gen(*__x->_M_valptr());
|
__tmp->_M_color = __x->_M_color;
|
__tmp->_M_left = 0;
|
__tmp->_M_right = 0;
|
return __tmp;
|
}
|
|
protected:
|
|
template<typename _Key_compare,
|
bool = __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(); }
|
|
|
_Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a)
|
: _Node_allocator(std::move(__a)), _M_key_compare(__comp),
|
_M_header(), _M_node_count(0)
|
{ _M_initialize(); }
|
|
|
void
|
_M_reset()
|
{
|
this->_M_header._M_parent = 0;
|
this->_M_header._M_left = &this->_M_header;
|
this->_M_header._M_right = &this->_M_header;
|
this->_M_node_count = 0;
|
}
|
|
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() noexcept
|
{ return this->_M_impl._M_header._M_parent; }
|
|
_Const_Base_ptr
|
_M_root() const noexcept
|
{ return this->_M_impl._M_header._M_parent; }
|
|
_Base_ptr&
|
_M_leftmost() noexcept
|
{ return this->_M_impl._M_header._M_left; }
|
|
_Const_Base_ptr
|
_M_leftmost() const noexcept
|
{ return this->_M_impl._M_header._M_left; }
|
|
_Base_ptr&
|
_M_rightmost() noexcept
|
{ return this->_M_impl._M_header._M_right; }
|
|
_Const_Base_ptr
|
_M_rightmost() const noexcept
|
{ return this->_M_impl._M_header._M_right; }
|
|
_Link_type
|
_M_begin() noexcept
|
{ return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
|
|
_Const_Link_type
|
_M_begin() const noexcept
|
{
|
return static_cast<_Const_Link_type>
|
(this->_M_impl._M_header._M_parent);
|
}
|
|
_Base_ptr
|
_M_end() noexcept
|
{ return &this->_M_impl._M_header; }
|
|
_Const_Base_ptr
|
_M_end() const noexcept
|
{ return &this->_M_impl._M_header; }
|
|
static const_reference
|
_S_value(_Const_Link_type __x)
|
{ return *__x->_M_valptr(); }
|
|
static const _Key&
|
_S_key(_Const_Link_type __x)
|
{ return _KeyOfValue()(_S_value(__x)); }
|
|
static _Link_type
|
_S_left(_Base_ptr __x) noexcept
|
{ return static_cast<_Link_type>(__x->_M_left); }
|
|
static _Const_Link_type
|
_S_left(_Const_Base_ptr __x) noexcept
|
{ return static_cast<_Const_Link_type>(__x->_M_left); }
|
|
static _Link_type
|
_S_right(_Base_ptr __x) noexcept
|
{ return static_cast<_Link_type>(__x->_M_right); }
|
|
static _Const_Link_type
|
_S_right(_Const_Base_ptr __x) noexcept
|
{ 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_valptr(); }
|
|
static const _Key&
|
_S_key(_Const_Base_ptr __x)
|
{ return _KeyOfValue()(_S_value(__x)); }
|
|
static _Base_ptr
|
_S_minimum(_Base_ptr __x) noexcept
|
{ return _Rb_tree_node_base::_S_minimum(__x); }
|
|
static _Const_Base_ptr
|
_S_minimum(_Const_Base_ptr __x) noexcept
|
{ return _Rb_tree_node_base::_S_minimum(__x); }
|
|
static _Base_ptr
|
_S_maximum(_Base_ptr __x) noexcept
|
{ return _Rb_tree_node_base::_S_maximum(__x); }
|
|
static _Const_Base_ptr
|
_S_maximum(_Const_Base_ptr __x) noexcept
|
{ 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;
|
|
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);
|
|
private:
|
|
template<typename _Arg, typename _NodeGen>
|
iterator
|
_M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&);
|
|
iterator
|
_M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z);
|
|
template<typename _Arg>
|
iterator
|
_M_insert_lower(_Base_ptr __y, _Arg&& __v);
|
|
template<typename _Arg>
|
iterator
|
_M_insert_equal_lower(_Arg&& __x);
|
|
iterator
|
_M_insert_lower_node(_Base_ptr __p, _Link_type __z);
|
|
iterator
|
_M_insert_equal_lower_node(_Link_type __z);
|
# 789 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
template<typename _NodeGen>
|
_Link_type
|
_M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen&);
|
|
_Link_type
|
_M_copy(_Const_Link_type __x, _Base_ptr __p)
|
{
|
_Alloc_node __an(*this);
|
return _M_copy(__x, __p, __an);
|
}
|
|
void
|
_M_erase(_Link_type __x);
|
|
iterator
|
_M_lower_bound(_Link_type __x, _Base_ptr __y,
|
const _Key& __k);
|
|
const_iterator
|
_M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y,
|
const _Key& __k) const;
|
|
iterator
|
_M_upper_bound(_Link_type __x, _Base_ptr __y,
|
const _Key& __k);
|
|
const_iterator
|
_M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __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,
|
_Alloc_traits::_S_select_on_copy(__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(const allocator_type& __a)
|
: _M_impl(_Compare(), _Node_allocator(__a))
|
{ }
|
|
_Rb_tree(const _Rb_tree& __x, const allocator_type& __a)
|
: _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a))
|
{
|
if (__x._M_root() != nullptr)
|
{
|
_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(_Rb_tree&& __x)
|
: _M_impl(__x._M_impl._M_key_compare,
|
std::move(__x._M_get_Node_allocator()))
|
{
|
if (__x._M_root() != 0)
|
_M_move_data(__x, std::true_type());
|
}
|
|
_Rb_tree(_Rb_tree&& __x, const allocator_type& __a)
|
: _Rb_tree(std::move(__x), _Node_allocator(__a))
|
{ }
|
|
_Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a);
|
|
|
~_Rb_tree() noexcept
|
{ _M_erase(_M_begin()); }
|
|
_Rb_tree&
|
operator=(const _Rb_tree& __x);
|
|
|
_Compare
|
key_comp() const
|
{ return _M_impl._M_key_compare; }
|
|
iterator
|
begin() noexcept
|
{ return iterator(this->_M_impl._M_header._M_left); }
|
|
const_iterator
|
begin() const noexcept
|
{ return const_iterator(this->_M_impl._M_header._M_left); }
|
|
iterator
|
end() noexcept
|
{ return iterator(&this->_M_impl._M_header); }
|
|
const_iterator
|
end() const noexcept
|
{ return const_iterator(&this->_M_impl._M_header); }
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return reverse_iterator(end()); }
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
reverse_iterator
|
rend() noexcept
|
{ return reverse_iterator(begin()); }
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
bool
|
empty() const noexcept
|
{ return _M_impl._M_node_count == 0; }
|
|
size_type
|
size() const noexcept
|
{ return _M_impl._M_node_count; }
|
|
size_type
|
max_size() const noexcept
|
{ return _Alloc_traits::max_size(_M_get_Node_allocator()); }
|
|
void
|
swap(_Rb_tree& __t)
|
noexcept(__is_nothrow_swappable<_Compare>::value);
|
|
|
|
template<typename _Arg>
|
pair<iterator, bool>
|
_M_insert_unique(_Arg&& __x);
|
|
template<typename _Arg>
|
iterator
|
_M_insert_equal(_Arg&& __x);
|
|
template<typename _Arg, typename _NodeGen>
|
iterator
|
_M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&);
|
|
template<typename _Arg>
|
iterator
|
_M_insert_unique_(const_iterator __pos, _Arg&& __x)
|
{
|
_Alloc_node __an(*this);
|
return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an);
|
}
|
|
template<typename _Arg, typename _NodeGen>
|
iterator
|
_M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&);
|
|
template<typename _Arg>
|
iterator
|
_M_insert_equal_(const_iterator __pos, _Arg&& __x)
|
{
|
_Alloc_node __an(*this);
|
return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an);
|
}
|
|
template<typename... _Args>
|
pair<iterator, bool>
|
_M_emplace_unique(_Args&&... __args);
|
|
template<typename... _Args>
|
iterator
|
_M_emplace_equal(_Args&&... __args);
|
|
template<typename... _Args>
|
iterator
|
_M_emplace_hint_unique(const_iterator __pos, _Args&&... __args);
|
|
template<typename... _Args>
|
iterator
|
_M_emplace_hint_equal(const_iterator __pos, _Args&&... __args);
|
# 1011 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
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:
|
|
|
|
__attribute ((__abi_tag__ ("cxx11")))
|
iterator
|
erase(const_iterator __position)
|
{
|
const_iterator __result = __position;
|
++__result;
|
_M_erase_aux(__position);
|
return __result._M_const_cast();
|
}
|
|
|
__attribute ((__abi_tag__ ("cxx11")))
|
iterator
|
erase(iterator __position)
|
{
|
iterator __result = __position;
|
++__result;
|
_M_erase_aux(__position);
|
return __result;
|
}
|
# 1059 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
size_type
|
erase(const key_type& __x);
|
|
|
|
|
__attribute ((__abi_tag__ ("cxx11")))
|
iterator
|
erase(const_iterator __first, const_iterator __last)
|
{
|
_M_erase_aux(__first, __last);
|
return __last._M_const_cast();
|
}
|
# 1081 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
void
|
erase(const key_type* __first, const key_type* __last);
|
|
void
|
clear() noexcept
|
{
|
_M_erase(_M_begin());
|
_M_impl._M_reset();
|
}
|
|
|
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;
|
# 1241 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h" 3
|
bool
|
__rb_verify() const;
|
|
|
_Rb_tree&
|
operator=(_Rb_tree&&)
|
noexcept(_Alloc_traits::_S_nothrow_move()
|
&& is_nothrow_move_assignable<_Compare>::value);
|
|
template<typename _Iterator>
|
void
|
_M_assign_unique(_Iterator, _Iterator);
|
|
template<typename _Iterator>
|
void
|
_M_assign_equal(_Iterator, _Iterator);
|
|
private:
|
|
void
|
_M_move_data(_Rb_tree&, std::true_type);
|
|
|
|
void
|
_M_move_data(_Rb_tree&, std::false_type);
|
|
|
void
|
_M_move_assign(_Rb_tree&, std::true_type);
|
|
|
|
void
|
_M_move_assign(_Rb_tree&, std::false_type);
|
|
};
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline bool
|
operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{
|
return __x.size() == __y.size()
|
&& std::equal(__x.begin(), __x.end(), __y.begin());
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline bool
|
operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{
|
return std::lexicographical_compare(__x.begin(), __x.end(),
|
__y.begin(), __y.end());
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline bool
|
operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{ return !(__x == __y); }
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline bool
|
operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{ return __y < __x; }
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline bool
|
operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{ return !(__y < __x); }
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline bool
|
operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{ return !(__x < __y); }
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline void
|
swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
|
{ __x.swap(__y); }
|
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a)
|
: _M_impl(__x._M_impl._M_key_compare, std::move(__a))
|
{
|
using __eq = typename _Alloc_traits::is_always_equal;
|
if (__x._M_root() != nullptr)
|
_M_move_data(__x, __eq());
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
void
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_move_data(_Rb_tree& __x, std::true_type)
|
{
|
_M_root() = __x._M_root();
|
_M_leftmost() = __x._M_leftmost();
|
_M_rightmost() = __x._M_rightmost();
|
_M_root()->_M_parent = _M_end();
|
|
__x._M_root() = 0;
|
__x._M_leftmost() = __x._M_end();
|
__x._M_rightmost() = __x._M_end();
|
|
this->_M_impl._M_node_count = __x._M_impl._M_node_count;
|
__x._M_impl._M_node_count = 0;
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
void
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_move_data(_Rb_tree& __x, std::false_type)
|
{
|
if (_M_get_Node_allocator() == __x._M_get_Node_allocator())
|
_M_move_data(__x, std::true_type());
|
else
|
{
|
_Alloc_node __an(*this);
|
auto __lbd =
|
[&__an](const value_type& __cval)
|
{
|
auto& __val = const_cast<value_type&>(__cval);
|
return __an(std::move_if_noexcept(__val));
|
};
|
_M_root() = _M_copy(__x._M_begin(), _M_end(), __lbd);
|
_M_leftmost() = _S_minimum(_M_root());
|
_M_rightmost() = _S_maximum(_M_root());
|
_M_impl._M_node_count = __x._M_impl._M_node_count;
|
}
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline void
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_move_assign(_Rb_tree& __x, true_type)
|
{
|
clear();
|
if (__x._M_root() != nullptr)
|
_M_move_data(__x, std::true_type());
|
std::__alloc_on_move(_M_get_Node_allocator(),
|
__x._M_get_Node_allocator());
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
void
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_move_assign(_Rb_tree& __x, false_type)
|
{
|
if (_M_get_Node_allocator() == __x._M_get_Node_allocator())
|
return _M_move_assign(__x, true_type{});
|
|
|
|
_Reuse_or_alloc_node __roan(*this);
|
_M_impl._M_reset();
|
if (__x._M_root() != nullptr)
|
{
|
auto __lbd =
|
[&__roan](const value_type& __cval)
|
{
|
auto& __val = const_cast<value_type&>(__cval);
|
return __roan(std::move_if_noexcept(__val));
|
};
|
_M_root() = _M_copy(__x._M_begin(), _M_end(), __lbd);
|
_M_leftmost() = _S_minimum(_M_root());
|
_M_rightmost() = _S_maximum(_M_root());
|
_M_impl._M_node_count = __x._M_impl._M_node_count;
|
__x.clear();
|
}
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
operator=(_Rb_tree&& __x)
|
noexcept(_Alloc_traits::_S_nothrow_move()
|
&& is_nothrow_move_assignable<_Compare>::value)
|
{
|
_M_impl._M_key_compare = __x._M_impl._M_key_compare;
|
constexpr bool __move_storage =
|
_Alloc_traits::_S_propagate_on_move_assign()
|
|| _Alloc_traits::_S_always_equal();
|
_M_move_assign(__x, __bool_constant<__move_storage>());
|
return *this;
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
template<typename _Iterator>
|
void
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_assign_unique(_Iterator __first, _Iterator __last)
|
{
|
_Reuse_or_alloc_node __roan(*this);
|
_M_impl._M_reset();
|
for (; __first != __last; ++__first)
|
_M_insert_unique_(end(), *__first, __roan);
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
template<typename _Iterator>
|
void
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_assign_equal(_Iterator __first, _Iterator __last)
|
{
|
_Reuse_or_alloc_node __roan(*this);
|
_M_impl._M_reset();
|
for (; __first != __last; ++__first)
|
_M_insert_equal_(end(), *__first, __roan);
|
}
|
|
|
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& __x)
|
{
|
if (this != &__x)
|
{
|
|
|
if (_Alloc_traits::_S_propagate_on_copy_assign())
|
{
|
auto& __this_alloc = this->_M_get_Node_allocator();
|
auto& __that_alloc = __x._M_get_Node_allocator();
|
if (!_Alloc_traits::_S_always_equal()
|
&& __this_alloc != __that_alloc)
|
{
|
|
|
clear();
|
std::__alloc_on_copy(__this_alloc, __that_alloc);
|
}
|
}
|
|
|
_Reuse_or_alloc_node __roan(*this);
|
_M_impl._M_reset();
|
_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(), __roan);
|
_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>
|
|
template<typename _Arg, typename _NodeGen>
|
|
|
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_insert_(_Base_ptr __x, _Base_ptr __p,
|
|
_Arg&& __v,
|
|
|
|
_NodeGen& __node_gen)
|
{
|
bool __insert_left = (__x != 0 || __p == _M_end()
|
|| _M_impl._M_key_compare(_KeyOfValue()(__v),
|
_S_key(__p)));
|
|
_Link_type __z = __node_gen(std::forward<_Arg>(__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>
|
|
template<typename _Arg>
|
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
|
_M_insert_lower(_Base_ptr __p, _Arg&& __v)
|
|
|
|
{
|
bool __insert_left = (__p == _M_end()
|
|| !_M_impl._M_key_compare(_S_key(__p),
|
_KeyOfValue()(__v)));
|
|
_Link_type __z = _M_create_node(std::forward<_Arg>(__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>
|
|
template<typename _Arg>
|
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
|
_M_insert_equal_lower(_Arg&& __v)
|
|
|
|
{
|
_Link_type __x = _M_begin();
|
_Base_ptr __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, std::forward<_Arg>(__v));
|
}
|
|
template<typename _Key, typename _Val, typename _KoV,
|
typename _Compare, typename _Alloc>
|
template<typename _NodeGen>
|
typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
|
_Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
|
_M_copy(_Const_Link_type __x, _Base_ptr __p, _NodeGen& __node_gen)
|
{
|
|
_Link_type __top = _M_clone_node(__x, __node_gen);
|
__top->_M_parent = __p;
|
|
try
|
{
|
if (__x->_M_right)
|
__top->_M_right = _M_copy(_S_right(__x), __top, __node_gen);
|
__p = __top;
|
__x = _S_left(__x);
|
|
while (__x != 0)
|
{
|
_Link_type __y = _M_clone_node(__x, __node_gen);
|
__p->_M_left = __y;
|
__y->_M_parent = __p;
|
if (__x->_M_right)
|
__y->_M_right = _M_copy(_S_right(__x), __y, __node_gen);
|
__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_drop_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, _Base_ptr __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_Base_ptr __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, _Base_ptr __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_Base_ptr __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();
|
_Base_ptr __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);
|
_Base_ptr __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_Base_ptr __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);
|
_Const_Base_ptr __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& __t)
|
noexcept(__is_nothrow_swappable<_Compare>::value)
|
{
|
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();
|
_M_impl._M_node_count = __t._M_impl._M_node_count;
|
|
__t._M_impl._M_reset();
|
}
|
}
|
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();
|
__t._M_impl._M_node_count = _M_impl._M_node_count;
|
|
_M_impl._M_reset();
|
}
|
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);
|
|
_Alloc_traits::_S_on_swap(_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();
|
_Base_ptr __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();
|
_Base_ptr __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>
|
|
template<typename _Arg>
|
|
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
|
_Compare, _Alloc>::iterator, bool>
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
|
_M_insert_unique(_Arg&& __v)
|
|
|
|
{
|
typedef pair<iterator, bool> _Res;
|
pair<_Base_ptr, _Base_ptr> __res
|
= _M_get_insert_unique_pos(_KeyOfValue()(__v));
|
|
if (__res.second)
|
{
|
_Alloc_node __an(*this);
|
return _Res(_M_insert_(__res.first, __res.second,
|
std::forward<_Arg>(__v), __an),
|
true);
|
}
|
|
return _Res(iterator(__res.first), false);
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
|
template<typename _Arg>
|
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
|
_M_insert_equal(_Arg&& __v)
|
|
|
|
{
|
pair<_Base_ptr, _Base_ptr> __res
|
= _M_get_insert_equal_pos(_KeyOfValue()(__v));
|
_Alloc_node __an(*this);
|
return _M_insert_(__res.first, __res.second,
|
std::forward<_Arg>(__v), __an);
|
}
|
|
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>
|
|
template<typename _Arg, typename _NodeGen>
|
|
|
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_insert_unique_(const_iterator __position,
|
|
_Arg&& __v,
|
|
|
|
_NodeGen& __node_gen)
|
{
|
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,
|
std::forward<_Arg>(__v),
|
__node_gen);
|
return iterator(__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>
|
|
template<typename _Arg, typename _NodeGen>
|
|
|
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_insert_equal_(const_iterator __position,
|
|
_Arg&& __v,
|
|
|
|
_NodeGen& __node_gen)
|
{
|
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,
|
std::forward<_Arg>(__v),
|
__node_gen);
|
|
return _M_insert_equal_lower(std::forward<_Arg>(__v));
|
}
|
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z)
|
{
|
bool __insert_left = (__x != 0 || __p == _M_end()
|
|| _M_impl._M_key_compare(_S_key(__z),
|
_S_key(__p)));
|
|
_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_node(_Base_ptr __p, _Link_type __z)
|
{
|
bool __insert_left = (__p == _M_end()
|
|| !_M_impl._M_key_compare(_S_key(__p),
|
_S_key(__z)));
|
|
_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_node(_Link_type __z)
|
{
|
_Link_type __x = _M_begin();
|
_Base_ptr __y = _M_end();
|
while (__x != 0)
|
{
|
__y = __x;
|
__x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ?
|
_S_left(__x) : _S_right(__x);
|
}
|
return _M_insert_lower_node(__y, __z);
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
template<typename... _Args>
|
pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
|
_Compare, _Alloc>::iterator, bool>
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_emplace_unique(_Args&&... __args)
|
{
|
_Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
|
|
try
|
{
|
typedef pair<iterator, bool> _Res;
|
auto __res = _M_get_insert_unique_pos(_S_key(__z));
|
if (__res.second)
|
return _Res(_M_insert_node(__res.first, __res.second, __z), true);
|
|
_M_drop_node(__z);
|
return _Res(iterator(__res.first), false);
|
}
|
catch(...)
|
{
|
_M_drop_node(__z);
|
throw;
|
}
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
template<typename... _Args>
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_emplace_equal(_Args&&... __args)
|
{
|
_Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
|
|
try
|
{
|
auto __res = _M_get_insert_equal_pos(_S_key(__z));
|
return _M_insert_node(__res.first, __res.second, __z);
|
}
|
catch(...)
|
{
|
_M_drop_node(__z);
|
throw;
|
}
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
template<typename... _Args>
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_emplace_hint_unique(const_iterator __pos, _Args&&... __args)
|
{
|
_Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
|
|
try
|
{
|
auto __res = _M_get_insert_hint_unique_pos(__pos, _S_key(__z));
|
|
if (__res.second)
|
return _M_insert_node(__res.first, __res.second, __z);
|
|
_M_drop_node(__z);
|
return iterator(__res.first);
|
}
|
catch(...)
|
{
|
_M_drop_node(__z);
|
throw;
|
}
|
}
|
|
template<typename _Key, typename _Val, typename _KeyOfValue,
|
typename _Compare, typename _Alloc>
|
template<typename... _Args>
|
typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
|
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
|
_M_emplace_hint_equal(const_iterator __pos, _Args&&... __args)
|
{
|
_Link_type __z = _M_create_node(std::forward<_Args>(__args)...);
|
|
try
|
{
|
auto __res = _M_get_insert_hint_equal_pos(__pos, _S_key(__z));
|
|
if (__res.second)
|
return _M_insert_node(__res.first, __res.second, __z);
|
|
return _M_insert_equal_lower_node(__z);
|
}
|
catch(...)
|
{
|
_M_drop_node(__z);
|
throw;
|
}
|
}
|
|
|
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)
|
{
|
_Alloc_node __an(*this);
|
for (; __first != __last; ++__first)
|
_M_insert_unique_(end(), *__first, __an);
|
}
|
|
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)
|
{
|
_Alloc_node __an(*this);
|
for (; __first != __last; ++__first)
|
_M_insert_equal_(end(), *__first, __an);
|
}
|
|
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_drop_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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/map" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 1 3
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 3
|
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 3
|
# 69 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_relops.h" 1 3
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_relops.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
namespace rel_ops
|
{
|
# 85 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_relops.h" 3
|
template <class _Tp>
|
inline bool
|
operator!=(const _Tp& __x, const _Tp& __y)
|
{ return !(__x == __y); }
|
# 98 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_relops.h" 3
|
template <class _Tp>
|
inline bool
|
operator>(const _Tp& __x, const _Tp& __y)
|
{ return __y < __x; }
|
# 111 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_relops.h" 3
|
template <class _Tp>
|
inline bool
|
operator<=(const _Tp& __x, const _Tp& __y)
|
{ return !(__y < __x); }
|
# 124 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_relops.h" 3
|
template <class _Tp>
|
inline bool
|
operator>=(const _Tp& __x, const _Tp& __y)
|
{ return !(__x < __y); }
|
|
|
}
|
|
}
|
# 70 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 2 3
|
|
|
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
template<typename _Tp>
|
struct tuple_size;
|
|
|
|
template<typename _Tp>
|
struct tuple_size<const _Tp>
|
: integral_constant<size_t, tuple_size<_Tp>::value> { };
|
|
template<typename _Tp>
|
struct tuple_size<volatile _Tp>
|
: integral_constant<size_t, tuple_size<_Tp>::value> { };
|
|
template<typename _Tp>
|
struct tuple_size<const volatile _Tp>
|
: integral_constant<size_t, tuple_size<_Tp>::value> { };
|
|
|
template<std::size_t __i, typename _Tp>
|
struct tuple_element;
|
|
|
template<std::size_t __i, typename _Tp>
|
using __tuple_element_t = typename tuple_element<__i, _Tp>::type;
|
|
template<std::size_t __i, typename _Tp>
|
struct tuple_element<__i, const _Tp>
|
{
|
typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type;
|
};
|
|
template<std::size_t __i, typename _Tp>
|
struct tuple_element<__i, volatile _Tp>
|
{
|
typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type;
|
};
|
|
template<std::size_t __i, typename _Tp>
|
struct tuple_element<__i, const volatile _Tp>
|
{
|
typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type;
|
};
|
# 133 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 3
|
template<typename>
|
struct __is_tuple_like_impl : false_type
|
{ };
|
|
|
|
|
template<typename _T1, typename _T2>
|
struct __is_tuple_like_impl<std::pair<_T1, _T2>> : true_type
|
{ };
|
|
|
template<class _Tp1, class _Tp2>
|
struct tuple_size<std::pair<_Tp1, _Tp2>>
|
: public integral_constant<std::size_t, 2> { };
|
|
|
template<class _Tp1, class _Tp2>
|
struct tuple_element<0, std::pair<_Tp1, _Tp2>>
|
{ typedef _Tp1 type; };
|
|
|
template<class _Tp1, class _Tp2>
|
struct tuple_element<1, std::pair<_Tp1, _Tp2>>
|
{ typedef _Tp2 type; };
|
|
template<std::size_t _Int>
|
struct __pair_get;
|
|
template<>
|
struct __pair_get<0>
|
{
|
template<typename _Tp1, typename _Tp2>
|
static constexpr _Tp1&
|
__get(std::pair<_Tp1, _Tp2>& __pair) noexcept
|
{ return __pair.first; }
|
|
template<typename _Tp1, typename _Tp2>
|
static constexpr _Tp1&&
|
__move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept
|
{ return std::forward<_Tp1>(__pair.first); }
|
|
template<typename _Tp1, typename _Tp2>
|
static constexpr const _Tp1&
|
__const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept
|
{ return __pair.first; }
|
};
|
|
template<>
|
struct __pair_get<1>
|
{
|
template<typename _Tp1, typename _Tp2>
|
static constexpr _Tp2&
|
__get(std::pair<_Tp1, _Tp2>& __pair) noexcept
|
{ return __pair.second; }
|
|
template<typename _Tp1, typename _Tp2>
|
static constexpr _Tp2&&
|
__move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept
|
{ return std::forward<_Tp2>(__pair.second); }
|
|
template<typename _Tp1, typename _Tp2>
|
static constexpr const _Tp2&
|
__const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept
|
{ return __pair.second; }
|
};
|
|
template<std::size_t _Int, class _Tp1, class _Tp2>
|
constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&
|
get(std::pair<_Tp1, _Tp2>& __in) noexcept
|
{ return __pair_get<_Int>::__get(__in); }
|
|
template<std::size_t _Int, class _Tp1, class _Tp2>
|
constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&&
|
get(std::pair<_Tp1, _Tp2>&& __in) noexcept
|
{ return __pair_get<_Int>::__move_get(std::move(__in)); }
|
|
template<std::size_t _Int, class _Tp1, class _Tp2>
|
constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&
|
get(const std::pair<_Tp1, _Tp2>& __in) noexcept
|
{ return __pair_get<_Int>::__const_get(__in); }
|
# 260 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 3
|
template<size_t... _Indexes> struct _Index_tuple { };
|
|
|
template<typename _Itup1, typename _Itup2> struct _Itup_cat;
|
|
template<size_t... _Ind1, size_t... _Ind2>
|
struct _Itup_cat<_Index_tuple<_Ind1...>, _Index_tuple<_Ind2...>>
|
{
|
using __type = _Index_tuple<_Ind1..., (_Ind2 + sizeof...(_Ind1))...>;
|
};
|
|
|
template<size_t _Num>
|
struct _Build_index_tuple
|
: _Itup_cat<typename _Build_index_tuple<_Num / 2>::__type,
|
typename _Build_index_tuple<_Num - _Num / 2>::__type>
|
{ };
|
|
template<>
|
struct _Build_index_tuple<1>
|
{
|
typedef _Index_tuple<0> __type;
|
};
|
|
template<>
|
struct _Build_index_tuple<0>
|
{
|
typedef _Index_tuple<> __type;
|
};
|
# 334 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/utility" 3
|
}
|
# 39 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/array" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/array" 3
|
|
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdexcept" 1 3
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdexcept" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 1 3
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stringfwd.h" 1 3
|
# 38 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stringfwd.h" 3
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 52 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stringfwd.h" 3
|
template<class _CharT>
|
struct char_traits;
|
|
template<> struct char_traits<char>;
|
|
|
template<> struct char_traits<wchar_t>;
|
|
|
|
|
template<> struct char_traits<char16_t>;
|
template<> struct char_traits<char32_t>;
|
|
|
namespace __cxx11 {
|
|
template<typename _CharT, typename _Traits = char_traits<_CharT>,
|
typename _Alloc = allocator<_CharT> >
|
class basic_string;
|
|
|
typedef basic_string<char> string;
|
|
|
|
typedef basic_string<wchar_t> wstring;
|
|
|
|
|
|
typedef basic_string<char16_t> u16string;
|
|
|
typedef basic_string<char32_t> u32string;
|
|
|
}
|
|
|
|
|
}
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/char_traits.h" 1 3
|
# 38 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/char_traits.h" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/postypes.h" 1 3
|
# 39 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/postypes.h" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 3
|
|
|
|
|
# 1 "/usr/include/wchar.h" 1 3 4
|
# 36 "/usr/include/wchar.h" 3 4
|
# 1 "/usr/xenomai/include/cobalt/stdio.h" 1 3 4
|
# 20 "/usr/xenomai/include/cobalt/stdio.h" 3
|
# 37 "/usr/include/wchar.h" 2 3 4
|
# 51 "/usr/include/wchar.h" 3 4
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 132 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 3 4
|
typedef unsigned int wint_t;
|
# 52 "/usr/include/wchar.h" 2 3 4
|
# 106 "/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 () __attribute__ ((__nonnull__ (1, 2)));
|
|
|
extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
|
const wchar_t *__restrict __src, size_t __n)
|
throw () __attribute__ ((__nonnull__ (1, 2)));
|
|
|
extern wchar_t *wcscat (wchar_t *__restrict __dest,
|
const wchar_t *__restrict __src)
|
throw () __attribute__ ((__nonnull__ (1, 2)));
|
|
extern wchar_t *wcsncat (wchar_t *__restrict __dest,
|
const wchar_t *__restrict __src, size_t __n)
|
throw () __attribute__ ((__nonnull__ (1, 2)));
|
|
|
extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
|
|
extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
|
throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
|
|
|
|
|
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 ();
|
# 209 "/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__));
|
# 230 "/usr/include/wchar.h" 3 4
|
extern wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
|
throw () __attribute__ ((__pure__));
|
# 240 "/usr/include/wchar.h" 3 4
|
extern wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
|
throw () __attribute__ ((__pure__));
|
|
|
|
|
|
|
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__));
|
# 269 "/usr/include/wchar.h" 3 4
|
extern wchar_t *wcspbrk (const wchar_t *__wcs, const wchar_t *__accept)
|
throw () __attribute__ ((__pure__));
|
# 280 "/usr/include/wchar.h" 3 4
|
extern wchar_t *wcsstr (const wchar_t *__haystack, const wchar_t *__needle)
|
throw () __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__));
|
# 302 "/usr/include/wchar.h" 3 4
|
extern wchar_t *wcswcs (const wchar_t *__haystack, const wchar_t *__needle)
|
throw () __attribute__ ((__pure__));
|
|
|
|
|
|
extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
|
throw () __attribute__ ((__pure__));
|
# 323 "/usr/include/wchar.h" 3 4
|
extern wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, size_t __n)
|
throw () __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 ();
|
# 389 "/usr/include/wchar.h" 3 4
|
extern wint_t __btowc_alias (int __c) __asm ("btowc");
|
extern __inline __attribute__ ((__gnu_inline__)) wint_t
|
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
|
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
|
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 ();
|
# 533 "/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 () ;
|
# 692 "/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 () ;
|
# 748 "/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);
|
# 804 "/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);
|
# 830 "/usr/include/wchar.h" 3 4
|
extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
|
extern wint_t putwchar_unlocked (wchar_t __wc);
|
# 840 "/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 ();
|
# 894 "/usr/include/wchar.h" 3 4
|
}
|
# 45 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 2 3
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 3
|
namespace std
|
{
|
using ::mbstate_t;
|
}
|
# 135 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
|
|
inline wchar_t*
|
wcschr(wchar_t* __p, wchar_t __c)
|
{ return wcschr(const_cast<const wchar_t*>(__p), __c); }
|
|
inline wchar_t*
|
wcspbrk(wchar_t* __s1, const wchar_t* __s2)
|
{ return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
|
|
inline wchar_t*
|
wcsrchr(wchar_t* __p, wchar_t __c)
|
{ return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
|
|
inline wchar_t*
|
wcsstr(wchar_t* __s1, const wchar_t* __s2)
|
{ return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
|
|
inline wchar_t*
|
wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
|
{ return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace __gnu_cxx
|
{
|
|
|
|
|
|
using ::wcstold;
|
# 257 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 3
|
using ::wcstoll;
|
using ::wcstoull;
|
|
}
|
|
namespace std
|
{
|
using ::__gnu_cxx::wcstold;
|
using ::__gnu_cxx::wcstoll;
|
using ::__gnu_cxx::wcstoull;
|
}
|
# 277 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 3
|
namespace std
|
{
|
|
using std::wcstof;
|
|
|
using std::vfwscanf;
|
|
|
using std::vswscanf;
|
|
|
using std::vwscanf;
|
|
|
|
using std::wcstold;
|
using std::wcstoll;
|
using std::wcstoull;
|
|
}
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/postypes.h" 2 3
|
# 68 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/postypes.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 90 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/postypes.h" 3
|
typedef long long streamoff;
|
|
|
|
|
|
|
|
typedef ptrdiff_t streamsize;
|
# 111 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
|
|
|
typedef fpos<mbstate_t> u16streampos;
|
|
typedef fpos<mbstate_t> u32streampos;
|
|
|
|
}
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/char_traits.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 3
|
|
|
|
|
# 1 "/usr/include/wchar.h" 1 3 4
|
# 45 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 2 3
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/char_traits.h" 2 3
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
{
|
# 57 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 constexpr bool
|
eq(const char_type& __c1, const char_type& __c2)
|
{ return __c1 == __c2; }
|
|
static constexpr 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 constexpr char_type
|
to_char_type(const int_type& __c)
|
{ return static_cast<char_type>(__c); }
|
|
static constexpr int_type
|
to_int_type(const char_type& __c)
|
{ return static_cast<int_type>(__c); }
|
|
static constexpr bool
|
eq_int_type(const int_type& __c1, const int_type& __c2)
|
{ return __c1 == __c2; }
|
|
static constexpr int_type
|
eof()
|
{ return static_cast<int_type>(-1); }
|
|
static constexpr 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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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) noexcept
|
{ __c1 = __c2; }
|
|
static constexpr bool
|
eq(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr bool
|
lt(const char_type& __c1, const char_type& __c2) noexcept
|
{
|
|
return (static_cast<unsigned char>(__c1)
|
< static_cast<unsigned char>(__c2));
|
}
|
|
static int
|
compare(const char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return 0;
|
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)
|
{
|
if (__n == 0)
|
return 0;
|
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)
|
{
|
if (__n == 0)
|
return __s1;
|
return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n));
|
}
|
|
static char_type*
|
copy(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
|
}
|
|
static char_type*
|
assign(char_type* __s, size_t __n, char_type __a)
|
{
|
if (__n == 0)
|
return __s;
|
return static_cast<char_type*>(__builtin_memset(__s, __a, __n));
|
}
|
|
static constexpr char_type
|
to_char_type(const int_type& __c) noexcept
|
{ return static_cast<char_type>(__c); }
|
|
|
|
static constexpr int_type
|
to_int_type(const char_type& __c) noexcept
|
{ return static_cast<int_type>(static_cast<unsigned char>(__c)); }
|
|
static constexpr bool
|
eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr int_type
|
eof() noexcept
|
{ return static_cast<int_type>(-1); }
|
|
static constexpr int_type
|
not_eof(const int_type& __c) noexcept
|
{ 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) noexcept
|
{ __c1 = __c2; }
|
|
static constexpr bool
|
eq(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr bool
|
lt(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 < __c2; }
|
|
static int
|
compare(const char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return 0;
|
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)
|
{
|
if (__n == 0)
|
return 0;
|
return wmemchr(__s, __a, __n);
|
}
|
|
static char_type*
|
move(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return wmemmove(__s1, __s2, __n);
|
}
|
|
static char_type*
|
copy(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return wmemcpy(__s1, __s2, __n);
|
}
|
|
static char_type*
|
assign(char_type* __s, size_t __n, char_type __a)
|
{
|
if (__n == 0)
|
return __s;
|
return wmemset(__s, __a, __n);
|
}
|
|
static constexpr char_type
|
to_char_type(const int_type& __c) noexcept
|
{ return char_type(__c); }
|
|
static constexpr int_type
|
to_int_type(const char_type& __c) noexcept
|
{ return int_type(__c); }
|
|
static constexpr bool
|
eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr int_type
|
eof() noexcept
|
{ return static_cast<int_type>((0xffffffffu)); }
|
|
static constexpr int_type
|
not_eof(const int_type& __c) noexcept
|
{ return eq_int_type(__c, eof()) ? 0 : __c; }
|
};
|
|
|
|
}
|
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdint" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdint" 3
|
|
|
|
|
|
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdint.h" 1 3
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdint" 2 3
|
|
|
|
|
namespace std
|
{
|
using ::int8_t;
|
using ::int16_t;
|
using ::int32_t;
|
using ::int64_t;
|
|
using ::int_fast8_t;
|
using ::int_fast16_t;
|
using ::int_fast32_t;
|
using ::int_fast64_t;
|
|
using ::int_least8_t;
|
using ::int_least16_t;
|
using ::int_least32_t;
|
using ::int_least64_t;
|
|
using ::intmax_t;
|
using ::intptr_t;
|
|
using ::uint8_t;
|
using ::uint16_t;
|
using ::uint32_t;
|
using ::uint64_t;
|
|
using ::uint_fast8_t;
|
using ::uint_fast16_t;
|
using ::uint_fast32_t;
|
using ::uint_fast64_t;
|
|
using ::uint_least8_t;
|
using ::uint_least16_t;
|
using ::uint_least32_t;
|
using ::uint_least64_t;
|
|
using ::uintmax_t;
|
using ::uintptr_t;
|
}
|
# 421 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/char_traits.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
template<>
|
struct char_traits<char16_t>
|
{
|
typedef char16_t char_type;
|
typedef uint_least16_t int_type;
|
typedef streamoff off_type;
|
typedef u16streampos pos_type;
|
typedef mbstate_t state_type;
|
|
static void
|
assign(char_type& __c1, const char_type& __c2) noexcept
|
{ __c1 = __c2; }
|
|
static constexpr bool
|
eq(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr bool
|
lt(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 < __c2; }
|
|
static int
|
compare(const char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
for (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;
|
}
|
|
static size_t
|
length(const char_type* __s)
|
{
|
size_t __i = 0;
|
while (!eq(__s[__i], char_type()))
|
++__i;
|
return __i;
|
}
|
|
static const char_type*
|
find(const char_type* __s, size_t __n, const char_type& __a)
|
{
|
for (size_t __i = 0; __i < __n; ++__i)
|
if (eq(__s[__i], __a))
|
return __s + __i;
|
return 0;
|
}
|
|
static char_type*
|
move(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return (static_cast<char_type*>
|
(__builtin_memmove(__s1, __s2, __n * sizeof(char_type))));
|
}
|
|
static char_type*
|
copy(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return (static_cast<char_type*>
|
(__builtin_memcpy(__s1, __s2, __n * sizeof(char_type))));
|
}
|
|
static char_type*
|
assign(char_type* __s, size_t __n, char_type __a)
|
{
|
for (size_t __i = 0; __i < __n; ++__i)
|
assign(__s[__i], __a);
|
return __s;
|
}
|
|
static constexpr char_type
|
to_char_type(const int_type& __c) noexcept
|
{ return char_type(__c); }
|
|
static constexpr int_type
|
to_int_type(const char_type& __c) noexcept
|
{ return int_type(__c); }
|
|
static constexpr bool
|
eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr int_type
|
eof() noexcept
|
{ return static_cast<int_type>(-1); }
|
|
static constexpr int_type
|
not_eof(const int_type& __c) noexcept
|
{ return eq_int_type(__c, eof()) ? 0 : __c; }
|
};
|
|
template<>
|
struct char_traits<char32_t>
|
{
|
typedef char32_t char_type;
|
typedef uint_least32_t int_type;
|
typedef streamoff off_type;
|
typedef u32streampos pos_type;
|
typedef mbstate_t state_type;
|
|
static void
|
assign(char_type& __c1, const char_type& __c2) noexcept
|
{ __c1 = __c2; }
|
|
static constexpr bool
|
eq(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr bool
|
lt(const char_type& __c1, const char_type& __c2) noexcept
|
{ return __c1 < __c2; }
|
|
static int
|
compare(const char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
for (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;
|
}
|
|
static size_t
|
length(const char_type* __s)
|
{
|
size_t __i = 0;
|
while (!eq(__s[__i], char_type()))
|
++__i;
|
return __i;
|
}
|
|
static const char_type*
|
find(const char_type* __s, size_t __n, const char_type& __a)
|
{
|
for (size_t __i = 0; __i < __n; ++__i)
|
if (eq(__s[__i], __a))
|
return __s + __i;
|
return 0;
|
}
|
|
static char_type*
|
move(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return (static_cast<char_type*>
|
(__builtin_memmove(__s1, __s2, __n * sizeof(char_type))));
|
}
|
|
static char_type*
|
copy(char_type* __s1, const char_type* __s2, size_t __n)
|
{
|
if (__n == 0)
|
return __s1;
|
return (static_cast<char_type*>
|
(__builtin_memcpy(__s1, __s2, __n * sizeof(char_type))));
|
}
|
|
static char_type*
|
assign(char_type* __s, size_t __n, char_type __a)
|
{
|
for (size_t __i = 0; __i < __n; ++__i)
|
assign(__s[__i], __a);
|
return __s;
|
}
|
|
static constexpr char_type
|
to_char_type(const int_type& __c) noexcept
|
{ return char_type(__c); }
|
|
static constexpr int_type
|
to_int_type(const char_type& __c) noexcept
|
{ return int_type(__c); }
|
|
static constexpr bool
|
eq_int_type(const int_type& __c1, const int_type& __c2) noexcept
|
{ return __c1 == __c2; }
|
|
static constexpr int_type
|
eof() noexcept
|
{ return static_cast<int_type>(-1); }
|
|
static constexpr int_type
|
not_eof(const int_type& __c) noexcept
|
{ return eq_int_type(__c, eof()) ? 0 : __c; }
|
};
|
|
|
}
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 2 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/localefwd.h" 1 3
|
# 38 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/localefwd.h" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++locale.h" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/c++locale.h" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/clocale" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/clocale" 3
|
|
|
# 1 "/usr/include/locale.h" 1 3 4
|
# 28 "/usr/include/locale.h" 3 4
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 29 "/usr/include/locale.h" 2 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4
|
# 30 "/usr/include/locale.h" 2 3 4
|
|
extern "C" {
|
# 53 "/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;
|
# 120 "/usr/include/locale.h" 3 4
|
};
|
|
|
|
extern char *setlocale (int __category, const char *__locale) throw ();
|
|
|
extern struct lconv *localeconv (void) throw ();
|
# 151 "/usr/include/locale.h" 3 4
|
extern __locale_t newlocale (int __category_mask, const char *__locale,
|
__locale_t __base) throw ();
|
# 186 "/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/clocale" 2 3
|
|
|
|
|
|
|
|
|
namespace std
|
{
|
using ::lconv;
|
using ::setlocale;
|
using ::localeconv;
|
}
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/localefwd.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/iosfwd" 1 3
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/iosfwd" 3
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 74 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
|
|
namespace __cxx11 {
|
|
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;
|
|
|
|
|
}
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/localefwd.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cctype" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cctype" 3
|
|
|
# 1 "/usr/include/ctype.h" 1 3 4
|
# 28 "/usr/include/ctype.h" 3 4
|
extern "C" {
|
# 46 "/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))
|
};
|
# 79 "/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__));
|
# 110 "/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 ();
|
# 136 "/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 ();
|
# 271 "/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 ();
|
# 347 "/usr/include/ctype.h" 3 4
|
}
|
# 43 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cctype" 2 3
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
|
|
|
|
|
|
|
namespace std
|
{
|
using ::isblank;
|
}
|
# 43 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/localefwd.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 55 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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>
|
bool
|
isblank(_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;
|
|
namespace __cxx11 {
|
template<typename _CharT> class numpunct;
|
template<typename _CharT> class numpunct_byname;
|
}
|
|
namespace __cxx11 {
|
|
template<typename _CharT>
|
class collate;
|
template<typename _CharT>
|
class collate_byname;
|
}
|
|
|
class time_base;
|
namespace __cxx11 {
|
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;
|
namespace __cxx11 {
|
template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
|
class money_get;
|
template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
|
class money_put;
|
}
|
namespace __cxx11 {
|
template<typename _CharT, bool _Intl = false>
|
class moneypunct;
|
template<typename _CharT, bool _Intl = false>
|
class moneypunct_byname;
|
}
|
|
|
class messages_base;
|
namespace __cxx11 {
|
template<typename _CharT>
|
class messages;
|
template<typename _CharT>
|
class messages_byname;
|
}
|
|
|
}
|
# 44 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/ostream_insert.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/ostream_insert.h" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/cxxabi_forced.h" 1 3
|
# 35 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 2 3
|
|
|
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 1 3
|
# 38 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/atomicity.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/atomicity.h" 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr.h" 1 3
|
# 30 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr.h" 3
|
#pragma GCC visibility push(default)
|
# 148 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr-default.h" 1 3
|
# 35 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr-default.h" 3
|
# 1 "/usr/xenomai/include/cobalt/pthread.h" 1 3
|
# 19 "/usr/xenomai/include/cobalt/pthread.h" 3
|
# 1 "/usr/include/pthread.h" 1 3 4
|
# 23 "/usr/include/pthread.h" 3 4
|
# 1 "/usr/xenomai/include/cobalt/sched.h" 1 3 4
|
# 19 "/usr/xenomai/include/cobalt/sched.h" 3
|
# 1 "/usr/include/sched.h" 1 3 4
|
# 28 "/usr/include/sched.h" 3 4
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stddef.h" 1 3 4
|
# 29 "/usr/include/sched.h" 2 3 4
|
|
|
|
|
|
# 1 "/usr/xenomai/include/cobalt/time.h" 1 3 4
|
# 19 "/usr/xenomai/include/cobalt/time.h" 3
|
# 35 "/usr/include/sched.h" 2 3 4
|
|
|
|
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4
|
# 73 "/usr/include/arm-linux-gnueabihf/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/arm-linux-gnueabihf/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/arm-linux-gnueabihf/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 () ;
|
extern void __sched_cpufree (cpu_set_t *__set) throw ();
|
|
}
|
# 44 "/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 ();
|
# 118 "/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 ();
|
|
|
}
|
# 20 "/usr/xenomai/include/cobalt/sched.h" 2 3
|
|
|
|
|
|
|
# 1 "/usr/xenomai/include/cobalt/uapi/sched.h" 1 3
|
# 32 "/usr/xenomai/include/cobalt/uapi/sched.h" 3
|
struct __sched_ss_param {
|
int __sched_low_priority;
|
struct timespec __sched_repl_period;
|
struct timespec __sched_init_budget;
|
int __sched_max_repl;
|
};
|
|
|
|
struct __sched_rr_param {
|
struct timespec __sched_rr_quantum;
|
};
|
|
|
|
|
|
|
struct __sched_tp_param {
|
int __sched_partition;
|
};
|
|
struct sched_tp_window {
|
struct timespec offset;
|
struct timespec duration;
|
int ptid;
|
};
|
|
enum {
|
sched_tp_install,
|
sched_tp_uninstall,
|
sched_tp_start,
|
sched_tp_stop,
|
};
|
|
struct __sched_config_tp {
|
int op;
|
int nr_windows;
|
struct sched_tp_window windows[0];
|
};
|
# 81 "/usr/xenomai/include/cobalt/uapi/sched.h" 3
|
struct __sched_quota_param {
|
int __sched_group;
|
};
|
|
enum {
|
sched_quota_add,
|
sched_quota_remove,
|
sched_quota_force_remove,
|
sched_quota_set,
|
sched_quota_get,
|
};
|
|
struct __sched_config_quota {
|
int op;
|
union {
|
struct {
|
int pshared;
|
} add;
|
struct {
|
int tgid;
|
} remove;
|
struct {
|
int tgid;
|
int quota;
|
int quota_peak;
|
} set;
|
struct {
|
int tgid;
|
} get;
|
};
|
struct __sched_quota_info {
|
int tgid;
|
int quota;
|
int quota_peak;
|
int quota_sum;
|
} info;
|
};
|
|
|
|
struct sched_param_ex {
|
int __sched_priority;
|
union {
|
struct __sched_ss_param ss;
|
struct __sched_rr_param rr;
|
struct __sched_tp_param tp;
|
struct __sched_quota_param quota;
|
} sched_u;
|
};
|
|
union sched_config {
|
struct __sched_config_tp tp;
|
struct __sched_config_quota quota;
|
};
|
# 27 "/usr/xenomai/include/cobalt/sched.h" 2 3
|
|
|
extern "C" {
|
|
|
__typeof__(int) __cobalt_sched_yield(void); __typeof__(int) __real_sched_yield(void); __typeof__(int) __wrap_sched_yield(void);
|
|
__typeof__(int) __cobalt_sched_get_priority_min(int policy); __typeof__(int) __real_sched_get_priority_min(int policy); __typeof__(int) __wrap_sched_get_priority_min(int policy);
|
|
__typeof__(int) __cobalt_sched_get_priority_max(int policy); __typeof__(int) __real_sched_get_priority_max(int policy); __typeof__(int) __wrap_sched_get_priority_max(int policy);
|
|
__typeof__(int) __cobalt_sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); __typeof__(int) __real_sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); __typeof__(int) __wrap_sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
|
|
|
__typeof__(int) __cobalt_sched_getscheduler(pid_t pid); __typeof__(int) __real_sched_getscheduler(pid_t pid); __typeof__(int) __wrap_sched_getscheduler(pid_t pid);
|
|
int sched_get_priority_min_ex(int policy);
|
|
int sched_get_priority_max_ex(int policy);
|
|
int sched_setscheduler_ex(pid_t pid, int policy,
|
const struct sched_param_ex *param_ex);
|
|
int sched_getscheduler_ex(pid_t pid, int *policy_r,
|
struct sched_param_ex *param_ex);
|
|
int sched_setconfig_np(int cpu, int policy,
|
const union sched_config *config, size_t len);
|
|
ssize_t sched_getconfig_np(int cpu, int policy,
|
union sched_config *config, size_t *len_r);
|
|
|
}
|
# 24 "/usr/include/pthread.h" 2 3 4
|
# 1 "/usr/xenomai/include/cobalt/time.h" 1 3 4
|
# 19 "/usr/xenomai/include/cobalt/time.h" 3
|
# 25 "/usr/include/pthread.h" 2 3 4
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4
|
# 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4
|
typedef int __jmp_buf[64] __attribute__((__aligned__ (8)));
|
# 28 "/usr/include/pthread.h" 2 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/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
|
};
|
# 114 "/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
|
};
|
# 155 "/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
|
|
};
|
# 190 "/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
|
|
};
|
# 228 "/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_default_np (pthread_attr_t *__attr)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
|
throw () __attribute__ ((__nonnull__ (1)));
|
|
|
|
|
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)));
|
# 494 "/usr/include/pthread.h" 3 4
|
extern int pthread_once (pthread_once_t *__once_control,
|
void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
|
# 506 "/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__));
|
# 540 "/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); }
|
};
|
# 742 "/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)));
|
# 806 "/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)));
|
# 888 "/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)));
|
# 1000 "/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)));
|
# 1044 "/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)));
|
# 1111 "/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)));
|
# 1145 "/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
|
pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ()
|
{
|
return __thread1 == __thread2;
|
}
|
|
|
}
|
# 20 "/usr/xenomai/include/cobalt/pthread.h" 2 3
|
|
|
|
|
# 1 "/usr/xenomai/include/boilerplate/libc.h" 1 3
|
# 21 "/usr/xenomai/include/boilerplate/libc.h" 3
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/limits.h" 1 3
|
# 37 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/limits.h" 3
|
# 1 "/usr/include/limits.h" 1 3 4
|
# 143 "/usr/include/limits.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4
|
# 160 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4
|
# 38 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4
|
# 1 "/usr/include/linux/limits.h" 1 3 4
|
# 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4
|
# 161 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4
|
# 144 "/usr/include/limits.h" 2 3 4
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4
|
# 148 "/usr/include/limits.h" 2 3 4
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4
|
# 33 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4
|
# 34 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4
|
# 152 "/usr/include/limits.h" 2 3 4
|
# 38 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/limits.h" 2 3
|
# 22 "/usr/xenomai/include/boilerplate/libc.h" 2 3
|
# 211 "/usr/xenomai/include/boilerplate/libc.h" 3
|
int clock_nanosleep(clockid_t clock_id, int flags,
|
const struct timespec *request,
|
struct timespec *remain);
|
|
|
|
int pthread_setname_np(pthread_t thread, const char *name);
|
# 25 "/usr/xenomai/include/cobalt/pthread.h" 2 3
|
|
# 1 "/usr/xenomai/include/cobalt/uapi/thread.h" 1 3
|
# 21 "/usr/xenomai/include/cobalt/uapi/thread.h" 3
|
# 1 "/usr/xenomai/include/cobalt/uapi/kernel/thread.h" 1 3
|
# 21 "/usr/xenomai/include/cobalt/uapi/kernel/thread.h" 3
|
# 1 "/usr/xenomai/include/cobalt/uapi/kernel/types.h" 1 3
|
# 21 "/usr/xenomai/include/cobalt/uapi/kernel/types.h" 3
|
# 1 "/usr/include/linux/types.h" 1 3 4
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/asm/types.h" 1 3 4
|
|
|
|
# 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4
|
# 11 "/usr/include/asm-generic/int-ll64.h" 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 1 3 4
|
# 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4
|
# 2 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 2 3 4
|
# 12 "/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;
|
# 5 "/usr/include/arm-linux-gnueabihf/asm/types.h" 2 3 4
|
# 5 "/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
|
# 5 "/usr/include/linux/posix_types.h" 2 3 4
|
# 24 "/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/arm-linux-gnueabihf/asm/posix_types.h" 1 3 4
|
# 22 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 3 4
|
typedef unsigned short __kernel_mode_t;
|
|
|
typedef unsigned short __kernel_ipc_pid_t;
|
|
|
typedef unsigned short __kernel_uid_t;
|
typedef unsigned short __kernel_gid_t;
|
|
|
typedef unsigned short __kernel_old_dev_t;
|
|
|
|
# 1 "/usr/include/asm-generic/posix_types.h" 1 3 4
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/asm/bitsperlong.h" 1 3 4
|
# 5 "/usr/include/asm-generic/posix_types.h" 2 3 4
|
# 14 "/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 int __kernel_pid_t;
|
# 40 "/usr/include/asm-generic/posix_types.h" 3 4
|
typedef __kernel_long_t __kernel_suseconds_t;
|
|
|
|
typedef int __kernel_daddr_t;
|
|
|
|
typedef unsigned int __kernel_uid32_t;
|
typedef unsigned int __kernel_gid32_t;
|
|
|
|
typedef __kernel_uid_t __kernel_old_uid_t;
|
typedef __kernel_gid_t __kernel_old_gid_t;
|
# 67 "/usr/include/asm-generic/posix_types.h" 3 4
|
typedef unsigned int __kernel_size_t;
|
typedef int __kernel_ssize_t;
|
typedef int __kernel_ptrdiff_t;
|
# 78 "/usr/include/asm-generic/posix_types.h" 3 4
|
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;
|
# 36 "/usr/include/arm-linux-gnueabihf/asm/posix_types.h" 2 3 4
|
# 36 "/usr/include/linux/posix_types.h" 2 3 4
|
# 9 "/usr/include/linux/types.h" 2 3 4
|
# 27 "/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;
|
# 22 "/usr/xenomai/include/cobalt/uapi/kernel/types.h" 2 3
|
# 1 "/usr/xenomai/include/cobalt/uapi/kernel/limits.h" 1 3
|
# 23 "/usr/xenomai/include/cobalt/uapi/kernel/types.h" 2 3
|
|
typedef __u64 xnticks_t;
|
|
typedef __s64 xnsticks_t;
|
|
typedef __u32 xnhandle_t;
|
# 45 "/usr/xenomai/include/cobalt/uapi/kernel/types.h" 3
|
static inline xnhandle_t xnhandle_get_index(xnhandle_t handle)
|
{
|
return handle & ~((xnhandle_t)0xf0000000);
|
}
|
|
|
|
|
|
static inline xnhandle_t xnhandle_get_id(xnhandle_t handle)
|
{
|
return handle & ~((xnhandle_t)0x80000000);
|
}
|
# 22 "/usr/xenomai/include/cobalt/uapi/kernel/thread.h" 2 3
|
# 104 "/usr/xenomai/include/cobalt/uapi/kernel/thread.h" 3
|
struct xnthread_user_window {
|
__u32 state;
|
__u32 info;
|
__u32 grant_value;
|
};
|
# 22 "/usr/xenomai/include/cobalt/uapi/thread.h" 2 3
|
|
|
|
|
|
|
struct cobalt_mutexattr {
|
int type : 3;
|
int protocol : 3;
|
int pshared : 1;
|
int __pad : 1;
|
};
|
|
struct cobalt_condattr {
|
int clock : 7;
|
int pshared : 1;
|
};
|
|
struct cobalt_threadstat {
|
__u64 xtime;
|
__u64 timeout;
|
__u64 msw;
|
__u64 csw;
|
__u64 xsc;
|
__u32 status;
|
__u32 pf;
|
int cpu;
|
int cprio;
|
char name[32];
|
char personality[32];
|
};
|
# 27 "/usr/xenomai/include/cobalt/pthread.h" 2 3
|
|
typedef struct pthread_attr_ex {
|
pthread_attr_t std;
|
struct {
|
int personality;
|
int sched_policy;
|
struct sched_param_ex sched_param;
|
} nonstd;
|
} pthread_attr_ex_t;
|
|
|
extern "C" {
|
|
|
__typeof__(int) __cobalt_pthread_attr_init(pthread_attr_t *attr); __typeof__(int) __real_pthread_attr_init(pthread_attr_t *attr); __typeof__(int) __wrap_pthread_attr_init(pthread_attr_t *attr);
|
|
__typeof__(int) __cobalt_pthread_create(pthread_t *ptid_r, const pthread_attr_t *attr, void *(*start) (void *), void *arg); __typeof__(int) __real_pthread_create(pthread_t *ptid_r, const pthread_attr_t *attr, void *(*start) (void *), void *arg); __typeof__(int) __wrap_pthread_create(pthread_t *ptid_r, const pthread_attr_t *attr, void *(*start) (void *), void *arg);
|
|
|
|
|
__typeof__(int) __cobalt_pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param); __typeof__(int) __real_pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param); __typeof__(int) __wrap_pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param);
|
|
|
|
__typeof__(int) __cobalt_pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param); __typeof__(int) __real_pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param); __typeof__(int) __wrap_pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param);
|
|
|
|
__typeof__(int) __cobalt_pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); __typeof__(int) __real_pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); __typeof__(int) __wrap_pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
|
|
|
__typeof__(int) __cobalt_pthread_mutex_destroy(pthread_mutex_t *mutex); __typeof__(int) __real_pthread_mutex_destroy(pthread_mutex_t *mutex); __typeof__(int) __wrap_pthread_mutex_destroy(pthread_mutex_t *mutex);
|
|
__typeof__(int) __cobalt_pthread_mutex_lock(pthread_mutex_t *mutex); __typeof__(int) __real_pthread_mutex_lock(pthread_mutex_t *mutex); __typeof__(int) __wrap_pthread_mutex_lock(pthread_mutex_t *mutex);
|
|
__typeof__(int) __cobalt_pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *to); __typeof__(int) __real_pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *to); __typeof__(int) __wrap_pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *to);
|
|
|
__typeof__(int) __cobalt_pthread_mutex_trylock(pthread_mutex_t *mutex); __typeof__(int) __real_pthread_mutex_trylock(pthread_mutex_t *mutex); __typeof__(int) __wrap_pthread_mutex_trylock(pthread_mutex_t *mutex);
|
|
__typeof__(int) __cobalt_pthread_mutex_unlock(pthread_mutex_t *mutex); __typeof__(int) __real_pthread_mutex_unlock(pthread_mutex_t *mutex); __typeof__(int) __wrap_pthread_mutex_unlock(pthread_mutex_t *mutex);
|
|
__typeof__(int) __cobalt_pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *attr); __typeof__(int) __real_pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *attr); __typeof__(int) __wrap_pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t *attr);
|
|
|
__typeof__(int) __cobalt_pthread_cond_destroy(pthread_cond_t *cond); __typeof__(int) __real_pthread_cond_destroy(pthread_cond_t *cond); __typeof__(int) __wrap_pthread_cond_destroy(pthread_cond_t *cond);
|
|
__typeof__(int) __cobalt_pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); __typeof__(int) __real_pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); __typeof__(int) __wrap_pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
|
|
|
__typeof__(int) __cobalt_pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); __typeof__(int) __real_pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); __typeof__(int) __wrap_pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);
|
|
|
|
__typeof__(int) __cobalt_pthread_cond_signal(pthread_cond_t *cond); __typeof__(int) __real_pthread_cond_signal(pthread_cond_t *cond); __typeof__(int) __wrap_pthread_cond_signal(pthread_cond_t *cond);
|
|
__typeof__(int) __cobalt_pthread_cond_broadcast(pthread_cond_t *cond); __typeof__(int) __real_pthread_cond_broadcast(pthread_cond_t *cond); __typeof__(int) __wrap_pthread_cond_broadcast(pthread_cond_t *cond);
|
|
__typeof__(int) __cobalt_pthread_kill(pthread_t ptid, int sig); __typeof__(int) __real_pthread_kill(pthread_t ptid, int sig); __typeof__(int) __wrap_pthread_kill(pthread_t ptid, int sig);
|
|
__typeof__(int) __cobalt_pthread_join(pthread_t ptid, void **retval); __typeof__(int) __real_pthread_join(pthread_t ptid, void **retval); __typeof__(int) __wrap_pthread_join(pthread_t ptid, void **retval);
|
# 98 "/usr/xenomai/include/cobalt/pthread.h" 3
|
__typeof__(int) __cobalt_pthread_yield(void); __typeof__(int) __real_pthread_yield(void); __typeof__(int) __wrap_pthread_yield(void);
|
|
|
int pthread_setmode_np(int clrmask, int setmask,
|
int *mask_r);
|
|
__typeof__(int) __cobalt_pthread_setname_np(pthread_t thread, const char *name); __typeof__(int) __real_pthread_setname_np(pthread_t thread, const char *name); __typeof__(int) __wrap_pthread_setname_np(pthread_t thread, const char *name);
|
|
int pthread_create_ex(pthread_t *ptid_r,
|
const pthread_attr_ex_t *attr_ex,
|
void *(*start)(void *),
|
void *arg);
|
|
int pthread_getschedparam_ex(pthread_t ptid,
|
int *pol,
|
struct sched_param_ex *par);
|
|
int pthread_setschedparam_ex(pthread_t ptid,
|
int pol,
|
const struct sched_param_ex *par);
|
|
int pthread_attr_init_ex(pthread_attr_ex_t *attr_ex);
|
|
int pthread_attr_destroy_ex(pthread_attr_ex_t *attr_ex);
|
|
int pthread_attr_setschedpolicy_ex(pthread_attr_ex_t *attr_ex,
|
int policy);
|
|
int pthread_attr_getschedpolicy_ex(const pthread_attr_ex_t *attr_ex,
|
int *policy);
|
|
int pthread_attr_setschedparam_ex(pthread_attr_ex_t *attr_ex,
|
const struct sched_param_ex *param_ex);
|
|
int pthread_attr_getschedparam_ex(const pthread_attr_ex_t *attr_ex,
|
struct sched_param_ex *param_ex);
|
|
int pthread_attr_getinheritsched_ex(const pthread_attr_ex_t *attr_ex,
|
int *inheritsched);
|
|
int pthread_attr_setinheritsched_ex(pthread_attr_ex_t *attr_ex,
|
int inheritsched);
|
|
int pthread_attr_getdetachstate_ex(const pthread_attr_ex_t *attr_ex,
|
int *detachstate);
|
|
int pthread_attr_setdetachstate_ex(pthread_attr_ex_t *attr_ex,
|
int detachstate);
|
|
int pthread_attr_setdetachstate_ex(pthread_attr_ex_t *attr_ex,
|
int detachstate);
|
|
int pthread_attr_getstacksize_ex(const pthread_attr_ex_t *attr_ex,
|
size_t *stacksize);
|
|
int pthread_attr_setstacksize_ex(pthread_attr_ex_t *attr_ex,
|
size_t stacksize);
|
|
int pthread_attr_getscope_ex(const pthread_attr_ex_t *attr_ex,
|
int *scope);
|
|
int pthread_attr_setscope_ex(pthread_attr_ex_t *attr_ex,
|
int scope);
|
|
int pthread_attr_getpersonality_ex(const pthread_attr_ex_t *attr_ex,
|
int *personality);
|
|
int pthread_attr_setpersonality_ex(pthread_attr_ex_t *attr_ex,
|
int personality);
|
|
}
|
# 36 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr-default.h" 2 3
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr-default.h" 3
|
static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create")));
|
# 246 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/gthr.h" 2 3
|
|
|
#pragma GCC visibility pop
|
# 36 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/atomicity.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/atomic_word.h" 1 3
|
# 32 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/arm-linux-gnueabihf/c++/6.3.0/bits/atomic_word.h" 3
|
typedef int _Atomic_word;
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 2 3
|
|
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
namespace __cxx11 {
|
# 71 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
class basic_string
|
{
|
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
|
rebind<_CharT>::other _Char_alloc_type;
|
typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits;
|
|
|
public:
|
typedef _Traits traits_type;
|
typedef typename _Traits::char_type value_type;
|
typedef _Char_alloc_type allocator_type;
|
typedef typename _Alloc_traits::size_type size_type;
|
typedef typename _Alloc_traits::difference_type difference_type;
|
typedef typename _Alloc_traits::reference reference;
|
typedef typename _Alloc_traits::const_reference const_reference;
|
typedef typename _Alloc_traits::pointer pointer;
|
typedef typename _Alloc_traits::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;
|
|
|
static const size_type npos = static_cast<size_type>(-1);
|
|
private:
|
|
|
|
|
typedef const_iterator __const_iterator;
|
|
|
|
struct _Alloc_hider : allocator_type
|
{
|
_Alloc_hider(pointer __dat, const _Alloc& __a = _Alloc())
|
: allocator_type(__a), _M_p(__dat) { }
|
|
pointer _M_p;
|
};
|
|
_Alloc_hider _M_dataplus;
|
size_type _M_string_length;
|
|
enum { _S_local_capacity = 15 / sizeof(_CharT) };
|
|
union
|
{
|
_CharT _M_local_buf[_S_local_capacity + 1];
|
size_type _M_allocated_capacity;
|
};
|
|
void
|
_M_data(pointer __p)
|
{ _M_dataplus._M_p = __p; }
|
|
void
|
_M_length(size_type __length)
|
{ _M_string_length = __length; }
|
|
pointer
|
_M_data() const
|
{ return _M_dataplus._M_p; }
|
|
pointer
|
_M_local_data()
|
{
|
|
return std::pointer_traits<pointer>::pointer_to(*_M_local_buf);
|
|
|
|
}
|
|
const_pointer
|
_M_local_data() const
|
{
|
|
return std::pointer_traits<const_pointer>::pointer_to(*_M_local_buf);
|
|
|
|
}
|
|
void
|
_M_capacity(size_type __capacity)
|
{ _M_allocated_capacity = __capacity; }
|
|
void
|
_M_set_length(size_type __n)
|
{
|
_M_length(__n);
|
traits_type::assign(_M_data()[__n], _CharT());
|
}
|
|
bool
|
_M_is_local() const
|
{ return _M_data() == _M_local_data(); }
|
|
|
pointer
|
_M_create(size_type&, size_type);
|
|
void
|
_M_dispose()
|
{
|
if (!_M_is_local())
|
_M_destroy(_M_allocated_capacity);
|
}
|
|
void
|
_M_destroy(size_type __size) throw()
|
{ _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); }
|
|
|
|
template<typename _InIterator>
|
void
|
_M_construct_aux(_InIterator __beg, _InIterator __end,
|
std::__false_type)
|
{
|
typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
|
_M_construct(__beg, __end, _Tag());
|
}
|
|
|
|
template<typename _Integer>
|
void
|
_M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
|
{ _M_construct_aux_2(static_cast<size_type>(__beg), __end); }
|
|
void
|
_M_construct_aux_2(size_type __req, _CharT __c)
|
{ _M_construct(__req, __c); }
|
|
template<typename _InIterator>
|
void
|
_M_construct(_InIterator __beg, _InIterator __end)
|
{
|
typedef typename std::__is_integer<_InIterator>::__type _Integral;
|
_M_construct_aux(__beg, __end, _Integral());
|
}
|
|
|
template<typename _InIterator>
|
void
|
_M_construct(_InIterator __beg, _InIterator __end,
|
std::input_iterator_tag);
|
|
|
|
template<typename _FwdIterator>
|
void
|
_M_construct(_FwdIterator __beg, _FwdIterator __end,
|
std::forward_iterator_tag);
|
|
void
|
_M_construct(size_type __req, _CharT __c);
|
|
allocator_type&
|
_M_get_allocator()
|
{ return _M_dataplus; }
|
|
const allocator_type&
|
_M_get_allocator() const
|
{ return _M_dataplus; }
|
|
private:
|
# 258 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
_M_check(size_type __pos, const char* __s) const
|
{
|
if (__pos > this->size())
|
__throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)"),
|
|
__s, __pos, this->size());
|
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 noexcept
|
{
|
const bool __testoff = __off < this->size() - __pos;
|
return __testoff ? __off : this->size() - __pos;
|
}
|
|
|
bool
|
_M_disjunct(const _CharT* __s) const noexcept
|
{
|
return (less<const _CharT*>()(__s, _M_data())
|
|| less<const _CharT*>()(_M_data() + this->size(), __s));
|
}
|
|
|
|
static void
|
_S_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
|
_S_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
|
_S_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, (void)++__p)
|
traits_type::assign(*__p, *__k1);
|
}
|
|
static void
|
_S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept
|
{ _S_copy_chars(__p, __k1.base(), __k2.base()); }
|
|
static void
|
_S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
|
noexcept
|
{ _S_copy_chars(__p, __k1.base(), __k2.base()); }
|
|
static void
|
_S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept
|
{ _S_copy(__p, __k1, __k2 - __k1); }
|
|
static void
|
_S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
|
noexcept
|
{ _S_copy(__p, __k1, __k2 - __k1); }
|
|
static int
|
_S_compare(size_type __n1, size_type __n2) noexcept
|
{
|
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_assign(const basic_string& __rcs);
|
|
void
|
_M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
|
size_type __len2);
|
|
void
|
_M_erase(size_type __pos, size_type __n);
|
|
public:
|
|
|
|
|
|
|
|
basic_string()
|
noexcept(is_nothrow_default_constructible<_Alloc>::value)
|
: _M_dataplus(_M_local_data())
|
{ _M_set_length(0); }
|
|
|
|
|
explicit
|
basic_string(const _Alloc& __a) noexcept
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_set_length(0); }
|
|
|
|
|
|
basic_string(const basic_string& __str)
|
: _M_dataplus(_M_local_data(),
|
_Alloc_traits::_S_select_on_copy(__str._M_get_allocator()))
|
{ _M_construct(__str._M_data(), __str._M_data() + __str.length()); }
|
# 410 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string(const basic_string& __str, size_type __pos,
|
size_type __n = npos)
|
: _M_dataplus(_M_local_data())
|
{
|
const _CharT* __start = __str._M_data()
|
+ __str._M_check(__pos, "basic_string::basic_string");
|
_M_construct(__start, __start + __str._M_limit(__pos, __n));
|
}
|
# 426 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string(const basic_string& __str, size_type __pos,
|
size_type __n, const _Alloc& __a)
|
: _M_dataplus(_M_local_data(), __a)
|
{
|
const _CharT* __start
|
= __str._M_data() + __str._M_check(__pos, "string::string");
|
_M_construct(__start, __start + __str._M_limit(__pos, __n));
|
}
|
# 444 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string(const _CharT* __s, size_type __n,
|
const _Alloc& __a = _Alloc())
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_construct(__s, __s + __n); }
|
|
|
|
|
|
|
basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); }
|
|
|
|
|
|
|
|
basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc())
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_construct(__n, __c); }
|
# 476 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string(basic_string&& __str) noexcept
|
: _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator()))
|
{
|
if (__str._M_is_local())
|
{
|
traits_type::copy(_M_local_buf, __str._M_local_buf,
|
_S_local_capacity + 1);
|
}
|
else
|
{
|
_M_data(__str._M_data());
|
_M_capacity(__str._M_allocated_capacity);
|
}
|
|
|
|
|
_M_length(__str.length());
|
__str._M_data(__str._M_local_data());
|
__str._M_set_length(0);
|
}
|
|
|
|
|
|
|
basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc())
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_construct(__l.begin(), __l.end()); }
|
|
basic_string(const basic_string& __str, const _Alloc& __a)
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_construct(__str.begin(), __str.end()); }
|
|
basic_string(basic_string&& __str, const _Alloc& __a)
|
noexcept(_Alloc_traits::_S_always_equal())
|
: _M_dataplus(_M_local_data(), __a)
|
{
|
if (__str._M_is_local())
|
{
|
traits_type::copy(_M_local_buf, __str._M_local_buf,
|
_S_local_capacity + 1);
|
_M_length(__str.length());
|
__str._M_set_length(0);
|
}
|
else if (_Alloc_traits::_S_always_equal()
|
|| __str.get_allocator() == __a)
|
{
|
_M_data(__str._M_data());
|
_M_length(__str.length());
|
_M_capacity(__str._M_allocated_capacity);
|
__str._M_data(__str._M_local_buf);
|
__str._M_set_length(0);
|
}
|
else
|
_M_construct(__str.begin(), __str.end());
|
}
|
# 544 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
template<typename _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
|
|
|
basic_string(_InputIterator __beg, _InputIterator __end,
|
const _Alloc& __a = _Alloc())
|
: _M_dataplus(_M_local_data(), __a)
|
{ _M_construct(__beg, __end); }
|
|
|
|
|
~basic_string()
|
{ _M_dispose(); }
|
|
|
|
|
|
basic_string&
|
operator=(const basic_string& __str)
|
{
|
|
if (_Alloc_traits::_S_propagate_on_copy_assign())
|
{
|
if (!_Alloc_traits::_S_always_equal() && !_M_is_local()
|
&& _M_get_allocator() != __str._M_get_allocator())
|
{
|
|
|
if (__str.size() <= _S_local_capacity)
|
{
|
_M_destroy(_M_allocated_capacity);
|
_M_data(_M_local_data());
|
_M_set_length(0);
|
}
|
else
|
{
|
const auto __len = __str.size();
|
auto __alloc = __str._M_get_allocator();
|
|
auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1);
|
_M_destroy(_M_allocated_capacity);
|
_M_data(__ptr);
|
_M_capacity(__len);
|
_M_set_length(__len);
|
}
|
}
|
std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator());
|
}
|
|
return this->assign(__str);
|
}
|
|
|
|
|
|
basic_string&
|
operator=(const _CharT* __s)
|
{ return this->assign(__s); }
|
# 614 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
operator=(_CharT __c)
|
{
|
this->assign(1, __c);
|
return *this;
|
}
|
# 632 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
operator=(basic_string&& __str)
|
noexcept(_Alloc_traits::_S_nothrow_move())
|
{
|
if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign()
|
&& !_Alloc_traits::_S_always_equal()
|
&& _M_get_allocator() != __str._M_get_allocator())
|
{
|
|
_M_destroy(_M_allocated_capacity);
|
_M_data(_M_local_data());
|
_M_set_length(0);
|
}
|
|
std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator());
|
|
if (!__str._M_is_local()
|
&& (_Alloc_traits::_S_propagate_on_move_assign()
|
|| _Alloc_traits::_S_always_equal()))
|
{
|
pointer __data = nullptr;
|
size_type __capacity;
|
if (!_M_is_local())
|
{
|
if (_Alloc_traits::_S_always_equal())
|
{
|
__data = _M_data();
|
__capacity = _M_allocated_capacity;
|
}
|
else
|
_M_destroy(_M_allocated_capacity);
|
}
|
|
_M_data(__str._M_data());
|
_M_length(__str.length());
|
_M_capacity(__str._M_allocated_capacity);
|
if (__data)
|
{
|
__str._M_data(__data);
|
__str._M_capacity(__capacity);
|
}
|
else
|
__str._M_data(__str._M_local_buf);
|
}
|
else
|
assign(__str);
|
__str.clear();
|
return *this;
|
}
|
|
|
|
|
|
basic_string&
|
operator=(initializer_list<_CharT> __l)
|
{
|
this->assign(__l.begin(), __l.size());
|
return *this;
|
}
|
|
|
|
|
|
|
|
iterator
|
begin() noexcept
|
{ return iterator(_M_data()); }
|
|
|
|
|
|
const_iterator
|
begin() const noexcept
|
{ return const_iterator(_M_data()); }
|
|
|
|
|
|
iterator
|
end() noexcept
|
{ return iterator(_M_data() + this->size()); }
|
|
|
|
|
|
const_iterator
|
end() const noexcept
|
{ return const_iterator(_M_data() + this->size()); }
|
|
|
|
|
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return reverse_iterator(this->end()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return const_reverse_iterator(this->end()); }
|
|
|
|
|
|
|
reverse_iterator
|
rend() noexcept
|
{ return reverse_iterator(this->begin()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return const_reverse_iterator(this->begin()); }
|
|
|
|
|
|
|
const_iterator
|
cbegin() const noexcept
|
{ return const_iterator(this->_M_data()); }
|
|
|
|
|
|
const_iterator
|
cend() const noexcept
|
{ return const_iterator(this->_M_data() + this->size()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crbegin() const noexcept
|
{ return const_reverse_iterator(this->end()); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crend() const noexcept
|
{ return const_reverse_iterator(this->begin()); }
|
|
|
public:
|
|
|
|
size_type
|
size() const noexcept
|
{ return _M_string_length; }
|
|
|
|
size_type
|
length() const noexcept
|
{ return _M_string_length; }
|
|
|
size_type
|
max_size() const noexcept
|
{ return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; }
|
# 828 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
void
|
resize(size_type __n, _CharT __c);
|
# 841 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
void
|
resize(size_type __n)
|
{ this->resize(__n, _CharT()); }
|
|
|
|
void
|
shrink_to_fit() noexcept
|
{
|
|
if (capacity() > size())
|
{
|
try
|
{ reserve(0); }
|
catch(...)
|
{ }
|
}
|
|
}
|
|
|
|
|
|
|
size_type
|
capacity() const noexcept
|
{
|
return _M_is_local() ? size_type(_S_local_capacity)
|
: _M_allocated_capacity;
|
}
|
# 890 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
void
|
reserve(size_type __res_arg = 0);
|
|
|
|
|
void
|
clear() noexcept
|
{ _M_set_length(0); }
|
|
|
|
|
|
bool
|
empty() const noexcept
|
{ return this->size() == 0; }
|
# 919 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
const_reference
|
operator[] (size_type __pos) const noexcept
|
{
|
;
|
return _M_data()[__pos];
|
}
|
# 936 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
reference
|
operator[](size_type __pos)
|
{
|
|
|
;
|
|
;
|
return _M_data()[__pos];
|
}
|
# 957 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
const_reference
|
at(size_type __n) const
|
{
|
if (__n >= this->size())
|
__throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)"),
|
|
|
__n, this->size());
|
return _M_data()[__n];
|
}
|
# 978 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
reference
|
at(size_type __n)
|
{
|
if (__n >= size())
|
__throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)"),
|
|
|
__n, this->size());
|
return _M_data()[__n];
|
}
|
|
|
|
|
|
|
reference
|
front() noexcept
|
{
|
;
|
return operator[](0);
|
}
|
|
|
|
|
|
const_reference
|
front() const noexcept
|
{
|
;
|
return operator[](0);
|
}
|
|
|
|
|
|
reference
|
back() noexcept
|
{
|
;
|
return operator[](this->size() - 1);
|
}
|
|
|
|
|
|
const_reference
|
back() const noexcept
|
{
|
;
|
return operator[](this->size() - 1);
|
}
|
# 1041 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
|
|
|
|
|
|
|
basic_string&
|
operator+=(initializer_list<_CharT> __l)
|
{ return this->append(__l.begin(), __l.size()); }
|
|
|
|
|
|
|
|
basic_string&
|
append(const basic_string& __str)
|
{ return _M_append(__str._M_data(), __str.size()); }
|
# 1099 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
append(const basic_string& __str, size_type __pos, size_type __n)
|
{ return _M_append(__str._M_data()
|
+ __str._M_check(__pos, "basic_string::append"),
|
__str._M_limit(__pos, __n)); }
|
|
|
|
|
|
|
|
basic_string&
|
append(const _CharT* __s, size_type __n)
|
{
|
;
|
_M_check_length(size_type(0), __n, "basic_string::append");
|
return _M_append(__s, __n);
|
}
|
|
|
|
|
|
|
basic_string&
|
append(const _CharT* __s)
|
{
|
;
|
const size_type __n = traits_type::length(__s);
|
_M_check_length(size_type(0), __n, "basic_string::append");
|
return _M_append(__s, __n);
|
}
|
# 1141 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
append(size_type __n, _CharT __c)
|
{ return _M_replace_aux(this->size(), size_type(0), __n, __c); }
|
|
|
|
|
|
|
|
basic_string&
|
append(initializer_list<_CharT> __l)
|
{ return this->append(__l.begin(), __l.size()); }
|
# 1165 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
template<class _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
|
|
|
basic_string&
|
append(_InputIterator __first, _InputIterator __last)
|
{ return this->replace(end(), end(), __first, __last); }
|
|
|
|
|
|
void
|
push_back(_CharT __c)
|
{
|
const size_type __size = this->size();
|
if (__size + 1 > this->capacity())
|
this->_M_mutate(__size, size_type(0), 0, size_type(1));
|
traits_type::assign(this->_M_data()[__size], __c);
|
this->_M_set_length(__size + 1);
|
}
|
|
|
|
|
|
|
basic_string&
|
assign(const basic_string& __str)
|
{
|
this->_M_assign(__str);
|
return *this;
|
}
|
# 1209 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
assign(basic_string&& __str)
|
noexcept(_Alloc_traits::_S_nothrow_move())
|
{
|
|
|
return *this = std::move(__str);
|
}
|
# 1232 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
assign(const basic_string& __str, size_type __pos, size_type __n)
|
{ return _M_replace(size_type(0), this->size(), __str._M_data()
|
+ __str._M_check(__pos, "basic_string::assign"),
|
__str._M_limit(__pos, __n)); }
|
# 1248 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
assign(const _CharT* __s, size_type __n)
|
{
|
;
|
return _M_replace(size_type(0), this->size(), __s, __n);
|
}
|
# 1264 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
assign(const _CharT* __s)
|
{
|
;
|
return _M_replace(size_type(0), this->size(), __s,
|
traits_type::length(__s));
|
}
|
# 1281 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
assign(size_type __n, _CharT __c)
|
{ return _M_replace_aux(size_type(0), this->size(), __n, __c); }
|
# 1294 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
template<class _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
|
|
|
basic_string&
|
assign(_InputIterator __first, _InputIterator __last)
|
{ return this->replace(begin(), end(), __first, __last); }
|
|
|
|
|
|
|
|
basic_string&
|
assign(initializer_list<_CharT> __l)
|
{ return this->assign(__l.begin(), __l.size()); }
|
# 1330 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
iterator
|
insert(const_iterator __p, size_type __n, _CharT __c)
|
{
|
;
|
const size_type __pos = __p - begin();
|
this->replace(__p, __p, __n, __c);
|
return iterator(this->_M_data() + __pos);
|
}
|
# 1372 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
template<class _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
iterator
|
insert(const_iterator __p, _InputIterator __beg, _InputIterator __end)
|
{
|
;
|
const size_type __pos = __p - begin();
|
this->replace(__p, __p, __beg, __end);
|
return iterator(this->_M_data() + __pos);
|
}
|
# 1408 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
void
|
insert(iterator __p, initializer_list<_CharT> __l)
|
{
|
;
|
this->insert(__p - begin(), __l.begin(), __l.size());
|
}
|
# 1428 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
insert(size_type __pos1, const basic_string& __str)
|
{ return this->replace(__pos1, size_type(0),
|
__str._M_data(), __str.size()); }
|
# 1451 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
insert(size_type __pos1, const basic_string& __str,
|
size_type __pos2, size_type __n)
|
{ return this->replace(__pos1, size_type(0), __str._M_data()
|
+ __str._M_check(__pos2, "basic_string::insert"),
|
__str._M_limit(__pos2, __n)); }
|
# 1474 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
insert(size_type __pos, const _CharT* __s, size_type __n)
|
{ return this->replace(__pos, size_type(0), __s, __n); }
|
# 1493 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
insert(size_type __pos, const _CharT* __s)
|
{
|
;
|
return this->replace(__pos, size_type(0), __s,
|
traits_type::length(__s));
|
}
|
# 1517 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
# 1535 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
iterator
|
insert(__const_iterator __p, _CharT __c)
|
{
|
;
|
const size_type __pos = __p - begin();
|
_M_replace_aux(__pos, size_type(0), size_type(1), __c);
|
return iterator(_M_data() + __pos);
|
}
|
# 1559 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
erase(size_type __pos = 0, size_type __n = npos)
|
{
|
this->_M_erase(_M_check(__pos, "basic_string::erase"),
|
_M_limit(__pos, __n));
|
return *this;
|
}
|
# 1575 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
iterator
|
erase(__const_iterator __position)
|
{
|
|
;
|
const size_type __pos = __position - begin();
|
this->_M_erase(__pos, size_type(1));
|
return iterator(_M_data() + __pos);
|
}
|
# 1594 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
iterator
|
erase(__const_iterator __first, __const_iterator __last)
|
{
|
|
;
|
const size_type __pos = __first - begin();
|
this->_M_erase(__pos, __last - __first);
|
return iterator(this->_M_data() + __pos);
|
}
|
|
|
|
|
|
|
|
void
|
pop_back() noexcept
|
{
|
;
|
_M_erase(size() - 1, 1);
|
}
|
# 1635 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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()); }
|
# 1657 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)); }
|
# 1682 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
replace(size_type __pos, size_type __n1, const _CharT* __s,
|
size_type __n2)
|
{
|
;
|
return _M_replace(_M_check(__pos, "basic_string::replace"),
|
_M_limit(__pos, __n1), __s, __n2);
|
}
|
# 1707 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 1731 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
# 1749 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2,
|
const basic_string& __str)
|
{ return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
|
# 1769 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2,
|
const _CharT* __s, size_type __n)
|
{
|
|
;
|
return this->replace(__i1 - begin(), __i2 - __i1, __s, __n);
|
}
|
# 1791 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s)
|
{
|
;
|
return this->replace(__i1, __i2, __s, traits_type::length(__s));
|
}
|
# 1812 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2, size_type __n,
|
_CharT __c)
|
{
|
|
;
|
return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c);
|
}
|
# 1837 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
template<class _InputIterator,
|
typename = std::_RequireInputIter<_InputIterator>>
|
basic_string&
|
replace(const_iterator __i1, const_iterator __i2,
|
_InputIterator __k1, _InputIterator __k2)
|
{
|
|
;
|
;
|
return this->_M_replace_dispatch(__i1, __i2, __k1, __k2,
|
std::__false_type());
|
}
|
# 1869 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2,
|
_CharT* __k1, _CharT* __k2)
|
{
|
|
;
|
;
|
return this->replace(__i1 - begin(), __i2 - __i1,
|
__k1, __k2 - __k1);
|
}
|
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2,
|
const _CharT* __k1, const _CharT* __k2)
|
{
|
|
;
|
;
|
return this->replace(__i1 - begin(), __i2 - __i1,
|
__k1, __k2 - __k1);
|
}
|
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2,
|
iterator __k1, iterator __k2)
|
{
|
|
;
|
;
|
return this->replace(__i1 - begin(), __i2 - __i1,
|
__k1.base(), __k2 - __k1);
|
}
|
|
basic_string&
|
replace(__const_iterator __i1, __const_iterator __i2,
|
const_iterator __k1, const_iterator __k2)
|
{
|
|
;
|
;
|
return this->replace(__i1 - begin(), __i2 - __i1,
|
__k1.base(), __k2 - __k1);
|
}
|
# 1928 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
basic_string& replace(const_iterator __i1, const_iterator __i2,
|
initializer_list<_CharT> __l)
|
{ return this->replace(__i1, __i2, __l.begin(), __l.end()); }
|
|
|
private:
|
template<class _Integer>
|
basic_string&
|
_M_replace_dispatch(const_iterator __i1, const_iterator __i2,
|
_Integer __n, _Integer __val, __true_type)
|
{ return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); }
|
|
template<class _InputIterator>
|
basic_string&
|
_M_replace_dispatch(const_iterator __i1, const_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(size_type __pos, size_type __len1, const _CharT* __s,
|
const size_type __len2);
|
|
basic_string&
|
_M_append(const _CharT* __s, size_type __n);
|
|
public:
|
# 1971 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
|
# 1981 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
void
|
swap(basic_string& __s) noexcept;
|
# 1991 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
const _CharT*
|
c_str() const noexcept
|
{ return _M_data(); }
|
|
|
|
|
|
|
|
const _CharT*
|
data() const noexcept
|
{ return _M_data(); }
|
|
|
|
|
allocator_type
|
get_allocator() const noexcept
|
{ return _M_get_allocator(); }
|
# 2024 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find(const _CharT* __s, size_type __pos, size_type __n) const;
|
# 2037 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find(const basic_string& __str, size_type __pos = 0) const
|
noexcept
|
{ return this->find(__str.data(), __pos, __str.size()); }
|
# 2052 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 2069 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find(_CharT __c, size_type __pos = 0) const noexcept;
|
# 2082 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
rfind(const basic_string& __str, size_type __pos = npos) const
|
noexcept
|
{ return this->rfind(__str.data(), __pos, __str.size()); }
|
# 2099 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
rfind(const _CharT* __s, size_type __pos, size_type __n) const;
|
# 2112 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 2129 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
rfind(_CharT __c, size_type __pos = npos) const noexcept;
|
# 2143 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_first_of(const basic_string& __str, size_type __pos = 0) const
|
noexcept
|
{ return this->find_first_of(__str.data(), __pos, __str.size()); }
|
# 2160 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
|
# 2173 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 2192 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_first_of(_CharT __c, size_type __pos = 0) const noexcept
|
{ return this->find(__c, __pos); }
|
# 2207 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_last_of(const basic_string& __str, size_type __pos = npos) const
|
noexcept
|
{ return this->find_last_of(__str.data(), __pos, __str.size()); }
|
# 2224 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
|
# 2237 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 2256 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_last_of(_CharT __c, size_type __pos = npos) const noexcept
|
{ return this->rfind(__c, __pos); }
|
# 2270 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_first_not_of(const basic_string& __str, size_type __pos = 0) const
|
noexcept
|
{ return this->find_first_not_of(__str.data(), __pos, __str.size()); }
|
# 2287 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_first_not_of(const _CharT* __s, size_type __pos,
|
size_type __n) const;
|
# 2301 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 2318 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_first_not_of(_CharT __c, size_type __pos = 0) const
|
noexcept;
|
# 2333 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_last_not_of(const basic_string& __str, size_type __pos = npos) const
|
noexcept
|
{ return this->find_last_not_of(__str.data(), __pos, __str.size()); }
|
# 2350 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_last_not_of(const _CharT* __s, size_type __pos,
|
size_type __n) const;
|
# 2364 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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));
|
}
|
# 2381 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
size_type
|
find_last_not_of(_CharT __c, size_type __pos = npos) const
|
noexcept;
|
# 2397 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
# 2416 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 2448 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
int
|
compare(size_type __pos, size_type __n, const basic_string& __str) const;
|
# 2474 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
int
|
compare(size_type __pos1, size_type __n1, const basic_string& __str,
|
size_type __pos2, size_type __n2) const;
|
# 2492 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
int
|
compare(const _CharT* __s) const;
|
# 2516 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
int
|
compare(size_type __pos, size_type __n1, const _CharT* __s) const;
|
# 2543 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
int
|
compare(size_type __pos, size_type __n1, const _CharT* __s,
|
size_type __n2) const;
|
};
|
}
|
# 4942 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
const basic_string<_CharT, _Traits, _Alloc>& __rhs)
|
{ return std::move(__lhs.append(__rhs)); }
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
|
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
{ return std::move(__rhs.insert(0, __lhs)); }
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
{
|
const auto __size = __lhs.size() + __rhs.size();
|
const bool __cond = (__size > __lhs.capacity()
|
&& __size <= __rhs.capacity());
|
return __cond ? std::move(__rhs.insert(0, __lhs))
|
: std::move(__lhs.append(__rhs));
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(const _CharT* __lhs,
|
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
{ return std::move(__rhs.insert(0, __lhs)); }
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(_CharT __lhs,
|
basic_string<_CharT, _Traits, _Alloc>&& __rhs)
|
{ return std::move(__rhs.insert(0, 1, __lhs)); }
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
const _CharT* __rhs)
|
{ return std::move(__lhs.append(__rhs)); }
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_string<_CharT, _Traits, _Alloc>
|
operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
|
_CharT __rhs)
|
{ return std::move(__lhs.append(1, __rhs)); }
|
# 5063 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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) noexcept
|
{ 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; }
|
# 5110 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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); }
|
# 5148 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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; }
|
# 5186 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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; }
|
# 5224 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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; }
|
# 5262 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept
|
{ 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; }
|
# 5300 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept(noexcept(__lhs.swap(__rhs)))
|
{ __lhs.swap(__rhs); }
|
# 5320 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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);
|
# 5338 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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());
|
}
|
# 5361 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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);
|
# 5378 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 std::getline(__is, __str, __is.widen('\n')); }
|
|
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_istream<_CharT, _Traits>&
|
getline(basic_istream<_CharT, _Traits>&& __is,
|
basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
|
{ return std::getline(__is, __str, __delim); }
|
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
inline basic_istream<_CharT, _Traits>&
|
getline(basic_istream<_CharT, _Traits>&& __is,
|
basic_string<_CharT, _Traits, _Alloc>& __str)
|
{ return std::getline(__is, __str); }
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/string_conversions.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/string_conversions.h" 3
|
|
|
|
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdlib" 3
|
# 42 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/string_conversions.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 3
|
|
|
|
|
# 1 "/usr/include/wchar.h" 1 3 4
|
# 45 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cwchar" 2 3
|
# 43 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/string_conversions.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdio" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdio" 3
|
|
|
# 1 "/usr/xenomai/include/cobalt/stdio.h" 1 3
|
# 20 "/usr/xenomai/include/cobalt/stdio.h" 3
|
# 43 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdio" 2 3
|
# 96 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdio" 3
|
namespace std
|
{
|
using ::FILE;
|
using ::fpos_t;
|
|
using ::clearerr;
|
using ::fclose;
|
using ::feof;
|
using ::ferror;
|
using ::fflush;
|
using ::fgetc;
|
using ::fgetpos;
|
using ::fgets;
|
using ::fopen;
|
using ::fprintf;
|
using ::fputc;
|
using ::fputs;
|
using ::fread;
|
using ::freopen;
|
using ::fscanf;
|
using ::fseek;
|
using ::fsetpos;
|
using ::ftell;
|
using ::fwrite;
|
using ::getc;
|
using ::getchar;
|
|
|
using ::gets;
|
|
using ::perror;
|
using ::printf;
|
using ::putc;
|
using ::putchar;
|
using ::puts;
|
using ::remove;
|
using ::rename;
|
using ::rewind;
|
using ::scanf;
|
using ::setbuf;
|
using ::setvbuf;
|
using ::sprintf;
|
using ::sscanf;
|
using ::tmpfile;
|
|
using ::tmpnam;
|
|
using ::ungetc;
|
using ::vfprintf;
|
using ::vprintf;
|
using ::vsprintf;
|
}
|
# 157 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdio" 3
|
namespace __gnu_cxx
|
{
|
# 175 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cstdio" 3
|
using ::snprintf;
|
using ::vfscanf;
|
using ::vscanf;
|
using ::vsnprintf;
|
using ::vsscanf;
|
|
}
|
|
namespace std
|
{
|
using ::__gnu_cxx::snprintf;
|
using ::__gnu_cxx::vfscanf;
|
using ::__gnu_cxx::vscanf;
|
using ::__gnu_cxx::vsnprintf;
|
using ::__gnu_cxx::vsscanf;
|
}
|
# 44 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/string_conversions.h" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cerrno" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cerrno" 3
|
|
|
# 1 "/usr/include/errno.h" 1 3 4
|
# 31 "/usr/include/errno.h" 3 4
|
extern "C" {
|
|
|
|
|
# 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4
|
# 24 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4
|
# 1 "/usr/include/linux/errno.h" 1 3 4
|
# 1 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 1 3 4
|
# 1 "/usr/include/asm-generic/errno.h" 1 3 4
|
|
|
|
# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
|
# 5 "/usr/include/asm-generic/errno.h" 2 3 4
|
# 2 "/usr/include/arm-linux-gnueabihf/asm/errno.h" 2 3 4
|
# 2 "/usr/include/linux/errno.h" 2 3 4
|
# 25 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4
|
# 50 "/usr/include/arm-linux-gnueabihf/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;
|
# 43 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/cerrno" 2 3
|
# 45 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/string_conversions.h" 2 3
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
template<typename _TRet, typename _Ret = _TRet, typename _CharT,
|
typename... _Base>
|
_Ret
|
__stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...),
|
const char* __name, const _CharT* __str, std::size_t* __idx,
|
_Base... __base)
|
{
|
_Ret __ret;
|
|
_CharT* __endptr;
|
|
struct _Save_errno {
|
_Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; }
|
~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; }
|
int _M_errno;
|
} const __save_errno;
|
|
const _TRet __tmp = __convf(__str, &__endptr, __base...);
|
|
if (__endptr == __str)
|
std::__throw_invalid_argument(__name);
|
else if ((*__errno_location ()) == 34
|
|| (std::__are_same<_Ret, int>::__value
|
&& (__tmp < __numeric_traits<int>::__min
|
|| __tmp > __numeric_traits<int>::__max)))
|
std::__throw_out_of_range(__name);
|
else
|
__ret = __tmp;
|
|
if (__idx)
|
*__idx = __endptr - __str;
|
|
return __ret;
|
}
|
|
|
template<typename _String, typename _CharT = typename _String::value_type>
|
_String
|
__to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*,
|
__builtin_va_list), std::size_t __n,
|
const _CharT* __fmt, ...)
|
{
|
|
|
_CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
|
* __n));
|
|
__builtin_va_list __args;
|
__builtin_va_start(__args, __fmt);
|
|
const int __len = __convf(__s, __n, __fmt, __args);
|
|
__builtin_va_end(__args);
|
|
return _String(__s, __s + __len);
|
}
|
|
|
}
|
# 5418 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
namespace __cxx11 {
|
|
|
|
inline int
|
stoi(const string& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
|
__idx, __base); }
|
|
inline long
|
stol(const string& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(),
|
__idx, __base); }
|
|
inline unsigned long
|
stoul(const string& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(),
|
__idx, __base); }
|
|
inline long long
|
stoll(const string& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(),
|
__idx, __base); }
|
|
inline unsigned long long
|
stoull(const string& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(),
|
__idx, __base); }
|
|
|
inline float
|
stof(const string& __str, size_t* __idx = 0)
|
{ return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); }
|
|
inline double
|
stod(const string& __str, size_t* __idx = 0)
|
{ return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); }
|
|
inline long double
|
stold(const string& __str, size_t* __idx = 0)
|
{ return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); }
|
|
|
|
|
|
|
inline string
|
to_string(int __val)
|
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(int),
|
"%d", __val); }
|
|
inline string
|
to_string(unsigned __val)
|
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
|
4 * sizeof(unsigned),
|
"%u", __val); }
|
|
inline string
|
to_string(long __val)
|
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(long),
|
"%ld", __val); }
|
|
inline string
|
to_string(unsigned long __val)
|
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
|
4 * sizeof(unsigned long),
|
"%lu", __val); }
|
|
inline string
|
to_string(long long __val)
|
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
|
4 * sizeof(long long),
|
"%lld", __val); }
|
|
inline string
|
to_string(unsigned long long __val)
|
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
|
4 * sizeof(unsigned long long),
|
"%llu", __val); }
|
|
inline string
|
to_string(float __val)
|
{
|
const int __n =
|
__gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20;
|
return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
|
"%f", __val);
|
}
|
|
inline string
|
to_string(double __val)
|
{
|
const int __n =
|
__gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
|
return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
|
"%f", __val);
|
}
|
|
inline string
|
to_string(long double __val)
|
{
|
const int __n =
|
__gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20;
|
return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
|
"%Lf", __val);
|
}
|
|
|
|
inline int
|
stoi(const wstring& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(),
|
__idx, __base); }
|
|
inline long
|
stol(const wstring& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(),
|
__idx, __base); }
|
|
inline unsigned long
|
stoul(const wstring& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(),
|
__idx, __base); }
|
|
inline long long
|
stoll(const wstring& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(),
|
__idx, __base); }
|
|
inline unsigned long long
|
stoull(const wstring& __str, size_t* __idx = 0, int __base = 10)
|
{ return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(),
|
__idx, __base); }
|
|
|
inline float
|
stof(const wstring& __str, size_t* __idx = 0)
|
{ return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); }
|
|
inline double
|
stod(const wstring& __str, size_t* __idx = 0)
|
{ return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); }
|
|
inline long double
|
stold(const wstring& __str, size_t* __idx = 0)
|
{ return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); }
|
|
|
|
inline wstring
|
to_wstring(int __val)
|
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(int),
|
L"%d", __val); }
|
|
inline wstring
|
to_wstring(unsigned __val)
|
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
|
4 * sizeof(unsigned),
|
L"%u", __val); }
|
|
inline wstring
|
to_wstring(long __val)
|
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, 4 * sizeof(long),
|
L"%ld", __val); }
|
|
inline wstring
|
to_wstring(unsigned long __val)
|
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
|
4 * sizeof(unsigned long),
|
L"%lu", __val); }
|
|
inline wstring
|
to_wstring(long long __val)
|
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
|
4 * sizeof(long long),
|
L"%lld", __val); }
|
|
inline wstring
|
to_wstring(unsigned long long __val)
|
{ return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf,
|
4 * sizeof(unsigned long long),
|
L"%llu", __val); }
|
|
inline wstring
|
to_wstring(float __val)
|
{
|
const int __n =
|
__gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20;
|
return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
|
L"%f", __val);
|
}
|
|
inline wstring
|
to_wstring(double __val)
|
{
|
const int __n =
|
__gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
|
return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
|
L"%f", __val);
|
}
|
|
inline wstring
|
to_wstring(long double __val)
|
{
|
const int __n =
|
__gnu_cxx::__numeric_traits<long double>::__max_exponent10 + 20;
|
return __gnu_cxx::__to_xstring<wstring>(&std::vswprintf, __n,
|
L"%Lf", __val);
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
template<>
|
struct hash<string>
|
: public __hash_base<size_t, string>
|
{
|
size_t
|
operator()(const string& __s) const noexcept
|
{ return std::_Hash_impl::hash(__s.data(), __s.length()); }
|
};
|
|
template<>
|
struct __is_fast_hash<hash<string>> : std::false_type
|
{ };
|
|
|
|
template<>
|
struct hash<wstring>
|
: public __hash_base<size_t, wstring>
|
{
|
size_t
|
operator()(const wstring& __s) const noexcept
|
{ return std::_Hash_impl::hash(__s.data(),
|
__s.length() * sizeof(wchar_t)); }
|
};
|
|
template<>
|
struct __is_fast_hash<hash<wstring>> : std::false_type
|
{ };
|
|
|
|
|
|
template<>
|
struct hash<u16string>
|
: public __hash_base<size_t, u16string>
|
{
|
size_t
|
operator()(const u16string& __s) const noexcept
|
{ return std::_Hash_impl::hash(__s.data(),
|
__s.length() * sizeof(char16_t)); }
|
};
|
|
template<>
|
struct __is_fast_hash<hash<u16string>> : std::false_type
|
{ };
|
|
|
template<>
|
struct hash<u32string>
|
: public __hash_base<size_t, u32string>
|
{
|
size_t
|
operator()(const u32string& __s) const noexcept
|
{ return std::_Hash_impl::hash(__s.data(),
|
__s.length() * sizeof(char32_t)); }
|
};
|
|
template<>
|
struct __is_fast_hash<hash<u32string>> : std::false_type
|
{ };
|
# 5758 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h" 3
|
}
|
# 53 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.tcc" 1 3
|
# 43 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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>::npos;
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
swap(basic_string& __s) noexcept
|
{
|
if (this == &__s)
|
return;
|
|
_Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator());
|
|
if (_M_is_local())
|
if (__s._M_is_local())
|
{
|
if (length() && __s.length())
|
{
|
_CharT __tmp_data[_S_local_capacity + 1];
|
traits_type::copy(__tmp_data, __s._M_local_buf,
|
_S_local_capacity + 1);
|
traits_type::copy(__s._M_local_buf, _M_local_buf,
|
_S_local_capacity + 1);
|
traits_type::copy(_M_local_buf, __tmp_data,
|
_S_local_capacity + 1);
|
}
|
else if (__s.length())
|
{
|
traits_type::copy(_M_local_buf, __s._M_local_buf,
|
_S_local_capacity + 1);
|
_M_length(__s.length());
|
__s._M_set_length(0);
|
return;
|
}
|
else if (length())
|
{
|
traits_type::copy(__s._M_local_buf, _M_local_buf,
|
_S_local_capacity + 1);
|
__s._M_length(length());
|
_M_set_length(0);
|
return;
|
}
|
}
|
else
|
{
|
const size_type __tmp_capacity = __s._M_allocated_capacity;
|
traits_type::copy(__s._M_local_buf, _M_local_buf,
|
_S_local_capacity + 1);
|
_M_data(__s._M_data());
|
__s._M_data(__s._M_local_buf);
|
_M_capacity(__tmp_capacity);
|
}
|
else
|
{
|
const size_type __tmp_capacity = _M_allocated_capacity;
|
if (__s._M_is_local())
|
{
|
traits_type::copy(_M_local_buf, __s._M_local_buf,
|
_S_local_capacity + 1);
|
__s._M_data(_M_data());
|
_M_data(_M_local_buf);
|
}
|
else
|
{
|
pointer __tmp_ptr = _M_data();
|
_M_data(__s._M_data());
|
__s._M_data(__tmp_ptr);
|
_M_capacity(__s._M_allocated_capacity);
|
}
|
__s._M_capacity(__tmp_capacity);
|
}
|
|
const size_type __tmp_length = length();
|
_M_length(__s.length());
|
__s._M_length(__tmp_length);
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
typename basic_string<_CharT, _Traits, _Alloc>::pointer
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_create(size_type& __capacity, size_type __old_capacity)
|
{
|
|
|
if (__capacity > max_size())
|
std::__throw_length_error(("basic_string::_M_create"));
|
|
|
|
|
if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
|
{
|
__capacity = 2 * __old_capacity;
|
|
if (__capacity > max_size())
|
__capacity = max_size();
|
}
|
|
|
|
return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1);
|
}
|
|
|
|
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
template<typename _InIterator>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_construct(_InIterator __beg, _InIterator __end,
|
std::input_iterator_tag)
|
{
|
size_type __len = 0;
|
size_type __capacity = size_type(_S_local_capacity);
|
|
while (__beg != __end && __len < __capacity)
|
{
|
_M_data()[__len++] = *__beg;
|
++__beg;
|
}
|
|
try
|
{
|
while (__beg != __end)
|
{
|
if (__len == __capacity)
|
{
|
|
__capacity = __len + 1;
|
pointer __another = _M_create(__capacity, __len);
|
this->_S_copy(__another, _M_data(), __len);
|
_M_dispose();
|
_M_data(__another);
|
_M_capacity(__capacity);
|
}
|
_M_data()[__len++] = *__beg;
|
++__beg;
|
}
|
}
|
catch(...)
|
{
|
_M_dispose();
|
throw;
|
}
|
|
_M_set_length(__len);
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
template<typename _InIterator>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_construct(_InIterator __beg, _InIterator __end,
|
std::forward_iterator_tag)
|
{
|
|
if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
|
std::__throw_logic_error(("basic_string::" "_M_construct null not valid"));
|
|
|
size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
|
|
if (__dnew > size_type(_S_local_capacity))
|
{
|
_M_data(_M_create(__dnew, size_type(0)));
|
_M_capacity(__dnew);
|
}
|
|
|
try
|
{ this->_S_copy_chars(_M_data(), __beg, __end); }
|
catch(...)
|
{
|
_M_dispose();
|
throw;
|
}
|
|
_M_set_length(__dnew);
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_construct(size_type __n, _CharT __c)
|
{
|
if (__n > size_type(_S_local_capacity))
|
{
|
_M_data(_M_create(__n, size_type(0)));
|
_M_capacity(__n);
|
}
|
|
if (__n)
|
this->_S_assign(_M_data(), __n, __c);
|
|
_M_set_length(__n);
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_assign(const basic_string& __str)
|
{
|
if (this != &__str)
|
{
|
const size_type __rsize = __str.length();
|
const size_type __capacity = capacity();
|
|
if (__rsize > __capacity)
|
{
|
size_type __new_capacity = __rsize;
|
pointer __tmp = _M_create(__new_capacity, __capacity);
|
_M_dispose();
|
_M_data(__tmp);
|
_M_capacity(__new_capacity);
|
}
|
|
if (__rsize)
|
this->_S_copy(_M_data(), __str._M_data(), __rsize);
|
|
_M_set_length(__rsize);
|
}
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
reserve(size_type __res)
|
{
|
|
if (__res < length())
|
__res = length();
|
|
const size_type __capacity = capacity();
|
if (__res != __capacity)
|
{
|
if (__res > __capacity
|
|| __res > size_type(_S_local_capacity))
|
{
|
pointer __tmp = _M_create(__res, __capacity);
|
this->_S_copy(__tmp, _M_data(), length() + 1);
|
_M_dispose();
|
_M_data(__tmp);
|
_M_capacity(__res);
|
}
|
else if (!_M_is_local())
|
{
|
this->_S_copy(_M_local_data(), _M_data(), length() + 1);
|
_M_destroy(__capacity);
|
_M_data(_M_local_data());
|
}
|
}
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
|
size_type __len2)
|
{
|
const size_type __how_much = length() - __pos - __len1;
|
|
size_type __new_capacity = length() + __len2 - __len1;
|
pointer __r = _M_create(__new_capacity, capacity());
|
|
if (__pos)
|
this->_S_copy(__r, _M_data(), __pos);
|
if (__s && __len2)
|
this->_S_copy(__r + __pos, __s, __len2);
|
if (__how_much)
|
this->_S_copy(__r + __pos + __len2,
|
_M_data() + __pos + __len1, __how_much);
|
|
_M_dispose();
|
_M_data(__r);
|
_M_capacity(__new_capacity);
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
void
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_erase(size_type __pos, size_type __n)
|
{
|
const size_type __how_much = length() - __pos - __n;
|
|
if (__how_much && __n)
|
this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much);
|
|
_M_set_length(length() - __n);
|
}
|
|
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();
|
if (__size < __n)
|
this->append(__n - __size, __c);
|
else if (__n < __size)
|
this->_M_erase(__n, __size - __n);
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
basic_string<_CharT, _Traits, _Alloc>&
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_append(const _CharT* __s, size_type __n)
|
{
|
const size_type __len = __n + this->size();
|
|
if (__len <= this->capacity())
|
{
|
if (__n)
|
this->_S_copy(this->_M_data() + this->size(), __s, __n);
|
}
|
else
|
this->_M_mutate(this->size(), size_type(0), __s, __n);
|
|
this->_M_set_length(__len);
|
return *this;
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
template<typename _InputIterator>
|
basic_string<_CharT, _Traits, _Alloc>&
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_replace_dispatch(const_iterator __i1, const_iterator __i2,
|
_InputIterator __k1, _InputIterator __k2,
|
std::__false_type)
|
{
|
const basic_string __s(__k1, __k2);
|
const size_type __n1 = __i2 - __i1;
|
return _M_replace(__i1 - begin(), __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");
|
|
const size_type __old_size = this->size();
|
const size_type __new_size = __old_size + __n2 - __n1;
|
|
if (__new_size <= this->capacity())
|
{
|
pointer __p = this->_M_data() + __pos1;
|
|
const size_type __how_much = __old_size - __pos1 - __n1;
|
if (__how_much && __n1 != __n2)
|
this->_S_move(__p + __n2, __p + __n1, __how_much);
|
}
|
else
|
this->_M_mutate(__pos1, __n1, 0, __n2);
|
|
if (__n2)
|
this->_S_assign(this->_M_data() + __pos1, __n2, __c);
|
|
this->_M_set_length(__new_size);
|
return *this;
|
}
|
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
basic_string<_CharT, _Traits, _Alloc>&
|
basic_string<_CharT, _Traits, _Alloc>::
|
_M_replace(size_type __pos, size_type __len1, const _CharT* __s,
|
const size_type __len2)
|
{
|
_M_check_length(__len1, __len2, "basic_string::_M_replace");
|
|
const size_type __old_size = this->size();
|
const size_type __new_size = __old_size + __len2 - __len1;
|
|
if (__new_size <= this->capacity())
|
{
|
pointer __p = this->_M_data() + __pos;
|
|
const size_type __how_much = __old_size - __pos - __len1;
|
if (_M_disjunct(__s))
|
{
|
if (__how_much && __len1 != __len2)
|
this->_S_move(__p + __len2, __p + __len1, __how_much);
|
if (__len2)
|
this->_S_copy(__p, __s, __len2);
|
}
|
else
|
{
|
|
if (__len2 && __len2 <= __len1)
|
this->_S_move(__p, __s, __len2);
|
if (__how_much && __len1 != __len2)
|
this->_S_move(__p + __len2, __p + __len1, __how_much);
|
if (__len2 > __len1)
|
{
|
if (__s + __len2 <= __p + __len1)
|
this->_S_move(__p, __s, __len2);
|
else if (__s >= __p + __len1)
|
this->_S_copy(__p, __s + __len2 - __len1, __len2);
|
else
|
{
|
const size_type __nleft = (__p + __len1) - __s;
|
this->_S_move(__p, __s, __nleft);
|
this->_S_copy(__p + __nleft, __p + __len2,
|
__len2 - __nleft);
|
}
|
}
|
}
|
}
|
else
|
this->_M_mutate(__pos, __len1, __s, __len2);
|
|
this->_M_set_length(__new_size);
|
return *this;
|
}
|
|
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)
|
_S_copy(__s, _M_data() + __pos, __n);
|
|
return __n;
|
}
|
# 1145 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.tcc" 3
|
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>::
|
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 noexcept
|
{
|
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 noexcept
|
{
|
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 noexcept
|
{
|
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 noexcept
|
{
|
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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/string" 2 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdexcept" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
struct __cow_string
|
{
|
union {
|
const char* _M_p;
|
char _M_bytes[sizeof(const char*)];
|
};
|
|
__cow_string();
|
__cow_string(const std::string&);
|
__cow_string(const char*, size_t);
|
__cow_string(const __cow_string&) noexcept;
|
__cow_string& operator=(const __cow_string&) noexcept;
|
~__cow_string();
|
|
__cow_string(__cow_string&&) noexcept;
|
__cow_string& operator=(__cow_string&&) noexcept;
|
|
};
|
|
typedef basic_string<char> __sso_string;
|
# 113 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/stdexcept" 3
|
class logic_error : public exception
|
{
|
__cow_string _M_msg;
|
|
public:
|
|
explicit
|
logic_error(const string& __arg) ;
|
|
|
explicit
|
logic_error(const char*) ;
|
|
|
|
logic_error(const logic_error&) noexcept;
|
logic_error& operator=(const logic_error&) noexcept;
|
|
|
virtual ~logic_error() noexcept;
|
|
|
|
virtual const char*
|
what() const noexcept;
|
|
|
|
|
|
};
|
|
|
|
class domain_error : public logic_error
|
{
|
public:
|
explicit domain_error(const string& __arg) ;
|
|
explicit domain_error(const char*) ;
|
|
virtual ~domain_error() noexcept;
|
};
|
|
|
class invalid_argument : public logic_error
|
{
|
public:
|
explicit invalid_argument(const string& __arg) ;
|
|
explicit invalid_argument(const char*) ;
|
|
virtual ~invalid_argument() noexcept;
|
};
|
|
|
|
class length_error : public logic_error
|
{
|
public:
|
explicit length_error(const string& __arg) ;
|
|
explicit length_error(const char*) ;
|
|
virtual ~length_error() noexcept;
|
};
|
|
|
|
class out_of_range : public logic_error
|
{
|
public:
|
explicit out_of_range(const string& __arg) ;
|
|
explicit out_of_range(const char*) ;
|
|
virtual ~out_of_range() noexcept;
|
};
|
|
|
|
|
|
|
class runtime_error : public exception
|
{
|
__cow_string _M_msg;
|
|
public:
|
|
explicit
|
runtime_error(const string& __arg) ;
|
|
|
explicit
|
runtime_error(const char*) ;
|
|
|
|
runtime_error(const runtime_error&) noexcept;
|
runtime_error& operator=(const runtime_error&) noexcept;
|
|
|
virtual ~runtime_error() noexcept;
|
|
|
|
virtual const char*
|
what() const noexcept;
|
|
|
|
|
|
};
|
|
|
class range_error : public runtime_error
|
{
|
public:
|
explicit range_error(const string& __arg) ;
|
|
explicit range_error(const char*) ;
|
|
virtual ~range_error() noexcept;
|
};
|
|
|
class overflow_error : public runtime_error
|
{
|
public:
|
explicit overflow_error(const string& __arg) ;
|
|
explicit overflow_error(const char*) ;
|
|
virtual ~overflow_error() noexcept;
|
};
|
|
|
class underflow_error : public runtime_error
|
{
|
public:
|
explicit underflow_error(const string& __arg) ;
|
|
explicit underflow_error(const char*) ;
|
|
virtual ~underflow_error() noexcept;
|
};
|
|
|
|
|
}
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/array" 2 3
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
template<typename _Tp, std::size_t _Nm>
|
struct __array_traits
|
{
|
typedef _Tp _Type[_Nm];
|
|
static constexpr _Tp&
|
_S_ref(const _Type& __t, std::size_t __n) noexcept
|
{ return const_cast<_Tp&>(__t[__n]); }
|
|
static constexpr _Tp*
|
_S_ptr(const _Type& __t) noexcept
|
{ return const_cast<_Tp*>(__t); }
|
};
|
|
template<typename _Tp>
|
struct __array_traits<_Tp, 0>
|
{
|
struct _Type { };
|
|
static constexpr _Tp&
|
_S_ref(const _Type&, std::size_t) noexcept
|
{ return *static_cast<_Tp*>(nullptr); }
|
|
static constexpr _Tp*
|
_S_ptr(const _Type&) noexcept
|
{ return nullptr; }
|
};
|
# 89 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/array" 3
|
template<typename _Tp, std::size_t _Nm>
|
struct array
|
{
|
typedef _Tp value_type;
|
typedef value_type* pointer;
|
typedef const value_type* const_pointer;
|
typedef value_type& reference;
|
typedef const value_type& const_reference;
|
typedef value_type* iterator;
|
typedef const value_type* const_iterator;
|
typedef std::size_t size_type;
|
typedef std::ptrdiff_t difference_type;
|
typedef std::reverse_iterator<iterator> reverse_iterator;
|
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
|
|
|
typedef std::__array_traits<_Tp, _Nm> _AT_Type;
|
typename _AT_Type::_Type _M_elems;
|
|
|
|
|
void
|
fill(const value_type& __u)
|
{ std::fill_n(begin(), size(), __u); }
|
|
void
|
swap(array& __other)
|
noexcept(__is_nothrow_swappable<_Tp>::value)
|
{ std::swap_ranges(begin(), end(), __other.begin()); }
|
|
|
iterator
|
begin() noexcept
|
{ return iterator(data()); }
|
|
const_iterator
|
begin() const noexcept
|
{ return const_iterator(data()); }
|
|
iterator
|
end() noexcept
|
{ return iterator(data() + _Nm); }
|
|
const_iterator
|
end() const noexcept
|
{ return const_iterator(data() + _Nm); }
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return reverse_iterator(end()); }
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
reverse_iterator
|
rend() noexcept
|
{ return reverse_iterator(begin()); }
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
const_iterator
|
cbegin() const noexcept
|
{ return const_iterator(data()); }
|
|
const_iterator
|
cend() const noexcept
|
{ return const_iterator(data() + _Nm); }
|
|
const_reverse_iterator
|
crbegin() const noexcept
|
{ return const_reverse_iterator(end()); }
|
|
const_reverse_iterator
|
crend() const noexcept
|
{ return const_reverse_iterator(begin()); }
|
|
|
constexpr size_type
|
size() const noexcept { return _Nm; }
|
|
constexpr size_type
|
max_size() const noexcept { return _Nm; }
|
|
constexpr bool
|
empty() const noexcept { return size() == 0; }
|
|
|
reference
|
operator[](size_type __n) noexcept
|
{ return _AT_Type::_S_ref(_M_elems, __n); }
|
|
constexpr const_reference
|
operator[](size_type __n) const noexcept
|
{ return _AT_Type::_S_ref(_M_elems, __n); }
|
|
reference
|
at(size_type __n)
|
{
|
if (__n >= _Nm)
|
std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)"),
|
|
__n, _Nm);
|
return _AT_Type::_S_ref(_M_elems, __n);
|
}
|
|
constexpr const_reference
|
at(size_type __n) const
|
{
|
|
|
return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n)
|
: (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)"),
|
|
__n, _Nm),
|
_AT_Type::_S_ref(_M_elems, 0));
|
}
|
|
reference
|
front() noexcept
|
{ return *begin(); }
|
|
constexpr const_reference
|
front() const noexcept
|
{ return _AT_Type::_S_ref(_M_elems, 0); }
|
|
reference
|
back() noexcept
|
{ return _Nm ? *(end() - 1) : *end(); }
|
|
constexpr const_reference
|
back() const noexcept
|
{
|
return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1)
|
: _AT_Type::_S_ref(_M_elems, 0);
|
}
|
|
pointer
|
data() noexcept
|
{ return _AT_Type::_S_ptr(_M_elems); }
|
|
const_pointer
|
data() const noexcept
|
{ return _AT_Type::_S_ptr(_M_elems); }
|
};
|
|
|
template<typename _Tp, std::size_t _Nm>
|
inline bool
|
operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
|
{ return std::equal(__one.begin(), __one.end(), __two.begin()); }
|
|
template<typename _Tp, std::size_t _Nm>
|
inline bool
|
operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
|
{ return !(__one == __two); }
|
|
template<typename _Tp, std::size_t _Nm>
|
inline bool
|
operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b)
|
{
|
return std::lexicographical_compare(__a.begin(), __a.end(),
|
__b.begin(), __b.end());
|
}
|
|
template<typename _Tp, std::size_t _Nm>
|
inline bool
|
operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
|
{ return __two < __one; }
|
|
template<typename _Tp, std::size_t _Nm>
|
inline bool
|
operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
|
{ return !(__one > __two); }
|
|
template<typename _Tp, std::size_t _Nm>
|
inline bool
|
operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two)
|
{ return !(__one < __two); }
|
|
|
template<typename _Tp, std::size_t _Nm>
|
inline void
|
swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two)
|
noexcept(noexcept(__one.swap(__two)))
|
{ __one.swap(__two); }
|
|
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
constexpr _Tp&
|
get(array<_Tp, _Nm>& __arr) noexcept
|
{
|
static_assert(_Int < _Nm, "index is out of bounds");
|
return std::__array_traits<_Tp, _Nm>::
|
_S_ref(__arr._M_elems, _Int);
|
}
|
|
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
constexpr _Tp&&
|
get(array<_Tp, _Nm>&& __arr) noexcept
|
{
|
static_assert(_Int < _Nm, "index is out of bounds");
|
return std::move(std::get<_Int>(__arr));
|
}
|
|
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
constexpr const _Tp&
|
get(const array<_Tp, _Nm>& __arr) noexcept
|
{
|
static_assert(_Int < _Nm, "index is out of bounds");
|
return std::__array_traits<_Tp, _Nm>::
|
_S_ref(__arr._M_elems, _Int);
|
}
|
|
|
}
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
template<typename _Tp>
|
class tuple_size;
|
|
|
template<typename _Tp, std::size_t _Nm>
|
struct tuple_size<std::array<_Tp, _Nm>>
|
: public integral_constant<std::size_t, _Nm> { };
|
|
|
template<std::size_t _Int, typename _Tp>
|
class tuple_element;
|
|
|
template<std::size_t _Int, typename _Tp, std::size_t _Nm>
|
struct tuple_element<_Int, std::array<_Tp, _Nm>>
|
{
|
static_assert(_Int < _Nm, "index is out of bounds");
|
typedef _Tp type;
|
};
|
|
template<typename _Tp, std::size_t _Nm>
|
struct __is_tuple_like_impl<std::array<_Tp, _Nm>> : true_type
|
{ };
|
|
|
}
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/uses_allocator.h" 1 3
|
# 35 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/uses_allocator.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
struct __erased_type { };
|
|
template<typename _Alloc, typename _Tp>
|
using __is_erased_or_convertible
|
= __or_<is_same<_Tp, __erased_type>, is_convertible<_Alloc, _Tp>>;
|
|
|
struct allocator_arg_t { explicit allocator_arg_t() = default; };
|
|
constexpr allocator_arg_t allocator_arg = allocator_arg_t();
|
|
template<typename _Tp, typename _Alloc, typename = __void_t<>>
|
struct __uses_allocator_helper
|
: false_type { };
|
|
template<typename _Tp, typename _Alloc>
|
struct __uses_allocator_helper<_Tp, _Alloc,
|
__void_t<typename _Tp::allocator_type>>
|
: __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type
|
{ };
|
|
|
template<typename _Tp, typename _Alloc>
|
struct uses_allocator
|
: __uses_allocator_helper<_Tp, _Alloc>::type
|
{ };
|
|
struct __uses_alloc_base { };
|
|
struct __uses_alloc0 : __uses_alloc_base
|
{
|
struct _Sink { void operator=(const void*) { } } _M_a;
|
};
|
|
template<typename _Alloc>
|
struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; };
|
|
template<typename _Alloc>
|
struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; };
|
|
template<bool, typename _Tp, typename _Alloc, typename... _Args>
|
struct __uses_alloc;
|
|
template<typename _Tp, typename _Alloc, typename... _Args>
|
struct __uses_alloc<true, _Tp, _Alloc, _Args...>
|
: conditional<
|
is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value,
|
__uses_alloc1<_Alloc>,
|
__uses_alloc2<_Alloc>>::type
|
{
|
static_assert(__or_<
|
is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>,
|
is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with"
|
" an allocator must be possible if uses_allocator is true");
|
};
|
|
template<typename _Tp, typename _Alloc, typename... _Args>
|
struct __uses_alloc<false, _Tp, _Alloc, _Args...>
|
: __uses_alloc0 { };
|
|
template<typename _Tp, typename _Alloc, typename... _Args>
|
using __uses_alloc_t =
|
__uses_alloc<uses_allocator<_Tp, _Alloc>::value, _Tp, _Alloc, _Args...>;
|
|
template<typename _Tp, typename _Alloc, typename... _Args>
|
inline __uses_alloc_t<_Tp, _Alloc, _Args...>
|
__use_alloc(const _Alloc& __a)
|
{
|
__uses_alloc_t<_Tp, _Alloc, _Args...> __ret;
|
__ret._M_a = std::__addressof(__a);
|
return __ret;
|
}
|
|
|
}
|
# 41 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
|
template<std::size_t _Idx, typename _Head, bool _IsEmptyNotFinal>
|
struct _Head_base;
|
|
template<std::size_t _Idx, typename _Head>
|
struct _Head_base<_Idx, _Head, true>
|
: public _Head
|
{
|
constexpr _Head_base()
|
: _Head() { }
|
|
constexpr _Head_base(const _Head& __h)
|
: _Head(__h) { }
|
|
constexpr _Head_base(const _Head_base&) = default;
|
constexpr _Head_base(_Head_base&&) = default;
|
|
template<typename _UHead>
|
constexpr _Head_base(_UHead&& __h)
|
: _Head(std::forward<_UHead>(__h)) { }
|
|
_Head_base(allocator_arg_t, __uses_alloc0)
|
: _Head() { }
|
|
template<typename _Alloc>
|
_Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
|
: _Head(allocator_arg, *__a._M_a) { }
|
|
template<typename _Alloc>
|
_Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
|
: _Head(*__a._M_a) { }
|
|
template<typename _UHead>
|
_Head_base(__uses_alloc0, _UHead&& __uhead)
|
: _Head(std::forward<_UHead>(__uhead)) { }
|
|
template<typename _Alloc, typename _UHead>
|
_Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
|
: _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { }
|
|
template<typename _Alloc, typename _UHead>
|
_Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
|
: _Head(std::forward<_UHead>(__uhead), *__a._M_a) { }
|
|
static constexpr _Head&
|
_M_head(_Head_base& __b) noexcept { return __b; }
|
|
static constexpr const _Head&
|
_M_head(const _Head_base& __b) noexcept { return __b; }
|
};
|
|
template<std::size_t _Idx, typename _Head>
|
struct _Head_base<_Idx, _Head, false>
|
{
|
constexpr _Head_base()
|
: _M_head_impl() { }
|
|
constexpr _Head_base(const _Head& __h)
|
: _M_head_impl(__h) { }
|
|
constexpr _Head_base(const _Head_base&) = default;
|
constexpr _Head_base(_Head_base&&) = default;
|
|
template<typename _UHead>
|
constexpr _Head_base(_UHead&& __h)
|
: _M_head_impl(std::forward<_UHead>(__h)) { }
|
|
_Head_base(allocator_arg_t, __uses_alloc0)
|
: _M_head_impl() { }
|
|
template<typename _Alloc>
|
_Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
|
: _M_head_impl(allocator_arg, *__a._M_a) { }
|
|
template<typename _Alloc>
|
_Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
|
: _M_head_impl(*__a._M_a) { }
|
|
template<typename _UHead>
|
_Head_base(__uses_alloc0, _UHead&& __uhead)
|
: _M_head_impl(std::forward<_UHead>(__uhead)) { }
|
|
template<typename _Alloc, typename _UHead>
|
_Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
|
: _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead))
|
{ }
|
|
template<typename _Alloc, typename _UHead>
|
_Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
|
: _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { }
|
|
static constexpr _Head&
|
_M_head(_Head_base& __b) noexcept { return __b._M_head_impl; }
|
|
static constexpr const _Head&
|
_M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
|
|
_Head _M_head_impl;
|
};
|
# 158 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 3
|
template<std::size_t _Idx, typename... _Elements>
|
struct _Tuple_impl;
|
|
template<typename _Tp>
|
struct __is_empty_non_tuple : is_empty<_Tp> { };
|
|
|
template<typename _El0, typename... _El>
|
struct __is_empty_non_tuple<tuple<_El0, _El...>> : false_type { };
|
|
|
template<typename _Tp>
|
using __empty_not_final
|
= typename conditional<__is_final(_Tp), false_type,
|
__is_empty_non_tuple<_Tp>>::type;
|
|
|
|
|
|
|
template<std::size_t _Idx, typename _Head, typename... _Tail>
|
struct _Tuple_impl<_Idx, _Head, _Tail...>
|
: public _Tuple_impl<_Idx + 1, _Tail...>,
|
private _Head_base<_Idx, _Head, __empty_not_final<_Head>::value>
|
{
|
template<std::size_t, typename...> friend class _Tuple_impl;
|
|
typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited;
|
typedef _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> _Base;
|
|
static constexpr _Head&
|
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
|
|
static constexpr const _Head&
|
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
|
|
static constexpr _Inherited&
|
_M_tail(_Tuple_impl& __t) noexcept { return __t; }
|
|
static constexpr const _Inherited&
|
_M_tail(const _Tuple_impl& __t) noexcept { return __t; }
|
|
constexpr _Tuple_impl()
|
: _Inherited(), _Base() { }
|
|
explicit
|
constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
|
: _Inherited(__tail...), _Base(__head) { }
|
|
template<typename _UHead, typename... _UTail, typename = typename
|
enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
|
explicit
|
constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail)
|
: _Inherited(std::forward<_UTail>(__tail)...),
|
_Base(std::forward<_UHead>(__head)) { }
|
|
constexpr _Tuple_impl(const _Tuple_impl&) = default;
|
|
constexpr
|
_Tuple_impl(_Tuple_impl&& __in)
|
noexcept(__and_<is_nothrow_move_constructible<_Head>,
|
is_nothrow_move_constructible<_Inherited>>::value)
|
: _Inherited(std::move(_M_tail(__in))),
|
_Base(std::forward<_Head>(_M_head(__in))) { }
|
|
template<typename... _UElements>
|
constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in)
|
: _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)),
|
_Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { }
|
|
template<typename _UHead, typename... _UTails>
|
constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
|
: _Inherited(std::move
|
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))),
|
_Base(std::forward<_UHead>
|
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a)
|
: _Inherited(__tag, __a),
|
_Base(__tag, __use_alloc<_Head>(__a)) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
const _Head& __head, const _Tail&... __tail)
|
: _Inherited(__tag, __a, __tail...),
|
_Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { }
|
|
template<typename _Alloc, typename _UHead, typename... _UTail,
|
typename = typename enable_if<sizeof...(_Tail)
|
== sizeof...(_UTail)>::type>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
_UHead&& __head, _UTail&&... __tail)
|
: _Inherited(__tag, __a, std::forward<_UTail>(__tail)...),
|
_Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
|
std::forward<_UHead>(__head)) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
const _Tuple_impl& __in)
|
: _Inherited(__tag, __a, _M_tail(__in)),
|
_Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
_Tuple_impl&& __in)
|
: _Inherited(__tag, __a, std::move(_M_tail(__in))),
|
_Base(__use_alloc<_Head, _Alloc, _Head>(__a),
|
std::forward<_Head>(_M_head(__in))) { }
|
|
template<typename _Alloc, typename... _UElements>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
const _Tuple_impl<_Idx, _UElements...>& __in)
|
: _Inherited(__tag, __a,
|
_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)),
|
_Base(__use_alloc<_Head, _Alloc, _Head>(__a),
|
_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { }
|
|
template<typename _Alloc, typename _UHead, typename... _UTails>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
|
: _Inherited(__tag, __a, std::move
|
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))),
|
_Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
|
std::forward<_UHead>
|
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { }
|
|
_Tuple_impl&
|
operator=(const _Tuple_impl& __in)
|
{
|
_M_head(*this) = _M_head(__in);
|
_M_tail(*this) = _M_tail(__in);
|
return *this;
|
}
|
|
_Tuple_impl&
|
operator=(_Tuple_impl&& __in)
|
noexcept(__and_<is_nothrow_move_assignable<_Head>,
|
is_nothrow_move_assignable<_Inherited>>::value)
|
{
|
_M_head(*this) = std::forward<_Head>(_M_head(__in));
|
_M_tail(*this) = std::move(_M_tail(__in));
|
return *this;
|
}
|
|
template<typename... _UElements>
|
_Tuple_impl&
|
operator=(const _Tuple_impl<_Idx, _UElements...>& __in)
|
{
|
_M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in);
|
_M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in);
|
return *this;
|
}
|
|
template<typename _UHead, typename... _UTails>
|
_Tuple_impl&
|
operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
|
{
|
_M_head(*this) = std::forward<_UHead>
|
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in));
|
_M_tail(*this) = std::move
|
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in));
|
return *this;
|
}
|
|
protected:
|
void
|
_M_swap(_Tuple_impl& __in)
|
noexcept(__is_nothrow_swappable<_Head>::value
|
&& noexcept(_M_tail(__in)._M_swap(_M_tail(__in))))
|
{
|
using std::swap;
|
swap(_M_head(*this), _M_head(__in));
|
_Inherited::_M_swap(_M_tail(__in));
|
}
|
};
|
|
|
template<std::size_t _Idx, typename _Head>
|
struct _Tuple_impl<_Idx, _Head>
|
: private _Head_base<_Idx, _Head, __empty_not_final<_Head>::value>
|
{
|
template<std::size_t, typename...> friend class _Tuple_impl;
|
|
typedef _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> _Base;
|
|
static constexpr _Head&
|
_M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
|
|
static constexpr const _Head&
|
_M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); }
|
|
constexpr _Tuple_impl()
|
: _Base() { }
|
|
explicit
|
constexpr _Tuple_impl(const _Head& __head)
|
: _Base(__head) { }
|
|
template<typename _UHead>
|
explicit
|
constexpr _Tuple_impl(_UHead&& __head)
|
: _Base(std::forward<_UHead>(__head)) { }
|
|
constexpr _Tuple_impl(const _Tuple_impl&) = default;
|
|
constexpr
|
_Tuple_impl(_Tuple_impl&& __in)
|
noexcept(is_nothrow_move_constructible<_Head>::value)
|
: _Base(std::forward<_Head>(_M_head(__in))) { }
|
|
template<typename _UHead>
|
constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in)
|
: _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { }
|
|
template<typename _UHead>
|
constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in)
|
: _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
|
{ }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a)
|
: _Base(__tag, __use_alloc<_Head>(__a)) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
const _Head& __head)
|
: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { }
|
|
template<typename _Alloc, typename _UHead>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
_UHead&& __head)
|
: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
|
std::forward<_UHead>(__head)) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
const _Tuple_impl& __in)
|
: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { }
|
|
template<typename _Alloc>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
_Tuple_impl&& __in)
|
: _Base(__use_alloc<_Head, _Alloc, _Head>(__a),
|
std::forward<_Head>(_M_head(__in))) { }
|
|
template<typename _Alloc, typename _UHead>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
const _Tuple_impl<_Idx, _UHead>& __in)
|
: _Base(__use_alloc<_Head, _Alloc, _Head>(__a),
|
_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { }
|
|
template<typename _Alloc, typename _UHead>
|
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
|
_Tuple_impl<_Idx, _UHead>&& __in)
|
: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a),
|
std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
|
{ }
|
|
_Tuple_impl&
|
operator=(const _Tuple_impl& __in)
|
{
|
_M_head(*this) = _M_head(__in);
|
return *this;
|
}
|
|
_Tuple_impl&
|
operator=(_Tuple_impl&& __in)
|
noexcept(is_nothrow_move_assignable<_Head>::value)
|
{
|
_M_head(*this) = std::forward<_Head>(_M_head(__in));
|
return *this;
|
}
|
|
template<typename _UHead>
|
_Tuple_impl&
|
operator=(const _Tuple_impl<_Idx, _UHead>& __in)
|
{
|
_M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in);
|
return *this;
|
}
|
|
template<typename _UHead>
|
_Tuple_impl&
|
operator=(_Tuple_impl<_Idx, _UHead>&& __in)
|
{
|
_M_head(*this)
|
= std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in));
|
return *this;
|
}
|
|
protected:
|
void
|
_M_swap(_Tuple_impl& __in)
|
noexcept(__is_nothrow_swappable<_Head>::value)
|
{
|
using std::swap;
|
swap(_M_head(*this), _M_head(__in));
|
}
|
};
|
|
template<typename... _Elements>
|
class tuple;
|
|
|
|
template<bool, typename... _Elements>
|
struct _TC
|
{
|
template<typename... _UElements>
|
static constexpr bool _ConstructibleTuple()
|
{
|
return __and_<is_constructible<_Elements, const _UElements&>...>::value;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _ImplicitlyConvertibleTuple()
|
{
|
return __and_<is_convertible<const _UElements&, _Elements>...>::value;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _MoveConstructibleTuple()
|
{
|
return __and_<is_constructible<_Elements, _UElements&&>...>::value;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _ImplicitlyMoveConvertibleTuple()
|
{
|
return __and_<is_convertible<_UElements&&, _Elements>...>::value;
|
}
|
|
template<typename _SrcTuple>
|
static constexpr bool _NonNestedTuple()
|
{
|
return __and_<__not_<is_same<tuple<_Elements...>,
|
typename remove_cv<
|
typename remove_reference<_SrcTuple>::type
|
>::type>>,
|
__not_<is_convertible<_SrcTuple, _Elements...>>,
|
__not_<is_constructible<_Elements..., _SrcTuple>>
|
>::value;
|
}
|
template<typename... _UElements>
|
static constexpr bool _NotSameTuple()
|
{
|
return __not_<is_same<tuple<_Elements...>,
|
typename remove_const<
|
typename remove_reference<_UElements...>::type
|
>::type>>::value;
|
}
|
};
|
|
template<typename... _Elements>
|
struct _TC<false, _Elements...>
|
{
|
template<typename... _UElements>
|
static constexpr bool _ConstructibleTuple()
|
{
|
return false;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _ImplicitlyConvertibleTuple()
|
{
|
return false;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _MoveConstructibleTuple()
|
{
|
return false;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _ImplicitlyMoveConvertibleTuple()
|
{
|
return false;
|
}
|
|
template<typename... _UElements>
|
static constexpr bool _NonNestedTuple()
|
{
|
return true;
|
}
|
template<typename... _UElements>
|
static constexpr bool _NotSameTuple()
|
{
|
return true;
|
}
|
};
|
|
|
template<typename... _Elements>
|
class tuple : public _Tuple_impl<0, _Elements...>
|
{
|
typedef _Tuple_impl<0, _Elements...> _Inherited;
|
|
|
|
template<typename _Dummy>
|
struct _TC2
|
{
|
static constexpr bool _DefaultConstructibleTuple()
|
{
|
return __and_<is_default_constructible<_Elements>...>::value;
|
}
|
static constexpr bool _ImplicitlyDefaultConstructibleTuple()
|
{
|
return __and_<__is_implicitly_default_constructible<_Elements>...>
|
::value;
|
}
|
};
|
|
public:
|
template<typename _Dummy = void,
|
typename enable_if<_TC2<_Dummy>::
|
_ImplicitlyDefaultConstructibleTuple(),
|
bool>::type = true>
|
constexpr tuple()
|
: _Inherited() { }
|
|
template<typename _Dummy = void,
|
typename enable_if<_TC2<_Dummy>::
|
_DefaultConstructibleTuple()
|
&&
|
!_TC2<_Dummy>::
|
_ImplicitlyDefaultConstructibleTuple(),
|
bool>::type = false>
|
explicit constexpr tuple()
|
: _Inherited() { }
|
|
|
|
template<typename _Dummy> using _TCC =
|
_TC<is_same<_Dummy, void>::value,
|
_Elements...>;
|
|
template<typename _Dummy = void,
|
typename enable_if<
|
_TCC<_Dummy>::template
|
_ConstructibleTuple<_Elements...>()
|
&& _TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_Elements...>()
|
&& (sizeof...(_Elements) >= 1),
|
bool>::type=true>
|
constexpr tuple(const _Elements&... __elements)
|
: _Inherited(__elements...) { }
|
|
template<typename _Dummy = void,
|
typename enable_if<
|
_TCC<_Dummy>::template
|
_ConstructibleTuple<_Elements...>()
|
&& !_TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_Elements...>()
|
&& (sizeof...(_Elements) >= 1),
|
bool>::type=false>
|
explicit constexpr tuple(const _Elements&... __elements)
|
: _Inherited(__elements...) { }
|
|
|
|
template<typename... _UElements> using _TMC =
|
_TC<(sizeof...(_Elements) == sizeof...(_UElements)),
|
_Elements...>;
|
|
template<typename... _UElements, typename
|
enable_if<
|
_TC<sizeof...(_UElements) == 1, _Elements...>::template
|
_NotSameTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>()
|
&& (sizeof...(_Elements) >= 1),
|
bool>::type=true>
|
constexpr tuple(_UElements&&... __elements)
|
: _Inherited(std::forward<_UElements>(__elements)...) { }
|
|
template<typename... _UElements, typename
|
enable_if<
|
_TC<sizeof...(_UElements) == 1, _Elements...>::template
|
_NotSameTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& !_TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>()
|
&& (sizeof...(_Elements) >= 1),
|
bool>::type=false>
|
explicit constexpr tuple(_UElements&&... __elements)
|
: _Inherited(std::forward<_UElements>(__elements)...) { }
|
|
constexpr tuple(const tuple&) = default;
|
|
constexpr tuple(tuple&&) = default;
|
|
|
|
template<typename _Dummy> using _TNTC =
|
_TC<is_same<_Dummy, void>::value && sizeof...(_Elements) == 1,
|
_Elements...>;
|
|
template<typename... _UElements, typename _Dummy = void, typename
|
enable_if<_TMC<_UElements...>::template
|
_ConstructibleTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_ImplicitlyConvertibleTuple<_UElements...>()
|
&& _TNTC<_Dummy>::template
|
_NonNestedTuple<const tuple<_UElements...>&>(),
|
bool>::type=true>
|
constexpr tuple(const tuple<_UElements...>& __in)
|
: _Inherited(static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
|
{ }
|
|
template<typename... _UElements, typename _Dummy = void, typename
|
enable_if<_TMC<_UElements...>::template
|
_ConstructibleTuple<_UElements...>()
|
&& !_TMC<_UElements...>::template
|
_ImplicitlyConvertibleTuple<_UElements...>()
|
&& _TNTC<_Dummy>::template
|
_NonNestedTuple<const tuple<_UElements...>&>(),
|
bool>::type=false>
|
explicit constexpr tuple(const tuple<_UElements...>& __in)
|
: _Inherited(static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
|
{ }
|
|
template<typename... _UElements, typename _Dummy = void, typename
|
enable_if<_TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>()
|
&& _TNTC<_Dummy>::template
|
_NonNestedTuple<tuple<_UElements...>&&>(),
|
bool>::type=true>
|
constexpr tuple(tuple<_UElements...>&& __in)
|
: _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { }
|
|
template<typename... _UElements, typename _Dummy = void, typename
|
enable_if<_TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& !_TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>()
|
&& _TNTC<_Dummy>::template
|
_NonNestedTuple<tuple<_UElements...>&&>(),
|
bool>::type=false>
|
explicit constexpr tuple(tuple<_UElements...>&& __in)
|
: _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { }
|
|
|
|
template<typename _Alloc>
|
tuple(allocator_arg_t __tag, const _Alloc& __a)
|
: _Inherited(__tag, __a) { }
|
|
template<typename _Alloc, typename _Dummy = void,
|
typename enable_if<
|
_TCC<_Dummy>::template
|
_ConstructibleTuple<_Elements...>()
|
&& _TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_Elements...>(),
|
bool>::type=true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const _Elements&... __elements)
|
: _Inherited(__tag, __a, __elements...) { }
|
|
template<typename _Alloc, typename _Dummy = void,
|
typename enable_if<
|
_TCC<_Dummy>::template
|
_ConstructibleTuple<_Elements...>()
|
&& !_TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_Elements...>(),
|
bool>::type=false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const _Elements&... __elements)
|
: _Inherited(__tag, __a, __elements...) { }
|
|
template<typename _Alloc, typename... _UElements, typename
|
enable_if<_TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>(),
|
bool>::type=true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
_UElements&&... __elements)
|
: _Inherited(__tag, __a, std::forward<_UElements>(__elements)...)
|
{ }
|
|
template<typename _Alloc, typename... _UElements, typename
|
enable_if<_TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& !_TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>(),
|
bool>::type=false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
_UElements&&... __elements)
|
: _Inherited(__tag, __a, std::forward<_UElements>(__elements)...)
|
{ }
|
|
template<typename _Alloc>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in)
|
: _Inherited(__tag, __a, static_cast<const _Inherited&>(__in)) { }
|
|
template<typename _Alloc>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
|
: _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { }
|
|
template<typename _Alloc, typename... _UElements, typename
|
enable_if<_TMC<_UElements...>::template
|
_ConstructibleTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_ImplicitlyConvertibleTuple<_UElements...>(),
|
bool>::type=true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const tuple<_UElements...>& __in)
|
: _Inherited(__tag, __a,
|
static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
|
{ }
|
|
template<typename _Alloc, typename... _UElements, typename
|
enable_if<_TMC<_UElements...>::template
|
_ConstructibleTuple<_UElements...>()
|
&& !_TMC<_UElements...>::template
|
_ImplicitlyConvertibleTuple<_UElements...>(),
|
bool>::type=false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const tuple<_UElements...>& __in)
|
: _Inherited(__tag, __a,
|
static_cast<const _Tuple_impl<0, _UElements...>&>(__in))
|
{ }
|
|
template<typename _Alloc, typename... _UElements, typename
|
enable_if<_TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& _TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>(),
|
bool>::type=true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
tuple<_UElements...>&& __in)
|
: _Inherited(__tag, __a,
|
static_cast<_Tuple_impl<0, _UElements...>&&>(__in))
|
{ }
|
|
template<typename _Alloc, typename... _UElements, typename
|
enable_if<_TMC<_UElements...>::template
|
_MoveConstructibleTuple<_UElements...>()
|
&& !_TMC<_UElements...>::template
|
_ImplicitlyMoveConvertibleTuple<_UElements...>(),
|
bool>::type=false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
tuple<_UElements...>&& __in)
|
: _Inherited(__tag, __a,
|
static_cast<_Tuple_impl<0, _UElements...>&&>(__in))
|
{ }
|
|
tuple&
|
operator=(const tuple& __in)
|
{
|
static_cast<_Inherited&>(*this) = __in;
|
return *this;
|
}
|
|
tuple&
|
operator=(tuple&& __in)
|
noexcept(is_nothrow_move_assignable<_Inherited>::value)
|
{
|
static_cast<_Inherited&>(*this) = std::move(__in);
|
return *this;
|
}
|
|
template<typename... _UElements, typename = typename
|
enable_if<sizeof...(_UElements)
|
== sizeof...(_Elements)>::type>
|
tuple&
|
operator=(const tuple<_UElements...>& __in)
|
{
|
static_cast<_Inherited&>(*this) = __in;
|
return *this;
|
}
|
|
template<typename... _UElements, typename = typename
|
enable_if<sizeof...(_UElements)
|
== sizeof...(_Elements)>::type>
|
tuple&
|
operator=(tuple<_UElements...>&& __in)
|
{
|
static_cast<_Inherited&>(*this) = std::move(__in);
|
return *this;
|
}
|
|
void
|
swap(tuple& __in)
|
noexcept(noexcept(__in._M_swap(__in)))
|
{ _Inherited::_M_swap(__in); }
|
};
|
|
|
template<>
|
class tuple<>
|
{
|
public:
|
void swap(tuple&) noexcept { }
|
};
|
|
|
|
template<typename _T1, typename _T2>
|
class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2>
|
{
|
typedef _Tuple_impl<0, _T1, _T2> _Inherited;
|
|
public:
|
template <typename _U1 = _T1,
|
typename _U2 = _T2,
|
typename enable_if<__and_<
|
__is_implicitly_default_constructible<_U1>,
|
__is_implicitly_default_constructible<_U2>>
|
::value, bool>::type = true>
|
|
constexpr tuple()
|
: _Inherited() { }
|
|
template <typename _U1 = _T1,
|
typename _U2 = _T2,
|
typename enable_if<
|
__and_<
|
is_default_constructible<_U1>,
|
is_default_constructible<_U2>,
|
__not_<
|
__and_<__is_implicitly_default_constructible<_U1>,
|
__is_implicitly_default_constructible<_U2>>>>
|
::value, bool>::type = false>
|
|
explicit constexpr tuple()
|
: _Inherited() { }
|
|
|
|
template<typename _Dummy> using _TCC =
|
_TC<is_same<_Dummy, void>::value, _T1, _T2>;
|
|
template<typename _Dummy = void, typename
|
enable_if<_TCC<_Dummy>::template
|
_ConstructibleTuple<_T1, _T2>()
|
&& _TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_T1, _T2>(),
|
bool>::type = true>
|
constexpr tuple(const _T1& __a1, const _T2& __a2)
|
: _Inherited(__a1, __a2) { }
|
|
template<typename _Dummy = void, typename
|
enable_if<_TCC<_Dummy>::template
|
_ConstructibleTuple<_T1, _T2>()
|
&& !_TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_T1, _T2>(),
|
bool>::type = false>
|
explicit constexpr tuple(const _T1& __a1, const _T2& __a2)
|
: _Inherited(__a1, __a2) { }
|
|
|
|
using _TMC = _TC<true, _T1, _T2>;
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>()
|
&& !is_same<typename decay<_U1>::type,
|
allocator_arg_t>::value,
|
bool>::type = true>
|
constexpr tuple(_U1&& __a1, _U2&& __a2)
|
: _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>()
|
&& !is_same<typename decay<_U1>::type,
|
allocator_arg_t>::value,
|
bool>::type = false>
|
explicit constexpr tuple(_U1&& __a1, _U2&& __a2)
|
: _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
|
|
constexpr tuple(const tuple&) = default;
|
|
constexpr tuple(tuple&&) = default;
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
constexpr tuple(const tuple<_U1, _U2>& __in)
|
: _Inherited(static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit constexpr tuple(const tuple<_U1, _U2>& __in)
|
: _Inherited(static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
constexpr tuple(tuple<_U1, _U2>&& __in)
|
: _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit constexpr tuple(tuple<_U1, _U2>&& __in)
|
: _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
constexpr tuple(const pair<_U1, _U2>& __in)
|
: _Inherited(__in.first, __in.second) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit constexpr tuple(const pair<_U1, _U2>& __in)
|
: _Inherited(__in.first, __in.second) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
constexpr tuple(pair<_U1, _U2>&& __in)
|
: _Inherited(std::forward<_U1>(__in.first),
|
std::forward<_U2>(__in.second)) { }
|
|
template<typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit constexpr tuple(pair<_U1, _U2>&& __in)
|
: _Inherited(std::forward<_U1>(__in.first),
|
std::forward<_U2>(__in.second)) { }
|
|
|
|
template<typename _Alloc>
|
tuple(allocator_arg_t __tag, const _Alloc& __a)
|
: _Inherited(__tag, __a) { }
|
|
template<typename _Alloc, typename _Dummy = void,
|
typename enable_if<
|
_TCC<_Dummy>::template
|
_ConstructibleTuple<_T1, _T2>()
|
&& _TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_T1, _T2>(),
|
bool>::type=true>
|
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const _T1& __a1, const _T2& __a2)
|
: _Inherited(__tag, __a, __a1, __a2) { }
|
|
template<typename _Alloc, typename _Dummy = void,
|
typename enable_if<
|
_TCC<_Dummy>::template
|
_ConstructibleTuple<_T1, _T2>()
|
&& !_TCC<_Dummy>::template
|
_ImplicitlyConvertibleTuple<_T1, _T2>(),
|
bool>::type=false>
|
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const _T1& __a1, const _T2& __a2)
|
: _Inherited(__tag, __a, __a1, __a2) { }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2)
|
: _Inherited(__tag, __a, std::forward<_U1>(__a1),
|
std::forward<_U2>(__a2)) { }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
_U1&& __a1, _U2&& __a2)
|
: _Inherited(__tag, __a, std::forward<_U1>(__a1),
|
std::forward<_U2>(__a2)) { }
|
|
template<typename _Alloc>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in)
|
: _Inherited(__tag, __a, static_cast<const _Inherited&>(__in)) { }
|
|
template<typename _Alloc>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
|
: _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const tuple<_U1, _U2>& __in)
|
: _Inherited(__tag, __a,
|
static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in))
|
{ }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const tuple<_U1, _U2>& __in)
|
: _Inherited(__tag, __a,
|
static_cast<const _Tuple_impl<0, _U1, _U2>&>(__in))
|
{ }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in)
|
: _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in))
|
{ }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
tuple<_U1, _U2>&& __in)
|
: _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in))
|
{ }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const pair<_U1, _U2>& __in)
|
: _Inherited(__tag, __a, __in.first, __in.second) { }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_ConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
const pair<_U1, _U2>& __in)
|
: _Inherited(__tag, __a, __in.first, __in.second) { }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& _TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = true>
|
tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in)
|
: _Inherited(__tag, __a, std::forward<_U1>(__in.first),
|
std::forward<_U2>(__in.second)) { }
|
|
template<typename _Alloc, typename _U1, typename _U2, typename
|
enable_if<_TMC::template
|
_MoveConstructibleTuple<_U1, _U2>()
|
&& !_TMC::template
|
_ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
|
bool>::type = false>
|
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
|
pair<_U1, _U2>&& __in)
|
: _Inherited(__tag, __a, std::forward<_U1>(__in.first),
|
std::forward<_U2>(__in.second)) { }
|
|
tuple&
|
operator=(const tuple& __in)
|
{
|
static_cast<_Inherited&>(*this) = __in;
|
return *this;
|
}
|
|
tuple&
|
operator=(tuple&& __in)
|
noexcept(is_nothrow_move_assignable<_Inherited>::value)
|
{
|
static_cast<_Inherited&>(*this) = std::move(__in);
|
return *this;
|
}
|
|
template<typename _U1, typename _U2>
|
tuple&
|
operator=(const tuple<_U1, _U2>& __in)
|
{
|
static_cast<_Inherited&>(*this) = __in;
|
return *this;
|
}
|
|
template<typename _U1, typename _U2>
|
tuple&
|
operator=(tuple<_U1, _U2>&& __in)
|
{
|
static_cast<_Inherited&>(*this) = std::move(__in);
|
return *this;
|
}
|
|
template<typename _U1, typename _U2>
|
tuple&
|
operator=(const pair<_U1, _U2>& __in)
|
{
|
this->_M_head(*this) = __in.first;
|
this->_M_tail(*this)._M_head(*this) = __in.second;
|
return *this;
|
}
|
|
template<typename _U1, typename _U2>
|
tuple&
|
operator=(pair<_U1, _U2>&& __in)
|
{
|
this->_M_head(*this) = std::forward<_U1>(__in.first);
|
this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second);
|
return *this;
|
}
|
|
void
|
swap(tuple& __in)
|
noexcept(noexcept(__in._M_swap(__in)))
|
{ _Inherited::_M_swap(__in); }
|
};
|
|
|
|
|
|
|
template<std::size_t __i, typename _Head, typename... _Tail>
|
struct tuple_element<__i, tuple<_Head, _Tail...> >
|
: tuple_element<__i - 1, tuple<_Tail...> > { };
|
|
|
|
|
template<typename _Head, typename... _Tail>
|
struct tuple_element<0, tuple<_Head, _Tail...> >
|
{
|
typedef _Head type;
|
};
|
|
|
template<typename... _Elements>
|
struct tuple_size<tuple<_Elements...>>
|
: public integral_constant<std::size_t, sizeof...(_Elements)> { };
|
|
template<std::size_t __i, typename _Head, typename... _Tail>
|
constexpr _Head&
|
__get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
|
{ return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
|
|
template<std::size_t __i, typename _Head, typename... _Tail>
|
constexpr const _Head&
|
__get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
|
{ return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
|
|
|
template<std::size_t __i, typename... _Elements>
|
constexpr __tuple_element_t<__i, tuple<_Elements...>>&
|
get(tuple<_Elements...>& __t) noexcept
|
{ return std::__get_helper<__i>(__t); }
|
|
|
template<std::size_t __i, typename... _Elements>
|
constexpr const __tuple_element_t<__i, tuple<_Elements...>>&
|
get(const tuple<_Elements...>& __t) noexcept
|
{ return std::__get_helper<__i>(__t); }
|
|
|
template<std::size_t __i, typename... _Elements>
|
constexpr __tuple_element_t<__i, tuple<_Elements...>>&&
|
get(tuple<_Elements...>&& __t) noexcept
|
{
|
typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type;
|
return std::forward<__element_type&&>(std::get<__i>(__t));
|
}
|
# 1310 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/tuple" 3
|
template<typename _Tp, typename _Up, size_t __i, size_t __size>
|
struct __tuple_compare
|
{
|
static constexpr bool
|
__eq(const _Tp& __t, const _Up& __u)
|
{
|
return bool(std::get<__i>(__t) == std::get<__i>(__u))
|
&& __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u);
|
}
|
|
static constexpr bool
|
__less(const _Tp& __t, const _Up& __u)
|
{
|
return bool(std::get<__i>(__t) < std::get<__i>(__u))
|
|| (!bool(std::get<__i>(__u) < std::get<__i>(__t))
|
&& __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u));
|
}
|
};
|
|
template<typename _Tp, typename _Up, size_t __size>
|
struct __tuple_compare<_Tp, _Up, __size, __size>
|
{
|
static constexpr bool
|
__eq(const _Tp&, const _Up&) { return true; }
|
|
static constexpr bool
|
__less(const _Tp&, const _Up&) { return false; }
|
};
|
|
template<typename... _TElements, typename... _UElements>
|
constexpr bool
|
operator==(const tuple<_TElements...>& __t,
|
const tuple<_UElements...>& __u)
|
{
|
static_assert(sizeof...(_TElements) == sizeof...(_UElements),
|
"tuple objects can only be compared if they have equal sizes.");
|
using __compare = __tuple_compare<tuple<_TElements...>,
|
tuple<_UElements...>,
|
0, sizeof...(_TElements)>;
|
return __compare::__eq(__t, __u);
|
}
|
|
template<typename... _TElements, typename... _UElements>
|
constexpr bool
|
operator<(const tuple<_TElements...>& __t,
|
const tuple<_UElements...>& __u)
|
{
|
static_assert(sizeof...(_TElements) == sizeof...(_UElements),
|
"tuple objects can only be compared if they have equal sizes.");
|
using __compare = __tuple_compare<tuple<_TElements...>,
|
tuple<_UElements...>,
|
0, sizeof...(_TElements)>;
|
return __compare::__less(__t, __u);
|
}
|
|
template<typename... _TElements, typename... _UElements>
|
constexpr bool
|
operator!=(const tuple<_TElements...>& __t,
|
const tuple<_UElements...>& __u)
|
{ return !(__t == __u); }
|
|
template<typename... _TElements, typename... _UElements>
|
constexpr bool
|
operator>(const tuple<_TElements...>& __t,
|
const tuple<_UElements...>& __u)
|
{ return __u < __t; }
|
|
template<typename... _TElements, typename... _UElements>
|
constexpr bool
|
operator<=(const tuple<_TElements...>& __t,
|
const tuple<_UElements...>& __u)
|
{ return !(__u < __t); }
|
|
template<typename... _TElements, typename... _UElements>
|
constexpr bool
|
operator>=(const tuple<_TElements...>& __t,
|
const tuple<_UElements...>& __u)
|
{ return !(__t < __u); }
|
|
|
template<typename... _Elements>
|
constexpr tuple<typename __decay_and_strip<_Elements>::__type...>
|
make_tuple(_Elements&&... __args)
|
{
|
typedef tuple<typename __decay_and_strip<_Elements>::__type...>
|
__result_type;
|
return __result_type(std::forward<_Elements>(__args)...);
|
}
|
|
|
|
template<typename... _Elements>
|
constexpr tuple<_Elements&&...>
|
forward_as_tuple(_Elements&&... __args) noexcept
|
{ return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); }
|
|
template<typename... _Tps>
|
struct __is_tuple_like_impl<tuple<_Tps...>> : true_type
|
{ };
|
|
|
template<typename _Tp>
|
struct __is_tuple_like
|
: public __is_tuple_like_impl<typename std::remove_cv
|
<typename std::remove_reference<_Tp>::type>::type>::type
|
{ };
|
|
template<size_t, typename, typename, size_t>
|
struct __make_tuple_impl;
|
|
template<size_t _Idx, typename _Tuple, typename... _Tp, size_t _Nm>
|
struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm>
|
: __make_tuple_impl<_Idx + 1,
|
tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>,
|
_Tuple, _Nm>
|
{ };
|
|
template<std::size_t _Nm, typename _Tuple, typename... _Tp>
|
struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm>
|
{
|
typedef tuple<_Tp...> __type;
|
};
|
|
template<typename _Tuple>
|
struct __do_make_tuple
|
: __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value>
|
{ };
|
|
|
template<typename _Tuple>
|
struct __make_tuple
|
: public __do_make_tuple<typename std::remove_cv
|
<typename std::remove_reference<_Tuple>::type>::type>
|
{ };
|
|
|
template<typename...>
|
struct __combine_tuples;
|
|
template<>
|
struct __combine_tuples<>
|
{
|
typedef tuple<> __type;
|
};
|
|
template<typename... _Ts>
|
struct __combine_tuples<tuple<_Ts...>>
|
{
|
typedef tuple<_Ts...> __type;
|
};
|
|
template<typename... _T1s, typename... _T2s, typename... _Rem>
|
struct __combine_tuples<tuple<_T1s...>, tuple<_T2s...>, _Rem...>
|
{
|
typedef typename __combine_tuples<tuple<_T1s..., _T2s...>,
|
_Rem...>::__type __type;
|
};
|
|
|
template<typename... _Tpls>
|
struct __tuple_cat_result
|
{
|
typedef typename __combine_tuples
|
<typename __make_tuple<_Tpls>::__type...>::__type __type;
|
};
|
|
|
|
template<typename...>
|
struct __make_1st_indices;
|
|
template<>
|
struct __make_1st_indices<>
|
{
|
typedef std::_Index_tuple<> __type;
|
};
|
|
template<typename _Tp, typename... _Tpls>
|
struct __make_1st_indices<_Tp, _Tpls...>
|
{
|
typedef typename std::_Build_index_tuple<std::tuple_size<
|
typename std::remove_reference<_Tp>::type>::value>::__type __type;
|
};
|
|
|
|
|
template<typename _Ret, typename _Indices, typename... _Tpls>
|
struct __tuple_concater;
|
|
template<typename _Ret, std::size_t... _Is, typename _Tp, typename... _Tpls>
|
struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...>
|
{
|
template<typename... _Us>
|
static constexpr _Ret
|
_S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us)
|
{
|
typedef typename __make_1st_indices<_Tpls...>::__type __idx;
|
typedef __tuple_concater<_Ret, __idx, _Tpls...> __next;
|
return __next::_S_do(std::forward<_Tpls>(__tps)...,
|
std::forward<_Us>(__us)...,
|
std::get<_Is>(std::forward<_Tp>(__tp))...);
|
}
|
};
|
|
template<typename _Ret>
|
struct __tuple_concater<_Ret, std::_Index_tuple<>>
|
{
|
template<typename... _Us>
|
static constexpr _Ret
|
_S_do(_Us&&... __us)
|
{
|
return _Ret(std::forward<_Us>(__us)...);
|
}
|
};
|
|
|
template<typename... _Tpls, typename = typename
|
enable_if<__and_<__is_tuple_like<_Tpls>...>::value>::type>
|
constexpr auto
|
tuple_cat(_Tpls&&... __tpls)
|
-> typename __tuple_cat_result<_Tpls...>::__type
|
{
|
typedef typename __tuple_cat_result<_Tpls...>::__type __ret;
|
typedef typename __make_1st_indices<_Tpls...>::__type __idx;
|
typedef __tuple_concater<__ret, __idx, _Tpls...> __concater;
|
return __concater::_S_do(std::forward<_Tpls>(__tpls)...);
|
}
|
|
|
|
|
template<typename... _Elements>
|
constexpr tuple<_Elements&...>
|
tie(_Elements&... __args) noexcept
|
{ return tuple<_Elements&...>(__args...); }
|
|
|
template<typename... _Elements>
|
inline void
|
swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y)
|
noexcept(noexcept(__x.swap(__y)))
|
{ __x.swap(__y); }
|
|
|
|
struct _Swallow_assign
|
{
|
template<class _Tp>
|
const _Swallow_assign&
|
operator=(const _Tp&) const
|
{ return *this; }
|
};
|
|
const _Swallow_assign ignore{};
|
|
|
template<typename... _Types, typename _Alloc>
|
struct uses_allocator<tuple<_Types...>, _Alloc> : true_type { };
|
|
|
template<class _T1, class _T2>
|
template<typename... _Args1, typename... _Args2>
|
inline
|
pair<_T1, _T2>::
|
pair(piecewise_construct_t,
|
tuple<_Args1...> __first, tuple<_Args2...> __second)
|
: pair(__first, __second,
|
typename _Build_index_tuple<sizeof...(_Args1)>::__type(),
|
typename _Build_index_tuple<sizeof...(_Args2)>::__type())
|
{ }
|
|
template<class _T1, class _T2>
|
template<typename... _Args1, std::size_t... _Indexes1,
|
typename... _Args2, std::size_t... _Indexes2>
|
inline
|
pair<_T1, _T2>::
|
pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2,
|
_Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>)
|
: first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...),
|
second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
|
{ }
|
|
|
|
|
}
|
# 64 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 2 3
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 94 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 __gnu_cxx::__alloc_traits<_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;
|
|
typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits;
|
|
public:
|
|
|
typedef typename _Alloc_traits::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 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()
|
noexcept(is_nothrow_default_constructible<allocator_type>::value && is_nothrow_default_constructible<key_compare>::value)
|
|
|
: _M_t() { }
|
|
|
|
|
|
|
explicit
|
map(const _Compare& __comp,
|
const allocator_type& __a = allocator_type())
|
: _M_t(__comp, _Pair_alloc_type(__a)) { }
|
# 185 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
map(const map& __x)
|
: _M_t(__x._M_t) { }
|
# 196 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
map(map&& __x)
|
noexcept(is_nothrow_copy_constructible<_Compare>::value)
|
: _M_t(std::move(__x._M_t)) { }
|
# 211 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
map(initializer_list<value_type> __l,
|
const _Compare& __comp = _Compare(),
|
const allocator_type& __a = allocator_type())
|
: _M_t(__comp, _Pair_alloc_type(__a))
|
{ _M_t._M_insert_unique(__l.begin(), __l.end()); }
|
|
|
explicit
|
map(const allocator_type& __a)
|
: _M_t(_Compare(), _Pair_alloc_type(__a)) { }
|
|
|
map(const map& __m, const allocator_type& __a)
|
: _M_t(__m._M_t, _Pair_alloc_type(__a)) { }
|
|
|
map(map&& __m, const allocator_type& __a)
|
noexcept(is_nothrow_copy_constructible<_Compare>::value
|
&& _Alloc_traits::_S_always_equal())
|
: _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
|
|
|
map(initializer_list<value_type> __l, const allocator_type& __a)
|
: _M_t(_Compare(), _Pair_alloc_type(__a))
|
{ _M_t._M_insert_unique(__l.begin(), __l.end()); }
|
|
|
template<typename _InputIterator>
|
map(_InputIterator __first, _InputIterator __last,
|
const allocator_type& __a)
|
: _M_t(_Compare(), _Pair_alloc_type(__a))
|
{ _M_t._M_insert_unique(__first, __last); }
|
# 255 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
template<typename _InputIterator>
|
map(_InputIterator __first, _InputIterator __last)
|
: _M_t()
|
{ _M_t._M_insert_unique(__first, __last); }
|
# 272 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
# 295 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
map&
|
operator=(const map& __x)
|
{
|
_M_t = __x._M_t;
|
return *this;
|
}
|
|
|
|
map&
|
operator=(map&&) = default;
|
# 318 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
map&
|
operator=(initializer_list<value_type> __l)
|
{
|
_M_t._M_assign_unique(__l.begin(), __l.end());
|
return *this;
|
}
|
|
|
|
allocator_type
|
get_allocator() const noexcept
|
{ return allocator_type(_M_t.get_allocator()); }
|
|
|
|
|
|
|
|
iterator
|
begin() noexcept
|
{ return _M_t.begin(); }
|
|
|
|
|
|
|
const_iterator
|
begin() const noexcept
|
{ return _M_t.begin(); }
|
|
|
|
|
|
|
iterator
|
end() noexcept
|
{ return _M_t.end(); }
|
|
|
|
|
|
|
const_iterator
|
end() const noexcept
|
{ return _M_t.end(); }
|
|
|
|
|
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return _M_t.rbegin(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return _M_t.rbegin(); }
|
|
|
|
|
|
|
reverse_iterator
|
rend() noexcept
|
{ return _M_t.rend(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return _M_t.rend(); }
|
|
|
|
|
|
|
|
const_iterator
|
cbegin() const noexcept
|
{ return _M_t.begin(); }
|
|
|
|
|
|
|
const_iterator
|
cend() const noexcept
|
{ return _M_t.end(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crbegin() const noexcept
|
{ return _M_t.rbegin(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crend() const noexcept
|
{ return _M_t.rend(); }
|
|
|
|
|
|
|
bool
|
empty() const noexcept
|
{ return _M_t.empty(); }
|
|
|
size_type
|
size() const noexcept
|
{ return _M_t.size(); }
|
|
|
size_type
|
max_size() const noexcept
|
{ return _M_t.max_size(); }
|
# 473 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
|
std::tuple<const key_type&>(__k),
|
std::tuple<>());
|
|
|
|
return (*__i).second;
|
}
|
|
|
mapped_type&
|
operator[](key_type&& __k)
|
{
|
|
|
|
iterator __i = lower_bound(__k);
|
|
if (__i == end() || key_comp()(__k, (*__i).first))
|
__i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct,
|
std::forward_as_tuple(std::move(__k)),
|
std::tuple<>());
|
return (*__i).second;
|
}
|
# 518 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
# 556 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
template<typename... _Args>
|
std::pair<iterator, bool>
|
emplace(_Args&&... __args)
|
{ return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); }
|
# 586 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
template<typename... _Args>
|
iterator
|
emplace_hint(const_iterator __pos, _Args&&... __args)
|
{
|
return _M_t._M_emplace_hint_unique(__pos,
|
std::forward<_Args>(__args)...);
|
}
|
# 730 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
std::pair<iterator, bool>
|
insert(const value_type& __x)
|
{ return _M_t._M_insert_unique(__x); }
|
|
|
template<typename _Pair, typename = typename
|
std::enable_if<std::is_constructible<value_type,
|
_Pair&&>::value>::type>
|
std::pair<iterator, bool>
|
insert(_Pair&& __x)
|
{ return _M_t._M_insert_unique(std::forward<_Pair>(__x)); }
|
# 751 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
void
|
insert(std::initializer_list<value_type> __list)
|
{ insert(__list.begin(), __list.end()); }
|
# 779 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
iterator
|
|
insert(const_iterator __position, const value_type& __x)
|
|
|
|
{ return _M_t._M_insert_unique_(__position, __x); }
|
|
|
template<typename _Pair, typename = typename
|
std::enable_if<std::is_constructible<value_type,
|
_Pair&&>::value>::type>
|
iterator
|
insert(const_iterator __position, _Pair&& __x)
|
{ return _M_t._M_insert_unique_(__position,
|
std::forward<_Pair>(__x)); }
|
# 805 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
template<typename _InputIterator>
|
void
|
insert(_InputIterator __first, _InputIterator __last)
|
{ _M_t._M_insert_unique(__first, __last); }
|
# 943 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
iterator
|
erase(const_iterator __position)
|
{ return _M_t.erase(__position); }
|
|
|
__attribute ((__abi_tag__ ("cxx11")))
|
iterator
|
erase(iterator __position)
|
{ return _M_t.erase(__position); }
|
# 979 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
size_type
|
erase(const key_type& __x)
|
{ return _M_t.erase(__x); }
|
# 999 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
iterator
|
erase(const_iterator __first, const_iterator __last)
|
{ return _M_t.erase(__first, __last); }
|
# 1031 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
void
|
swap(map& __x)
|
noexcept(__is_nothrow_swappable<_Compare>::value)
|
{ _M_t.swap(__x._M_t); }
|
|
|
|
|
|
|
|
void
|
clear() noexcept
|
{ _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()); }
|
# 1078 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
iterator
|
find(const key_type& __x)
|
{ return _M_t.find(__x); }
|
# 1103 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
const_iterator
|
find(const key_type& __x) const
|
{ return _M_t.find(__x); }
|
# 1124 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
size_type
|
count(const key_type& __x) const
|
{ return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
|
# 1148 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
iterator
|
lower_bound(const key_type& __x)
|
{ return _M_t.lower_bound(__x); }
|
# 1173 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
const_iterator
|
lower_bound(const key_type& __x) const
|
{ return _M_t.lower_bound(__x); }
|
# 1193 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
iterator
|
upper_bound(const key_type& __x)
|
{ return _M_t.upper_bound(__x); }
|
# 1213 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
const_iterator
|
upper_bound(const key_type& __x) const
|
{ return _M_t.upper_bound(__x); }
|
# 1242 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
std::pair<iterator, iterator>
|
equal_range(const key_type& __x)
|
{ return _M_t.equal_range(__x); }
|
# 1271 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
std::pair<const_iterator, const_iterator>
|
equal_range(const key_type& __x) const
|
{ return _M_t.equal_range(__x); }
|
# 1288 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_map.h" 3
|
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>&);
|
};
|
# 1309 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; }
|
# 1326 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept(noexcept(__x.swap(__y)))
|
{ __x.swap(__y); }
|
|
|
}
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/map" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 1 3
|
# 64 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 92 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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 __gnu_cxx::__alloc_traits<_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;
|
|
typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits;
|
|
public:
|
|
|
typedef typename _Alloc_traits::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 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()
|
noexcept(is_nothrow_default_constructible<allocator_type>::value && is_nothrow_default_constructible<key_compare>::value)
|
|
|
: _M_t() { }
|
|
|
|
|
|
|
explicit
|
multimap(const _Compare& __comp,
|
const allocator_type& __a = allocator_type())
|
: _M_t(__comp, _Pair_alloc_type(__a)) { }
|
# 183 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
multimap(const multimap& __x)
|
: _M_t(__x._M_t) { }
|
# 194 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
multimap(multimap&& __x)
|
noexcept(is_nothrow_copy_constructible<_Compare>::value)
|
: _M_t(std::move(__x._M_t)) { }
|
# 208 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
multimap(initializer_list<value_type> __l,
|
const _Compare& __comp = _Compare(),
|
const allocator_type& __a = allocator_type())
|
: _M_t(__comp, _Pair_alloc_type(__a))
|
{ _M_t._M_insert_equal(__l.begin(), __l.end()); }
|
|
|
explicit
|
multimap(const allocator_type& __a)
|
: _M_t(_Compare(), _Pair_alloc_type(__a)) { }
|
|
|
multimap(const multimap& __m, const allocator_type& __a)
|
: _M_t(__m._M_t, _Pair_alloc_type(__a)) { }
|
|
|
multimap(multimap&& __m, const allocator_type& __a)
|
noexcept(is_nothrow_copy_constructible<_Compare>::value
|
&& _Alloc_traits::_S_always_equal())
|
: _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
|
|
|
multimap(initializer_list<value_type> __l, const allocator_type& __a)
|
: _M_t(_Compare(), _Pair_alloc_type(__a))
|
{ _M_t._M_insert_equal(__l.begin(), __l.end()); }
|
|
|
template<typename _InputIterator>
|
multimap(_InputIterator __first, _InputIterator __last,
|
const allocator_type& __a)
|
: _M_t(_Compare(), _Pair_alloc_type(__a))
|
{ _M_t._M_insert_equal(__first, __last); }
|
# 251 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
template<typename _InputIterator>
|
multimap(_InputIterator __first, _InputIterator __last)
|
: _M_t()
|
{ _M_t._M_insert_equal(__first, __last); }
|
# 267 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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); }
|
# 290 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
multimap&
|
operator=(const multimap& __x)
|
{
|
_M_t = __x._M_t;
|
return *this;
|
}
|
|
|
|
multimap&
|
operator=(multimap&&) = default;
|
# 313 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
multimap&
|
operator=(initializer_list<value_type> __l)
|
{
|
_M_t._M_assign_equal(__l.begin(), __l.end());
|
return *this;
|
}
|
|
|
|
allocator_type
|
get_allocator() const noexcept
|
{ return allocator_type(_M_t.get_allocator()); }
|
|
|
|
|
|
|
|
iterator
|
begin() noexcept
|
{ return _M_t.begin(); }
|
|
|
|
|
|
|
const_iterator
|
begin() const noexcept
|
{ return _M_t.begin(); }
|
|
|
|
|
|
|
iterator
|
end() noexcept
|
{ return _M_t.end(); }
|
|
|
|
|
|
|
const_iterator
|
end() const noexcept
|
{ return _M_t.end(); }
|
|
|
|
|
|
|
reverse_iterator
|
rbegin() noexcept
|
{ return _M_t.rbegin(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rbegin() const noexcept
|
{ return _M_t.rbegin(); }
|
|
|
|
|
|
|
reverse_iterator
|
rend() noexcept
|
{ return _M_t.rend(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
rend() const noexcept
|
{ return _M_t.rend(); }
|
|
|
|
|
|
|
|
const_iterator
|
cbegin() const noexcept
|
{ return _M_t.begin(); }
|
|
|
|
|
|
|
const_iterator
|
cend() const noexcept
|
{ return _M_t.end(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crbegin() const noexcept
|
{ return _M_t.rbegin(); }
|
|
|
|
|
|
|
const_reverse_iterator
|
crend() const noexcept
|
{ return _M_t.rend(); }
|
|
|
|
|
bool
|
empty() const noexcept
|
{ return _M_t.empty(); }
|
|
|
size_type
|
size() const noexcept
|
{ return _M_t.size(); }
|
|
|
size_type
|
max_size() const noexcept
|
{ return _M_t.max_size(); }
|
# 471 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
template<typename... _Args>
|
iterator
|
emplace(_Args&&... __args)
|
{ return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); }
|
# 498 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
template<typename... _Args>
|
iterator
|
emplace_hint(const_iterator __pos, _Args&&... __args)
|
{
|
return _M_t._M_emplace_hint_equal(__pos,
|
std::forward<_Args>(__args)...);
|
}
|
# 519 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
insert(const value_type& __x)
|
{ return _M_t._M_insert_equal(__x); }
|
|
|
template<typename _Pair, typename = typename
|
std::enable_if<std::is_constructible<value_type,
|
_Pair&&>::value>::type>
|
iterator
|
insert(_Pair&& __x)
|
{ return _M_t._M_insert_equal(std::forward<_Pair>(__x)); }
|
# 552 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
|
insert(const_iterator __position, const value_type& __x)
|
|
|
|
{ return _M_t._M_insert_equal_(__position, __x); }
|
|
|
template<typename _Pair, typename = typename
|
std::enable_if<std::is_constructible<value_type,
|
_Pair&&>::value>::type>
|
iterator
|
insert(const_iterator __position, _Pair&& __x)
|
{ return _M_t._M_insert_equal_(__position,
|
std::forward<_Pair>(__x)); }
|
# 579 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
template<typename _InputIterator>
|
void
|
insert(_InputIterator __first, _InputIterator __last)
|
{ _M_t._M_insert_equal(__first, __last); }
|
# 592 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
void
|
insert(initializer_list<value_type> __l)
|
{ this->insert(__l.begin(), __l.end()); }
|
# 613 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
erase(const_iterator __position)
|
{ return _M_t.erase(__position); }
|
|
|
__attribute ((__abi_tag__ ("cxx11")))
|
iterator
|
erase(iterator __position)
|
{ return _M_t.erase(__position); }
|
# 649 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
size_type
|
erase(const key_type& __x)
|
{ return _M_t.erase(__x); }
|
# 670 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
erase(const_iterator __first, const_iterator __last)
|
{ return _M_t.erase(__first, __last); }
|
# 705 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
void
|
swap(multimap& __x)
|
noexcept(__is_nothrow_swappable<_Compare>::value)
|
{ _M_t.swap(__x._M_t); }
|
|
|
|
|
|
|
|
void
|
clear() noexcept
|
{ _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()); }
|
# 751 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
find(const key_type& __x)
|
{ return _M_t.find(__x); }
|
# 775 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
const_iterator
|
find(const key_type& __x) const
|
{ return _M_t.find(__x); }
|
# 793 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
size_type
|
count(const key_type& __x) const
|
{ return _M_t.count(__x); }
|
# 817 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
lower_bound(const key_type& __x)
|
{ return _M_t.lower_bound(__x); }
|
# 842 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
const_iterator
|
lower_bound(const key_type& __x) const
|
{ return _M_t.lower_bound(__x); }
|
# 862 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
iterator
|
upper_bound(const key_type& __x)
|
{ return _M_t.upper_bound(__x); }
|
# 882 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
const_iterator
|
upper_bound(const key_type& __x) const
|
{ return _M_t.upper_bound(__x); }
|
# 909 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
std::pair<iterator, iterator>
|
equal_range(const key_type& __x)
|
{ return _M_t.equal_range(__x); }
|
# 936 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
std::pair<const_iterator, const_iterator>
|
equal_range(const key_type& __x) const
|
{ return _M_t.equal_range(__x); }
|
# 953 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_multimap.h" 3
|
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>&);
|
};
|
# 974 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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; }
|
# 991 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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)
|
noexcept(noexcept(__x.swap(__y)))
|
{ __x.swap(__y); }
|
|
|
}
|
# 63 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/map" 2 3
|
# 5 "./libraries/Scope/Scope.h" 2
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 1 3
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 3
|
# 66 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tempbuf.h" 1 3
|
# 62 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tempbuf.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 83 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_tempbuf.h" 3
|
template<typename _Tp>
|
pair<_Tp*, ptrdiff_t>
|
get_temporary_buffer(ptrdiff_t __len) noexcept
|
{
|
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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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),
|
std::move(*__seed));
|
_Pointer __prev = __cur;
|
++__cur;
|
for(; __cur != __last; ++__cur, ++__prev)
|
std::_Construct(std::__addressof(*__cur),
|
std::move(*__prev));
|
*__seed = std::move(*__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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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;
|
}
|
}
|
|
|
}
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/stl_raw_storage_iter.h" 1 3
|
# 59 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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&
|
operator=(_Tp&& __element)
|
{
|
std::_Construct(std::__addressof(*_M_iter), std::move(__element));
|
return *this;
|
}
|
|
|
raw_storage_iterator&
|
operator++()
|
{
|
++_M_iter;
|
return *this;
|
}
|
|
raw_storage_iterator
|
operator++(int)
|
{
|
raw_storage_iterator __tmp = *this;
|
++_M_iter;
|
return __tmp;
|
}
|
|
|
|
_OutputIterator base() const { return _M_iter; }
|
};
|
|
|
}
|
# 68 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/typeinfo" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/typeinfo" 3
|
|
|
|
|
|
|
#pragma GCC visibility push(default)
|
|
extern "C++" {
|
|
namespace __cxxabiv1
|
{
|
class __class_type_info;
|
}
|
# 80 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/typeinfo" 3
|
namespace std
|
{
|
|
|
|
|
|
|
class type_info
|
{
|
public:
|
|
|
|
|
virtual ~type_info();
|
|
|
|
const char* name() const noexcept
|
{ return __name[0] == '*' ? __name + 1 : __name; }
|
# 115 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/typeinfo" 3
|
bool before(const type_info& __arg) const noexcept
|
{ return (__name[0] == '*' && __arg.__name[0] == '*')
|
? __name < __arg.__name
|
: __builtin_strcmp (__name, __arg.__name) < 0; }
|
|
bool operator==(const type_info& __arg) const noexcept
|
{
|
return ((__name == __arg.__name)
|
|| (__name[0] != '*' &&
|
__builtin_strcmp (__name, __arg.__name) == 0));
|
}
|
# 136 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/typeinfo" 3
|
bool operator!=(const type_info& __arg) const noexcept
|
{ return !operator==(__arg); }
|
|
|
size_t hash_code() const noexcept
|
{
|
|
return _Hash_bytes(name(), __builtin_strlen(name()),
|
static_cast<size_t>(0xc70f6907UL));
|
|
|
|
}
|
|
|
|
virtual bool __is_pointer_p() const;
|
|
|
virtual bool __is_function_p() const;
|
|
|
|
|
|
|
|
virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj,
|
unsigned __outer) const;
|
|
|
virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target,
|
void **__obj_ptr) const;
|
|
protected:
|
const char *__name;
|
|
explicit type_info(const char *__n): __name(__n) { }
|
|
private:
|
|
type_info& operator=(const type_info&);
|
type_info(const type_info&);
|
};
|
|
|
|
|
|
|
|
class bad_cast : public exception
|
{
|
public:
|
bad_cast() noexcept { }
|
|
|
|
virtual ~bad_cast() noexcept;
|
|
|
virtual const char* what() const noexcept;
|
};
|
|
|
|
|
|
class bad_typeid : public exception
|
{
|
public:
|
bad_typeid () noexcept { }
|
|
|
|
virtual ~bad_typeid() noexcept;
|
|
|
virtual const char* what() const noexcept;
|
};
|
}
|
|
}
|
|
#pragma GCC visibility pop
|
# 72 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/concurrence.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/concurrence.h" 3
|
|
|
|
|
|
|
|
namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
|
enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
|
|
|
|
static const _Lock_policy __default_lock_policy =
|
|
|
|
_S_atomic;
|
# 67 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/concurrence.h" 3
|
class __concurrence_lock_error : public std::exception
|
{
|
public:
|
virtual char const*
|
what() const throw()
|
{ return "__gnu_cxx::__concurrence_lock_error"; }
|
};
|
|
class __concurrence_unlock_error : public std::exception
|
{
|
public:
|
virtual char const*
|
what() const throw()
|
{ return "__gnu_cxx::__concurrence_unlock_error"; }
|
};
|
|
class __concurrence_broadcast_error : public std::exception
|
{
|
public:
|
virtual char const*
|
what() const throw()
|
{ return "__gnu_cxx::__concurrence_broadcast_error"; }
|
};
|
|
class __concurrence_wait_error : public std::exception
|
{
|
public:
|
virtual char const*
|
what() const throw()
|
{ return "__gnu_cxx::__concurrence_wait_error"; }
|
};
|
|
|
inline void
|
__throw_concurrence_lock_error()
|
{ (throw (__concurrence_lock_error())); }
|
|
inline void
|
__throw_concurrence_unlock_error()
|
{ (throw (__concurrence_unlock_error())); }
|
|
|
inline void
|
__throw_concurrence_broadcast_error()
|
{ (throw (__concurrence_broadcast_error())); }
|
|
inline void
|
__throw_concurrence_wait_error()
|
{ (throw (__concurrence_wait_error())); }
|
|
|
class __mutex
|
{
|
private:
|
|
__gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, 0, { 0 } } };
|
|
|
|
|
__mutex(const __mutex&);
|
__mutex& operator=(const __mutex&);
|
|
public:
|
__mutex()
|
{
|
|
|
|
|
}
|
# 147 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/concurrence.h" 3
|
void lock()
|
{
|
|
if (__gthread_active_p())
|
{
|
if (__gthread_mutex_lock(&_M_mutex) != 0)
|
__throw_concurrence_lock_error();
|
}
|
|
}
|
|
void unlock()
|
{
|
|
if (__gthread_active_p())
|
{
|
if (__gthread_mutex_unlock(&_M_mutex) != 0)
|
__throw_concurrence_unlock_error();
|
}
|
|
}
|
|
__gthread_mutex_t* gthread_mutex(void)
|
{ return &_M_mutex; }
|
};
|
|
class __recursive_mutex
|
{
|
private:
|
|
__gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } };
|
|
|
|
|
__recursive_mutex(const __recursive_mutex&);
|
__recursive_mutex& operator=(const __recursive_mutex&);
|
|
public:
|
__recursive_mutex()
|
{
|
|
|
|
|
}
|
# 202 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/concurrence.h" 3
|
void lock()
|
{
|
|
if (__gthread_active_p())
|
{
|
if (__gthread_recursive_mutex_lock(&_M_mutex) != 0)
|
__throw_concurrence_lock_error();
|
}
|
|
}
|
|
void unlock()
|
{
|
|
if (__gthread_active_p())
|
{
|
if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0)
|
__throw_concurrence_unlock_error();
|
}
|
|
}
|
|
__gthread_recursive_mutex_t* gthread_recursive_mutex(void)
|
{ return &_M_mutex; }
|
};
|
|
|
|
|
class __scoped_lock
|
{
|
public:
|
typedef __mutex __mutex_type;
|
|
private:
|
__mutex_type& _M_device;
|
|
__scoped_lock(const __scoped_lock&);
|
__scoped_lock& operator=(const __scoped_lock&);
|
|
public:
|
explicit __scoped_lock(__mutex_type& __name) : _M_device(__name)
|
{ _M_device.lock(); }
|
|
~__scoped_lock() throw()
|
{ _M_device.unlock(); }
|
};
|
|
|
class __cond
|
{
|
private:
|
|
__gthread_cond_t _M_cond = { { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } };
|
|
|
|
|
__cond(const __cond&);
|
__cond& operator=(const __cond&);
|
|
public:
|
__cond()
|
{
|
|
|
|
|
}
|
# 280 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/ext/concurrence.h" 3
|
void broadcast()
|
{
|
|
if (__gthread_active_p())
|
{
|
if (__gthread_cond_broadcast(&_M_cond) != 0)
|
__throw_concurrence_broadcast_error();
|
}
|
|
}
|
|
void wait(__mutex *mutex)
|
{
|
|
{
|
if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0)
|
__throw_concurrence_wait_error();
|
}
|
|
}
|
|
void wait_recursive(__recursive_mutex *mutex)
|
{
|
|
{
|
if (__gthread_cond_wait_recursive(&_M_cond,
|
mutex->gthread_recursive_mutex())
|
!= 0)
|
__throw_concurrence_wait_error();
|
}
|
|
}
|
};
|
|
|
|
}
|
# 75 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
|
|
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 1 3
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
# 60 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
template<typename _MemberPointer>
|
class _Mem_fn;
|
template<typename _Tp, typename _Class>
|
_Mem_fn<_Tp _Class::*>
|
mem_fn(_Tp _Class::*) noexcept;
|
|
|
template<typename _Functor, typename = __void_t<>>
|
struct _Maybe_get_result_type
|
{ };
|
|
template<typename _Functor>
|
struct _Maybe_get_result_type<_Functor,
|
__void_t<typename _Functor::result_type>>
|
{ typedef typename _Functor::result_type result_type; };
|
|
|
|
|
|
template<typename _Functor>
|
struct _Weak_result_type_impl
|
: _Maybe_get_result_type<_Functor>
|
{ };
|
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes...)>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes......)>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes...) const>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes......) const>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes...) volatile>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes......) volatile>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes...) const volatile>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(_ArgTypes......) const volatile>
|
{ typedef _Res result_type; };
|
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(&)(_ArgTypes......)>
|
{ typedef _Res result_type; };
|
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res(*)(_ArgTypes......)>
|
{ typedef _Res result_type; };
|
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......)>
|
{ typedef _Res result_type; };
|
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) const>
|
{ typedef _Res result_type; };
|
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) volatile>
|
{ typedef _Res result_type; };
|
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)
|
const volatile>
|
{ typedef _Res result_type; };
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......)
|
const volatile>
|
{ typedef _Res result_type; };
|
|
|
|
|
|
template<typename _Functor>
|
struct _Weak_result_type
|
: _Weak_result_type_impl<typename remove_cv<_Functor>::type>
|
{ };
|
|
template<typename _Tp, typename _Up = typename decay<_Tp>::type>
|
struct __inv_unwrap
|
{
|
using type = _Tp;
|
};
|
|
template<typename _Tp, typename _Up>
|
struct __inv_unwrap<_Tp, reference_wrapper<_Up>>
|
{
|
using type = _Up&;
|
};
|
|
|
|
template<typename _Tp, typename _Up = typename __inv_unwrap<_Tp>::type>
|
inline _Up&&
|
__invfwd(typename remove_reference<_Tp>::type& __t) noexcept
|
{ return static_cast<_Up&&>(__t); }
|
|
template<typename _Res, typename _Fn, typename... _Args>
|
inline _Res
|
__invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args)
|
noexcept(noexcept(std::forward<_Fn>(__f)(std::forward<_Args>(__args)...)))
|
{ return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); }
|
|
template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
|
inline _Res
|
__invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t,
|
_Args&&... __args)
|
noexcept(noexcept(
|
(__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...)))
|
{ return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); }
|
|
template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
|
inline _Res
|
__invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t,
|
_Args&&... __args)
|
noexcept(noexcept(
|
((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...)))
|
{
|
return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...);
|
}
|
|
template<typename _Res, typename _MemPtr, typename _Tp>
|
inline _Res
|
__invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t)
|
noexcept(noexcept(__invfwd<_Tp>(__t).*__f))
|
{ return __invfwd<_Tp>(__t).*__f; }
|
|
template<typename _Res, typename _MemPtr, typename _Tp>
|
inline _Res
|
__invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t)
|
noexcept(noexcept((*std::forward<_Tp>(__t)).*__f))
|
{ return (*std::forward<_Tp>(__t)).*__f; }
|
|
|
template<typename _Callable, typename... _Args>
|
inline typename result_of<_Callable&&(_Args&&...)>::type
|
__invoke(_Callable&& __fn, _Args&&... __args)
|
{
|
using __result_of = result_of<_Callable&&(_Args&&...)>;
|
using __type = typename __result_of::type;
|
using __tag = typename __result_of::__invoke_type;
|
return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn),
|
std::forward<_Args>(__args)...);
|
}
|
# 272 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<bool _Unary, bool _Binary, typename _Tp>
|
struct _Reference_wrapper_base_impl;
|
|
|
template<typename _Tp>
|
struct _Reference_wrapper_base_impl<false, false, _Tp>
|
: _Weak_result_type<_Tp>
|
{ };
|
|
|
template<typename _Tp>
|
struct _Reference_wrapper_base_impl<true, false, _Tp>
|
: _Weak_result_type<_Tp>
|
{
|
typedef typename _Tp::argument_type argument_type;
|
};
|
|
|
template<typename _Tp>
|
struct _Reference_wrapper_base_impl<false, true, _Tp>
|
: _Weak_result_type<_Tp>
|
{
|
typedef typename _Tp::first_argument_type first_argument_type;
|
typedef typename _Tp::second_argument_type second_argument_type;
|
};
|
|
|
template<typename _Tp>
|
struct _Reference_wrapper_base_impl<true, true, _Tp>
|
: _Weak_result_type<_Tp>
|
{
|
typedef typename _Tp::argument_type argument_type;
|
typedef typename _Tp::first_argument_type first_argument_type;
|
typedef typename _Tp::second_argument_type second_argument_type;
|
};
|
|
template<typename _Tp, typename = __void_t<>> struct __has_argument_type : false_type { }; template<typename _Tp> struct __has_argument_type<_Tp, __void_t<typename _Tp::argument_type>> : true_type { };
|
template<typename _Tp, typename = __void_t<>> struct __has_first_argument_type : false_type { }; template<typename _Tp> struct __has_first_argument_type<_Tp, __void_t<typename _Tp::first_argument_type>> : true_type { };
|
template<typename _Tp, typename = __void_t<>> struct __has_second_argument_type : false_type { }; template<typename _Tp> struct __has_second_argument_type<_Tp, __void_t<typename _Tp::second_argument_type>> : true_type { };
|
|
|
|
|
|
|
|
template<typename _Tp>
|
struct _Reference_wrapper_base
|
: _Reference_wrapper_base_impl<
|
__has_argument_type<_Tp>::value,
|
__has_first_argument_type<_Tp>::value
|
&& __has_second_argument_type<_Tp>::value,
|
_Tp>
|
{ };
|
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res(_T1)>
|
: unary_function<_T1, _Res>
|
{ };
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res(_T1) const>
|
: unary_function<_T1, _Res>
|
{ };
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res(_T1) volatile>
|
: unary_function<_T1, _Res>
|
{ };
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res(_T1) const volatile>
|
: unary_function<_T1, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res(_T1, _T2)>
|
: binary_function<_T1, _T2, _Res>
|
{ };
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res(_T1, _T2) const>
|
: binary_function<_T1, _T2, _Res>
|
{ };
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res(_T1, _T2) volatile>
|
: binary_function<_T1, _T2, _Res>
|
{ };
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile>
|
: binary_function<_T1, _T2, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res(*)(_T1)>
|
: unary_function<_T1, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res(*)(_T1, _T2)>
|
: binary_function<_T1, _T2, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res (_T1::*)()>
|
: unary_function<_T1*, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res (_T1::*)(_T2)>
|
: binary_function<_T1*, _T2, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res (_T1::*)() const>
|
: unary_function<const _T1*, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const>
|
: binary_function<const _T1*, _T2, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res (_T1::*)() volatile>
|
: unary_function<volatile _T1*, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile>
|
: binary_function<volatile _T1*, _T2, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1>
|
struct _Reference_wrapper_base<_Res (_T1::*)() const volatile>
|
: unary_function<const volatile _T1*, _Res>
|
{ };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile>
|
: binary_function<const volatile _T1*, _T2, _Res>
|
{ };
|
|
|
|
|
|
|
template<typename _Tp>
|
class reference_wrapper
|
: public _Reference_wrapper_base<typename remove_cv<_Tp>::type>
|
{
|
_Tp* _M_data;
|
|
public:
|
typedef _Tp type;
|
|
reference_wrapper(_Tp& __indata) noexcept
|
: _M_data(std::__addressof(__indata))
|
{ }
|
|
reference_wrapper(_Tp&&) = delete;
|
|
reference_wrapper(const reference_wrapper&) = default;
|
|
reference_wrapper&
|
operator=(const reference_wrapper&) = default;
|
|
operator _Tp&() const noexcept
|
{ return this->get(); }
|
|
_Tp&
|
get() const noexcept
|
{ return *_M_data; }
|
|
template<typename... _Args>
|
typename result_of<_Tp&(_Args&&...)>::type
|
operator()(_Args&&... __args) const
|
{
|
return std::__invoke(get(), std::forward<_Args>(__args)...);
|
}
|
};
|
|
|
|
template<typename _Tp>
|
inline reference_wrapper<_Tp>
|
ref(_Tp& __t) noexcept
|
{ return reference_wrapper<_Tp>(__t); }
|
|
|
template<typename _Tp>
|
inline reference_wrapper<const _Tp>
|
cref(const _Tp& __t) noexcept
|
{ return reference_wrapper<const _Tp>(__t); }
|
|
template<typename _Tp>
|
void ref(const _Tp&&) = delete;
|
|
template<typename _Tp>
|
void cref(const _Tp&&) = delete;
|
|
|
template<typename _Tp>
|
inline reference_wrapper<_Tp>
|
ref(reference_wrapper<_Tp> __t) noexcept
|
{ return ref(__t.get()); }
|
|
|
template<typename _Tp>
|
inline reference_wrapper<const _Tp>
|
cref(reference_wrapper<_Tp> __t) noexcept
|
{ return cref(__t.get()); }
|
|
|
|
template<typename... _Types>
|
struct _Pack : integral_constant<size_t, sizeof...(_Types)>
|
{ };
|
|
template<typename _From, typename _To, bool = _From::value == _To::value>
|
struct _AllConvertible : false_type
|
{ };
|
|
template<typename... _From, typename... _To>
|
struct _AllConvertible<_Pack<_From...>, _Pack<_To...>, true>
|
: __and_<is_convertible<_From, _To>...>
|
{ };
|
|
template<typename _Tp1, typename _Tp2>
|
using _NotSame = __not_<is_same<typename std::decay<_Tp1>::type,
|
typename std::decay<_Tp2>::type>>;
|
|
|
|
|
|
|
template<typename _Res, typename... _ArgTypes>
|
struct _Maybe_unary_or_binary_function { };
|
|
|
template<typename _Res, typename _T1>
|
struct _Maybe_unary_or_binary_function<_Res, _T1>
|
: std::unary_function<_T1, _Res> { };
|
|
|
template<typename _Res, typename _T1, typename _T2>
|
struct _Maybe_unary_or_binary_function<_Res, _T1, _T2>
|
: std::binary_function<_T1, _T2, _Res> { };
|
|
template<typename _Signature>
|
struct _Mem_fn_traits;
|
|
template<typename _Res, typename _Class, typename... _ArgTypes>
|
struct _Mem_fn_traits_base
|
{
|
using __result_type = _Res;
|
using __maybe_type
|
= _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>;
|
using __arity = integral_constant<size_t, sizeof...(_ArgTypes)>;
|
};
|
# 569 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
|
template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
|
template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template<typename _Res, typename _Class, typename... _ArgTypes> struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; };
|
|
|
|
|
template<typename _MemFunPtr,
|
bool __is_mem_fn = is_member_function_pointer<_MemFunPtr>::value>
|
class _Mem_fn_base
|
: public _Mem_fn_traits<_MemFunPtr>::__maybe_type
|
{
|
using _Traits = _Mem_fn_traits<_MemFunPtr>;
|
|
using _Arity = typename _Traits::__arity;
|
using _Varargs = typename _Traits::__vararg;
|
|
template<typename _Func, typename... _BoundArgs>
|
friend struct _Bind_check_arity;
|
|
_MemFunPtr _M_pmf;
|
|
public:
|
|
using result_type = typename _Traits::__result_type;
|
|
explicit constexpr
|
_Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { }
|
|
template<typename... _Args>
|
auto
|
operator()(_Args&&... __args) const
|
noexcept(noexcept(
|
std::__invoke(_M_pmf, std::forward<_Args>(__args)...)))
|
-> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...))
|
{ return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); }
|
};
|
|
|
template<typename _MemObjPtr>
|
class _Mem_fn_base<_MemObjPtr, false>
|
{
|
using _Arity = integral_constant<size_t, 0>;
|
using _Varargs = false_type;
|
|
template<typename _Func, typename... _BoundArgs>
|
friend struct _Bind_check_arity;
|
|
_MemObjPtr _M_pm;
|
|
public:
|
explicit constexpr
|
_Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { }
|
|
template<typename _Tp>
|
auto
|
operator()(_Tp&& __obj) const
|
noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj))))
|
-> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))
|
{ return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); }
|
};
|
|
template<typename _Res, typename _Class>
|
struct _Mem_fn<_Res _Class::*>
|
: _Mem_fn_base<_Res _Class::*>
|
{
|
using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base;
|
};
|
# 645 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Tp, typename _Class>
|
inline _Mem_fn<_Tp _Class::*>
|
mem_fn(_Tp _Class::* __pm) noexcept
|
{
|
return _Mem_fn<_Tp _Class::*>(__pm);
|
}
|
# 660 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Tp>
|
struct is_bind_expression
|
: public false_type { };
|
# 671 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Tp>
|
struct is_placeholder
|
: public integral_constant<int, 0>
|
{ };
|
|
|
|
|
template<int _Num> struct _Placeholder { };
|
|
|
|
|
|
|
|
namespace placeholders
|
{
|
|
|
|
|
|
extern const _Placeholder<1> _1;
|
extern const _Placeholder<2> _2;
|
extern const _Placeholder<3> _3;
|
extern const _Placeholder<4> _4;
|
extern const _Placeholder<5> _5;
|
extern const _Placeholder<6> _6;
|
extern const _Placeholder<7> _7;
|
extern const _Placeholder<8> _8;
|
extern const _Placeholder<9> _9;
|
extern const _Placeholder<10> _10;
|
extern const _Placeholder<11> _11;
|
extern const _Placeholder<12> _12;
|
extern const _Placeholder<13> _13;
|
extern const _Placeholder<14> _14;
|
extern const _Placeholder<15> _15;
|
extern const _Placeholder<16> _16;
|
extern const _Placeholder<17> _17;
|
extern const _Placeholder<18> _18;
|
extern const _Placeholder<19> _19;
|
extern const _Placeholder<20> _20;
|
extern const _Placeholder<21> _21;
|
extern const _Placeholder<22> _22;
|
extern const _Placeholder<23> _23;
|
extern const _Placeholder<24> _24;
|
extern const _Placeholder<25> _25;
|
extern const _Placeholder<26> _26;
|
extern const _Placeholder<27> _27;
|
extern const _Placeholder<28> _28;
|
extern const _Placeholder<29> _29;
|
|
}
|
# 733 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<int _Num>
|
struct is_placeholder<_Placeholder<_Num> >
|
: public integral_constant<int, _Num>
|
{ };
|
|
template<int _Num>
|
struct is_placeholder<const _Placeholder<_Num> >
|
: public integral_constant<int, _Num>
|
{ };
|
|
|
|
template<std::size_t __i, typename _Tuple>
|
using _Safe_tuple_element_t
|
= typename enable_if<(__i < tuple_size<_Tuple>::value),
|
tuple_element<__i, _Tuple>>::type::type;
|
# 761 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Arg,
|
bool _IsBindExp = is_bind_expression<_Arg>::value,
|
bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)>
|
class _Mu;
|
|
|
|
|
|
|
template<typename _Tp>
|
class _Mu<reference_wrapper<_Tp>, false, false>
|
{
|
public:
|
|
|
|
|
template<typename _CVRef, typename _Tuple>
|
_Tp&
|
operator()(_CVRef& __arg, _Tuple&) const volatile
|
{ return __arg.get(); }
|
};
|
|
|
|
|
|
|
|
template<typename _Arg>
|
class _Mu<_Arg, true, false>
|
{
|
public:
|
template<typename _CVArg, typename... _Args>
|
auto
|
operator()(_CVArg& __arg,
|
tuple<_Args...>& __tuple) const volatile
|
-> decltype(__arg(declval<_Args>()...))
|
{
|
|
typedef typename _Build_index_tuple<sizeof...(_Args)>::__type
|
_Indexes;
|
return this->__call(__arg, __tuple, _Indexes());
|
}
|
|
private:
|
|
|
template<typename _CVArg, typename... _Args, std::size_t... _Indexes>
|
auto
|
__call(_CVArg& __arg, tuple<_Args...>& __tuple,
|
const _Index_tuple<_Indexes...>&) const volatile
|
-> decltype(__arg(declval<_Args>()...))
|
{
|
return __arg(std::forward<_Args>(std::get<_Indexes>(__tuple))...);
|
}
|
};
|
|
|
|
|
|
|
template<typename _Arg>
|
class _Mu<_Arg, false, true>
|
{
|
public:
|
template<typename _Tuple>
|
_Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&&
|
operator()(const volatile _Arg&, _Tuple& __tuple) const volatile
|
{
|
using __type
|
= __tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>;
|
return std::forward<__type>(
|
::std::get<(is_placeholder<_Arg>::value - 1)>(__tuple));
|
}
|
};
|
|
|
|
|
|
|
template<typename _Arg>
|
class _Mu<_Arg, false, false>
|
{
|
public:
|
template<typename _CVArg, typename _Tuple>
|
_CVArg&&
|
operator()(_CVArg&& __arg, _Tuple&) const volatile
|
{ return std::forward<_CVArg>(__arg); }
|
};
|
|
|
|
|
|
|
template<typename _Tp>
|
struct _Maybe_wrap_member_pointer
|
{
|
typedef _Tp type;
|
|
static constexpr const _Tp&
|
__do_wrap(const _Tp& __x)
|
{ return __x; }
|
|
static constexpr _Tp&&
|
__do_wrap(_Tp&& __x)
|
{ return static_cast<_Tp&&>(__x); }
|
};
|
|
|
|
|
|
|
template<typename _Tp, typename _Class>
|
struct _Maybe_wrap_member_pointer<_Tp _Class::*>
|
{
|
typedef _Mem_fn<_Tp _Class::*> type;
|
|
static constexpr type
|
__do_wrap(_Tp _Class::* __pm)
|
{ return type(__pm); }
|
};
|
|
|
|
|
|
template<>
|
struct _Maybe_wrap_member_pointer<void>
|
{
|
typedef void type;
|
};
|
|
|
template<std::size_t _Ind, typename... _Tp>
|
inline auto
|
__volget(volatile tuple<_Tp...>& __tuple)
|
-> __tuple_element_t<_Ind, tuple<_Tp...>> volatile&
|
{ return std::get<_Ind>(const_cast<tuple<_Tp...>&>(__tuple)); }
|
|
|
template<std::size_t _Ind, typename... _Tp>
|
inline auto
|
__volget(const volatile tuple<_Tp...>& __tuple)
|
-> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile&
|
{ return std::get<_Ind>(const_cast<const tuple<_Tp...>&>(__tuple)); }
|
|
|
template<typename _Signature>
|
struct _Bind;
|
|
template<typename _Functor, typename... _Bound_args>
|
class _Bind<_Functor(_Bound_args...)>
|
: public _Weak_result_type<_Functor>
|
{
|
typedef _Bind __self_type;
|
typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type
|
_Bound_indexes;
|
|
_Functor _M_f;
|
tuple<_Bound_args...> _M_bound_args;
|
|
|
template<typename _Result, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>)
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(std::get<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Result, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(std::get<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Result, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call_v(tuple<_Args...>&& __args,
|
_Index_tuple<_Indexes...>) volatile
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(__volget<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Result, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call_c_v(tuple<_Args...>&& __args,
|
_Index_tuple<_Indexes...>) const volatile
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(__volget<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
public:
|
template<typename... _Args>
|
explicit _Bind(const _Functor& __f, _Args&&... __args)
|
: _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...)
|
{ }
|
|
template<typename... _Args>
|
explicit _Bind(_Functor&& __f, _Args&&... __args)
|
: _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
|
{ }
|
|
_Bind(const _Bind&) = default;
|
|
_Bind(_Bind&& __b)
|
: _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args))
|
{ }
|
|
|
template<typename... _Args, typename _Result
|
= decltype( std::declval<_Functor&>()(
|
_Mu<_Bound_args>()( std::declval<_Bound_args&>(),
|
std::declval<tuple<_Args...>&>() )... ) )>
|
_Result
|
operator()(_Args&&... __args)
|
{
|
return this->__call<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
|
|
template<typename... _Args, typename _Result
|
= decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
|
typename add_const<_Functor>::type&>::type>()(
|
_Mu<_Bound_args>()( std::declval<const _Bound_args&>(),
|
std::declval<tuple<_Args...>&>() )... ) )>
|
_Result
|
operator()(_Args&&... __args) const
|
{
|
return this->__call_c<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
|
|
template<typename... _Args, typename _Result
|
= decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
|
typename add_volatile<_Functor>::type&>::type>()(
|
_Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(),
|
std::declval<tuple<_Args...>&>() )... ) )>
|
_Result
|
operator()(_Args&&... __args) volatile
|
{
|
return this->__call_v<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
|
|
template<typename... _Args, typename _Result
|
= decltype( std::declval<typename enable_if<(sizeof...(_Args) >= 0),
|
typename add_cv<_Functor>::type&>::type>()(
|
_Mu<_Bound_args>()( std::declval<const volatile _Bound_args&>(),
|
std::declval<tuple<_Args...>&>() )... ) )>
|
_Result
|
operator()(_Args&&... __args) const volatile
|
{
|
return this->__call_c_v<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
};
|
|
|
template<typename _Result, typename _Signature>
|
struct _Bind_result;
|
|
template<typename _Result, typename _Functor, typename... _Bound_args>
|
class _Bind_result<_Result, _Functor(_Bound_args...)>
|
{
|
typedef _Bind_result __self_type;
|
typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type
|
_Bound_indexes;
|
|
_Functor _M_f;
|
tuple<_Bound_args...> _M_bound_args;
|
|
|
template<typename _Res>
|
struct __enable_if_void : enable_if<is_void<_Res>::value, int> { };
|
template<typename _Res>
|
struct __disable_if_void : enable_if<!is_void<_Res>::value, int> { };
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __disable_if_void<_Res>::type = 0)
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(std::get<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
void
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __enable_if_void<_Res>::type = 0)
|
{
|
_M_f(_Mu<_Bound_args>()
|
(std::get<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __disable_if_void<_Res>::type = 0) const
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(std::get<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
void
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __enable_if_void<_Res>::type = 0) const
|
{
|
_M_f(_Mu<_Bound_args>()
|
(std::get<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __disable_if_void<_Res>::type = 0) volatile
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(__volget<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
void
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __enable_if_void<_Res>::type = 0) volatile
|
{
|
_M_f(_Mu<_Bound_args>()
|
(__volget<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
_Result
|
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>,
|
typename __disable_if_void<_Res>::type = 0) const volatile
|
{
|
return _M_f(_Mu<_Bound_args>()
|
(__volget<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
|
template<typename _Res, typename... _Args, std::size_t... _Indexes>
|
void
|
__call(tuple<_Args...>&& __args,
|
_Index_tuple<_Indexes...>,
|
typename __enable_if_void<_Res>::type = 0) const volatile
|
{
|
_M_f(_Mu<_Bound_args>()
|
(__volget<_Indexes>(_M_bound_args), __args)...);
|
}
|
|
public:
|
typedef _Result result_type;
|
|
template<typename... _Args>
|
explicit _Bind_result(const _Functor& __f, _Args&&... __args)
|
: _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...)
|
{ }
|
|
template<typename... _Args>
|
explicit _Bind_result(_Functor&& __f, _Args&&... __args)
|
: _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...)
|
{ }
|
|
_Bind_result(const _Bind_result&) = default;
|
|
_Bind_result(_Bind_result&& __b)
|
: _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args))
|
{ }
|
|
|
template<typename... _Args>
|
result_type
|
operator()(_Args&&... __args)
|
{
|
return this->__call<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
|
|
template<typename... _Args>
|
result_type
|
operator()(_Args&&... __args) const
|
{
|
return this->__call<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
|
|
template<typename... _Args>
|
result_type
|
operator()(_Args&&... __args) volatile
|
{
|
return this->__call<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
|
|
template<typename... _Args>
|
result_type
|
operator()(_Args&&... __args) const volatile
|
{
|
return this->__call<_Result>(
|
std::forward_as_tuple(std::forward<_Args>(__args)...),
|
_Bound_indexes());
|
}
|
};
|
|
|
|
|
|
template<typename _Signature>
|
struct is_bind_expression<_Bind<_Signature> >
|
: public true_type { };
|
|
|
|
|
|
template<typename _Signature>
|
struct is_bind_expression<const _Bind<_Signature> >
|
: public true_type { };
|
|
|
|
|
|
template<typename _Signature>
|
struct is_bind_expression<volatile _Bind<_Signature> >
|
: public true_type { };
|
|
|
|
|
|
template<typename _Signature>
|
struct is_bind_expression<const volatile _Bind<_Signature>>
|
: public true_type { };
|
|
|
|
|
|
template<typename _Result, typename _Signature>
|
struct is_bind_expression<_Bind_result<_Result, _Signature>>
|
: public true_type { };
|
|
|
|
|
|
template<typename _Result, typename _Signature>
|
struct is_bind_expression<const _Bind_result<_Result, _Signature>>
|
: public true_type { };
|
|
|
|
|
|
template<typename _Result, typename _Signature>
|
struct is_bind_expression<volatile _Bind_result<_Result, _Signature>>
|
: public true_type { };
|
|
|
|
|
|
template<typename _Result, typename _Signature>
|
struct is_bind_expression<const volatile _Bind_result<_Result, _Signature>>
|
: public true_type { };
|
|
template<typename _Func, typename... _BoundArgs>
|
struct _Bind_check_arity { };
|
|
template<typename _Ret, typename... _Args, typename... _BoundArgs>
|
struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...>
|
{
|
static_assert(sizeof...(_BoundArgs) == sizeof...(_Args),
|
"Wrong number of arguments for function");
|
};
|
|
template<typename _Ret, typename... _Args, typename... _BoundArgs>
|
struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...>
|
{
|
static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args),
|
"Wrong number of arguments for function");
|
};
|
|
template<typename _Tp, typename _Class, typename... _BoundArgs>
|
struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...>
|
{
|
using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity;
|
using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs;
|
static_assert(_Varargs::value
|
? sizeof...(_BoundArgs) >= _Arity::value + 1
|
: sizeof...(_BoundArgs) == _Arity::value + 1,
|
"Wrong number of arguments for pointer-to-member");
|
};
|
|
|
|
|
template<typename _Tp, typename _Tp2 = typename decay<_Tp>::type>
|
using __is_socketlike = __or_<is_integral<_Tp2>, is_enum<_Tp2>>;
|
|
template<bool _SocketLike, typename _Func, typename... _BoundArgs>
|
struct _Bind_helper
|
: _Bind_check_arity<typename decay<_Func>::type, _BoundArgs...>
|
{
|
typedef _Maybe_wrap_member_pointer<typename decay<_Func>::type>
|
__maybe_type;
|
typedef typename __maybe_type::type __func_type;
|
typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type;
|
};
|
|
|
|
|
template<typename _Func, typename... _BoundArgs>
|
struct _Bind_helper<true, _Func, _BoundArgs...>
|
{ };
|
|
|
|
|
|
template<typename _Func, typename... _BoundArgs>
|
inline typename
|
_Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type
|
bind(_Func&& __f, _BoundArgs&&... __args)
|
{
|
typedef _Bind_helper<false, _Func, _BoundArgs...> __helper_type;
|
typedef typename __helper_type::__maybe_type __maybe_type;
|
typedef typename __helper_type::type __result_type;
|
return __result_type(__maybe_type::__do_wrap(std::forward<_Func>(__f)),
|
std::forward<_BoundArgs>(__args)...);
|
}
|
|
template<typename _Result, typename _Func, typename... _BoundArgs>
|
struct _Bindres_helper
|
: _Bind_check_arity<typename decay<_Func>::type, _BoundArgs...>
|
{
|
typedef _Maybe_wrap_member_pointer<typename decay<_Func>::type>
|
__maybe_type;
|
typedef typename __maybe_type::type __functor_type;
|
typedef _Bind_result<_Result,
|
__functor_type(typename decay<_BoundArgs>::type...)>
|
type;
|
};
|
|
|
|
|
|
template<typename _Result, typename _Func, typename... _BoundArgs>
|
inline
|
typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type
|
bind(_Func&& __f, _BoundArgs&&... __args)
|
{
|
typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type;
|
typedef typename __helper_type::__maybe_type __maybe_type;
|
typedef typename __helper_type::type __result_type;
|
return __result_type(__maybe_type::__do_wrap(std::forward<_Func>(__f)),
|
std::forward<_BoundArgs>(__args)...);
|
}
|
|
template<typename _Signature>
|
struct _Bind_simple;
|
|
template<typename _Callable, typename... _Args>
|
struct _Bind_simple<_Callable(_Args...)>
|
{
|
typedef typename result_of<_Callable(_Args...)>::type result_type;
|
|
template<typename _Tp, typename... _Up>
|
explicit
|
_Bind_simple(_Tp&& __f, _Up&&... __args)
|
: _M_bound(std::forward<_Tp>(__f), std::forward<_Up>(__args)...)
|
{ }
|
|
_Bind_simple(const _Bind_simple&) = default;
|
_Bind_simple(_Bind_simple&&) = default;
|
|
result_type
|
operator()()
|
{
|
typedef typename _Build_index_tuple<sizeof...(_Args)>::__type _Indices;
|
return _M_invoke(_Indices());
|
}
|
|
private:
|
template<std::size_t... _Indices>
|
typename result_of<_Callable(_Args...)>::type
|
_M_invoke(_Index_tuple<_Indices...>)
|
{
|
|
|
return std::forward<_Callable>(std::get<0>(_M_bound))(
|
std::forward<_Args>(std::get<_Indices+1>(_M_bound))...);
|
}
|
|
std::tuple<_Callable, _Args...> _M_bound;
|
};
|
|
template<typename _Func, typename... _BoundArgs>
|
struct _Bind_simple_helper
|
: _Bind_check_arity<typename decay<_Func>::type, _BoundArgs...>
|
{
|
typedef _Maybe_wrap_member_pointer<typename decay<_Func>::type>
|
__maybe_type;
|
typedef typename __maybe_type::type __func_type;
|
typedef _Bind_simple<__func_type(typename decay<_BoundArgs>::type...)>
|
__type;
|
};
|
|
|
|
template<typename _Callable, typename... _Args>
|
typename _Bind_simple_helper<_Callable, _Args...>::__type
|
__bind_simple(_Callable&& __callable, _Args&&... __args)
|
{
|
typedef _Bind_simple_helper<_Callable, _Args...> __helper_type;
|
typedef typename __helper_type::__maybe_type __maybe_type;
|
typedef typename __helper_type::__type __result_type;
|
return __result_type(
|
__maybe_type::__do_wrap( std::forward<_Callable>(__callable)),
|
std::forward<_Args>(__args)...);
|
}
|
|
|
|
|
|
|
class bad_function_call : public std::exception
|
{
|
public:
|
virtual ~bad_function_call() noexcept;
|
|
const char* what() const noexcept;
|
};
|
|
|
|
|
|
|
|
template<typename _Tp>
|
struct __is_location_invariant
|
: is_trivially_copyable<_Tp>::type
|
{ };
|
|
class _Undefined_class;
|
|
union _Nocopy_types
|
{
|
void* _M_object;
|
const void* _M_const_object;
|
void (*_M_function_pointer)();
|
void (_Undefined_class::*_M_member_pointer)();
|
};
|
|
union [[gnu::may_alias]] _Any_data
|
{
|
void* _M_access() { return &_M_pod_data[0]; }
|
const void* _M_access() const { return &_M_pod_data[0]; }
|
|
template<typename _Tp>
|
_Tp&
|
_M_access()
|
{ return *static_cast<_Tp*>(_M_access()); }
|
|
template<typename _Tp>
|
const _Tp&
|
_M_access() const
|
{ return *static_cast<const _Tp*>(_M_access()); }
|
|
_Nocopy_types _M_unused;
|
char _M_pod_data[sizeof(_Nocopy_types)];
|
};
|
|
enum _Manager_operation
|
{
|
__get_type_info,
|
__get_functor_ptr,
|
__clone_functor,
|
__destroy_functor
|
};
|
|
|
|
template<typename _Tp>
|
struct _Simple_type_wrapper
|
{
|
_Simple_type_wrapper(_Tp __value) : __value(__value) { }
|
|
_Tp __value;
|
};
|
|
template<typename _Tp>
|
struct __is_location_invariant<_Simple_type_wrapper<_Tp> >
|
: __is_location_invariant<_Tp>
|
{ };
|
|
|
|
template<typename _Functor>
|
inline _Functor&
|
__callable_functor(_Functor& __f)
|
{ return __f; }
|
|
template<typename _Member, typename _Class>
|
inline _Mem_fn<_Member _Class::*>
|
__callable_functor(_Member _Class::* &__p)
|
{ return std::mem_fn(__p); }
|
|
template<typename _Member, typename _Class>
|
inline _Mem_fn<_Member _Class::*>
|
__callable_functor(_Member _Class::* const &__p)
|
{ return std::mem_fn(__p); }
|
|
template<typename _Member, typename _Class>
|
inline _Mem_fn<_Member _Class::*>
|
__callable_functor(_Member _Class::* volatile &__p)
|
{ return std::mem_fn(__p); }
|
|
template<typename _Member, typename _Class>
|
inline _Mem_fn<_Member _Class::*>
|
__callable_functor(_Member _Class::* const volatile &__p)
|
{ return std::mem_fn(__p); }
|
|
template<typename _Signature>
|
class function;
|
|
|
class _Function_base
|
{
|
public:
|
static const std::size_t _M_max_size = sizeof(_Nocopy_types);
|
static const std::size_t _M_max_align = __alignof__(_Nocopy_types);
|
|
template<typename _Functor>
|
class _Base_manager
|
{
|
protected:
|
static const bool __stored_locally =
|
(__is_location_invariant<_Functor>::value
|
&& sizeof(_Functor) <= _M_max_size
|
&& __alignof__(_Functor) <= _M_max_align
|
&& (_M_max_align % __alignof__(_Functor) == 0));
|
|
typedef integral_constant<bool, __stored_locally> _Local_storage;
|
|
|
static _Functor*
|
_M_get_pointer(const _Any_data& __source)
|
{
|
const _Functor* __ptr =
|
__stored_locally? std::__addressof(__source._M_access<_Functor>())
|
: __source._M_access<_Functor*>();
|
return const_cast<_Functor*>(__ptr);
|
}
|
|
|
|
static void
|
_M_clone(_Any_data& __dest, const _Any_data& __source, true_type)
|
{
|
::new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
|
}
|
|
|
|
static void
|
_M_clone(_Any_data& __dest, const _Any_data& __source, false_type)
|
{
|
__dest._M_access<_Functor*>() =
|
new _Functor(*__source._M_access<_Functor*>());
|
}
|
|
|
|
static void
|
_M_destroy(_Any_data& __victim, true_type)
|
{
|
__victim._M_access<_Functor>().~_Functor();
|
}
|
|
|
static void
|
_M_destroy(_Any_data& __victim, false_type)
|
{
|
delete __victim._M_access<_Functor*>();
|
}
|
|
public:
|
static bool
|
_M_manager(_Any_data& __dest, const _Any_data& __source,
|
_Manager_operation __op)
|
{
|
switch (__op)
|
{
|
|
case __get_type_info:
|
__dest._M_access<const type_info*>() = &typeid(_Functor);
|
break;
|
|
case __get_functor_ptr:
|
__dest._M_access<_Functor*>() = _M_get_pointer(__source);
|
break;
|
|
case __clone_functor:
|
_M_clone(__dest, __source, _Local_storage());
|
break;
|
|
case __destroy_functor:
|
_M_destroy(__dest, _Local_storage());
|
break;
|
}
|
return false;
|
}
|
|
static void
|
_M_init_functor(_Any_data& __functor, _Functor&& __f)
|
{ _M_init_functor(__functor, std::move(__f), _Local_storage()); }
|
|
template<typename _Signature>
|
static bool
|
_M_not_empty_function(const function<_Signature>& __f)
|
{ return static_cast<bool>(__f); }
|
|
template<typename _Tp>
|
static bool
|
_M_not_empty_function(_Tp* __fp)
|
{ return __fp != nullptr; }
|
|
template<typename _Class, typename _Tp>
|
static bool
|
_M_not_empty_function(_Tp _Class::* __mp)
|
{ return __mp != nullptr; }
|
|
template<typename _Tp>
|
static bool
|
_M_not_empty_function(const _Tp&)
|
{ return true; }
|
|
private:
|
static void
|
_M_init_functor(_Any_data& __functor, _Functor&& __f, true_type)
|
{ ::new (__functor._M_access()) _Functor(std::move(__f)); }
|
|
static void
|
_M_init_functor(_Any_data& __functor, _Functor&& __f, false_type)
|
{ __functor._M_access<_Functor*>() = new _Functor(std::move(__f)); }
|
};
|
|
template<typename _Functor>
|
class _Ref_manager : public _Base_manager<_Functor*>
|
{
|
typedef _Function_base::_Base_manager<_Functor*> _Base;
|
|
public:
|
static bool
|
_M_manager(_Any_data& __dest, const _Any_data& __source,
|
_Manager_operation __op)
|
{
|
switch (__op)
|
{
|
|
case __get_type_info:
|
__dest._M_access<const type_info*>() = &typeid(_Functor);
|
break;
|
|
case __get_functor_ptr:
|
__dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source);
|
return is_const<_Functor>::value;
|
break;
|
|
default:
|
_Base::_M_manager(__dest, __source, __op);
|
}
|
return false;
|
}
|
|
static void
|
_M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f)
|
{
|
_Base::_M_init_functor(__functor, std::__addressof(__f.get()));
|
}
|
};
|
|
_Function_base() : _M_manager(nullptr) { }
|
|
~_Function_base()
|
{
|
if (_M_manager)
|
_M_manager(_M_functor, _M_functor, __destroy_functor);
|
}
|
|
|
bool _M_empty() const { return !_M_manager; }
|
|
typedef bool (*_Manager_type)(_Any_data&, const _Any_data&,
|
_Manager_operation);
|
|
_Any_data _M_functor;
|
_Manager_type _M_manager;
|
};
|
|
template<typename _Signature, typename _Functor>
|
class _Function_handler;
|
|
template<typename _Res, typename _Functor, typename... _ArgTypes>
|
class _Function_handler<_Res(_ArgTypes...), _Functor>
|
: public _Function_base::_Base_manager<_Functor>
|
{
|
typedef _Function_base::_Base_manager<_Functor> _Base;
|
|
public:
|
static _Res
|
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
|
{
|
return (*_Base::_M_get_pointer(__functor))(
|
std::forward<_ArgTypes>(__args)...);
|
}
|
};
|
|
template<typename _Functor, typename... _ArgTypes>
|
class _Function_handler<void(_ArgTypes...), _Functor>
|
: public _Function_base::_Base_manager<_Functor>
|
{
|
typedef _Function_base::_Base_manager<_Functor> _Base;
|
|
public:
|
static void
|
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
|
{
|
(*_Base::_M_get_pointer(__functor))(
|
std::forward<_ArgTypes>(__args)...);
|
}
|
};
|
|
template<typename _Res, typename _Functor, typename... _ArgTypes>
|
class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> >
|
: public _Function_base::_Ref_manager<_Functor>
|
{
|
typedef _Function_base::_Ref_manager<_Functor> _Base;
|
|
public:
|
static _Res
|
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
|
{
|
return std::__callable_functor(**_Base::_M_get_pointer(__functor))(
|
std::forward<_ArgTypes>(__args)...);
|
}
|
};
|
|
template<typename _Functor, typename... _ArgTypes>
|
class _Function_handler<void(_ArgTypes...), reference_wrapper<_Functor> >
|
: public _Function_base::_Ref_manager<_Functor>
|
{
|
typedef _Function_base::_Ref_manager<_Functor> _Base;
|
|
public:
|
static void
|
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
|
{
|
std::__callable_functor(**_Base::_M_get_pointer(__functor))(
|
std::forward<_ArgTypes>(__args)...);
|
}
|
};
|
|
template<typename _Class, typename _Member, typename _Res,
|
typename... _ArgTypes>
|
class _Function_handler<_Res(_ArgTypes...), _Member _Class::*>
|
: public _Function_handler<void(_ArgTypes...), _Member _Class::*>
|
{
|
typedef _Function_handler<void(_ArgTypes...), _Member _Class::*>
|
_Base;
|
|
public:
|
static _Res
|
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
|
{
|
return std::mem_fn(_Base::_M_get_pointer(__functor)->__value)(
|
std::forward<_ArgTypes>(__args)...);
|
}
|
};
|
|
template<typename _Class, typename _Member, typename... _ArgTypes>
|
class _Function_handler<void(_ArgTypes...), _Member _Class::*>
|
: public _Function_base::_Base_manager<
|
_Simple_type_wrapper< _Member _Class::* > >
|
{
|
typedef _Member _Class::* _Functor;
|
typedef _Simple_type_wrapper<_Functor> _Wrapper;
|
typedef _Function_base::_Base_manager<_Wrapper> _Base;
|
|
public:
|
static bool
|
_M_manager(_Any_data& __dest, const _Any_data& __source,
|
_Manager_operation __op)
|
{
|
switch (__op)
|
{
|
|
case __get_type_info:
|
__dest._M_access<const type_info*>() = &typeid(_Functor);
|
break;
|
|
case __get_functor_ptr:
|
__dest._M_access<_Functor*>() =
|
&_Base::_M_get_pointer(__source)->__value;
|
break;
|
|
default:
|
_Base::_M_manager(__dest, __source, __op);
|
}
|
return false;
|
}
|
|
static void
|
_M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
|
{
|
std::mem_fn(_Base::_M_get_pointer(__functor)->__value)(
|
std::forward<_ArgTypes>(__args)...);
|
}
|
};
|
|
template<typename _From, typename _To>
|
using __check_func_return_type
|
= __or_<is_void<_To>, is_same<_From, _To>, is_convertible<_From, _To>>;
|
|
|
|
|
|
|
|
template<typename _Res, typename... _ArgTypes>
|
class function<_Res(_ArgTypes...)>
|
: public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
|
private _Function_base
|
{
|
typedef _Res _Signature_type(_ArgTypes...);
|
|
template<typename _Func,
|
typename _Res2 = typename result_of<_Func&(_ArgTypes...)>::type>
|
struct _Callable : __check_func_return_type<_Res2, _Res> { };
|
|
|
|
template<typename _Tp>
|
struct _Callable<function, _Tp> : false_type { };
|
|
template<typename _Cond, typename _Tp>
|
using _Requires = typename enable_if<_Cond::value, _Tp>::type;
|
|
public:
|
typedef _Res result_type;
|
|
|
|
|
|
|
|
function() noexcept
|
: _Function_base() { }
|
|
|
|
|
|
function(nullptr_t) noexcept
|
: _Function_base() { }
|
# 1879 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
function(const function& __x);
|
# 1888 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
function(function&& __x) : _Function_base()
|
{
|
__x.swap(*this);
|
}
|
# 1911 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Functor,
|
typename = _Requires<__not_<is_same<_Functor, function>>, void>,
|
typename = _Requires<_Callable<_Functor>, void>>
|
function(_Functor);
|
# 1928 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
function&
|
operator=(const function& __x)
|
{
|
function(__x).swap(*this);
|
return *this;
|
}
|
# 1946 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
function&
|
operator=(function&& __x)
|
{
|
function(std::move(__x)).swap(*this);
|
return *this;
|
}
|
# 1960 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
function&
|
operator=(nullptr_t) noexcept
|
{
|
if (_M_manager)
|
{
|
_M_manager(_M_functor, _M_functor, __destroy_functor);
|
_M_manager = nullptr;
|
_M_invoker = nullptr;
|
}
|
return *this;
|
}
|
# 1988 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Functor>
|
_Requires<_Callable<typename decay<_Functor>::type>, function&>
|
operator=(_Functor&& __f)
|
{
|
function(std::forward<_Functor>(__f)).swap(*this);
|
return *this;
|
}
|
|
|
template<typename _Functor>
|
function&
|
operator=(reference_wrapper<_Functor> __f) noexcept
|
{
|
function(__f).swap(*this);
|
return *this;
|
}
|
# 2014 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
void swap(function& __x) noexcept
|
{
|
std::swap(_M_functor, __x._M_functor);
|
std::swap(_M_manager, __x._M_manager);
|
std::swap(_M_invoker, __x._M_invoker);
|
}
|
# 2042 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
explicit operator bool() const noexcept
|
{ return !_M_empty(); }
|
# 2055 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
_Res operator()(_ArgTypes... __args) const;
|
# 2068 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
const type_info& target_type() const noexcept;
|
# 2079 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Functor> _Functor* target() noexcept;
|
|
|
template<typename _Functor> const _Functor* target() const noexcept;
|
|
|
private:
|
using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
|
_Invoker_type _M_invoker;
|
};
|
|
|
template<typename _Res, typename... _ArgTypes>
|
function<_Res(_ArgTypes...)>::
|
function(const function& __x)
|
: _Function_base()
|
{
|
if (static_cast<bool>(__x))
|
{
|
__x._M_manager(_M_functor, __x._M_functor, __clone_functor);
|
_M_invoker = __x._M_invoker;
|
_M_manager = __x._M_manager;
|
}
|
}
|
|
template<typename _Res, typename... _ArgTypes>
|
template<typename _Functor, typename, typename>
|
function<_Res(_ArgTypes...)>::
|
function(_Functor __f)
|
: _Function_base()
|
{
|
typedef _Function_handler<_Signature_type, _Functor> _My_handler;
|
|
if (_My_handler::_M_not_empty_function(__f))
|
{
|
_My_handler::_M_init_functor(_M_functor, std::move(__f));
|
_M_invoker = &_My_handler::_M_invoke;
|
_M_manager = &_My_handler::_M_manager;
|
}
|
}
|
|
template<typename _Res, typename... _ArgTypes>
|
_Res
|
function<_Res(_ArgTypes...)>::
|
operator()(_ArgTypes... __args) const
|
{
|
if (_M_empty())
|
__throw_bad_function_call();
|
return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
|
}
|
|
|
template<typename _Res, typename... _ArgTypes>
|
const type_info&
|
function<_Res(_ArgTypes...)>::
|
target_type() const noexcept
|
{
|
if (_M_manager)
|
{
|
_Any_data __typeinfo_result;
|
_M_manager(__typeinfo_result, _M_functor, __get_type_info);
|
return *__typeinfo_result._M_access<const type_info*>();
|
}
|
else
|
return typeid(void);
|
}
|
|
template<typename _Res, typename... _ArgTypes>
|
template<typename _Functor>
|
_Functor*
|
function<_Res(_ArgTypes...)>::
|
target() noexcept
|
{
|
if (typeid(_Functor) == target_type() && _M_manager)
|
{
|
_Any_data __ptr;
|
if (_M_manager(__ptr, _M_functor, __get_functor_ptr)
|
&& !is_const<_Functor>::value)
|
return 0;
|
else
|
return __ptr._M_access<_Functor*>();
|
}
|
else
|
return 0;
|
}
|
|
template<typename _Res, typename... _ArgTypes>
|
template<typename _Functor>
|
const _Functor*
|
function<_Res(_ArgTypes...)>::
|
target() const noexcept
|
{
|
if (typeid(_Functor) == target_type() && _M_manager)
|
{
|
_Any_data __ptr;
|
_M_manager(__ptr, _M_functor, __get_functor_ptr);
|
return __ptr._M_access<const _Functor*>();
|
}
|
else
|
return 0;
|
}
|
# 2191 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Res, typename... _Args>
|
inline bool
|
operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept
|
{ return !static_cast<bool>(__f); }
|
|
|
template<typename _Res, typename... _Args>
|
inline bool
|
operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept
|
{ return !static_cast<bool>(__f); }
|
# 2209 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Res, typename... _Args>
|
inline bool
|
operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept
|
{ return static_cast<bool>(__f); }
|
|
|
template<typename _Res, typename... _Args>
|
inline bool
|
operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept
|
{ return static_cast<bool>(__f); }
|
# 2229 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/functional" 3
|
template<typename _Res, typename... _Args>
|
inline void
|
swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept
|
{ __x.swap(__y); }
|
|
|
}
|
# 80 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 1 3
|
# 39 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 49 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename> class auto_ptr;
|
|
|
|
template<typename _Tp>
|
struct default_delete
|
{
|
|
constexpr default_delete() noexcept = default;
|
|
|
|
|
|
|
template<typename _Up, typename = typename
|
enable_if<is_convertible<_Up*, _Tp*>::value>::type>
|
default_delete(const default_delete<_Up>&) noexcept { }
|
|
|
void
|
operator()(_Tp* __ptr) const
|
{
|
static_assert(!is_void<_Tp>::value,
|
"can't delete pointer to incomplete type");
|
static_assert(sizeof(_Tp)>0,
|
"can't delete pointer to incomplete type");
|
delete __ptr;
|
}
|
};
|
|
|
|
|
template<typename _Tp>
|
struct default_delete<_Tp[]>
|
{
|
public:
|
|
constexpr default_delete() noexcept = default;
|
# 99 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename _Up, typename = typename
|
enable_if<is_convertible<_Up(*)[], _Tp(*)[]>::value>::type>
|
default_delete(const default_delete<_Up[]>&) noexcept { }
|
|
|
template<typename _Up>
|
typename enable_if<is_convertible<_Up(*)[], _Tp(*)[]>::value>::type
|
operator()(_Up* __ptr) const
|
{
|
static_assert(sizeof(_Tp)>0,
|
"can't delete pointer to incomplete type");
|
delete [] __ptr;
|
}
|
};
|
|
|
template <typename _Tp, typename _Dp = default_delete<_Tp> >
|
class unique_ptr
|
{
|
|
class _Pointer
|
{
|
template<typename _Up>
|
static typename _Up::pointer __test(typename _Up::pointer*);
|
|
template<typename _Up>
|
static _Tp* __test(...);
|
|
typedef typename remove_reference<_Dp>::type _Del;
|
|
public:
|
typedef decltype(__test<_Del>(0)) type;
|
};
|
|
typedef std::tuple<typename _Pointer::type, _Dp> __tuple_type;
|
__tuple_type _M_t;
|
|
public:
|
typedef typename _Pointer::type pointer;
|
typedef _Tp element_type;
|
typedef _Dp deleter_type;
|
|
|
|
|
template<typename _Up, typename _Ep>
|
using __safe_conversion_up = __and_<
|
is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>,
|
__not_<is_array<_Up>>,
|
__or_<__and_<is_reference<deleter_type>,
|
is_same<deleter_type, _Ep>>,
|
__and_<__not_<is_reference<deleter_type>>,
|
is_convertible<_Ep, deleter_type>>
|
>
|
>;
|
|
|
|
|
constexpr unique_ptr() noexcept
|
: _M_t()
|
{ static_assert(!is_pointer<deleter_type>::value,
|
"constructed with null function pointer deleter"); }
|
|
|
|
|
|
|
|
explicit
|
unique_ptr(pointer __p) noexcept
|
: _M_t()
|
{
|
std::get<0>(_M_t) = __p;
|
static_assert(!is_pointer<deleter_type>::value,
|
"constructed with null function pointer deleter");
|
}
|
# 185 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
unique_ptr(pointer __p,
|
typename conditional<is_reference<deleter_type>::value,
|
deleter_type, const deleter_type&>::type __d) noexcept
|
: _M_t(__p, __d) { }
|
# 197 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
unique_ptr(pointer __p,
|
typename remove_reference<deleter_type>::type&& __d) noexcept
|
: _M_t(std::move(__p), std::move(__d))
|
{ static_assert(!std::is_reference<deleter_type>::value,
|
"rvalue deleter bound to reference"); }
|
|
|
constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
|
|
|
|
|
unique_ptr(unique_ptr&& __u) noexcept
|
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
|
|
|
|
|
|
|
|
template<typename _Up, typename _Ep, typename = _Require<
|
__safe_conversion_up<_Up, _Ep>,
|
typename conditional<is_reference<_Dp>::value,
|
is_same<_Ep, _Dp>,
|
is_convertible<_Ep, _Dp>>::type>>
|
unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
|
: _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
|
{ }
|
|
|
|
template<typename _Up, typename = _Require<
|
is_convertible<_Up*, _Tp*>, is_same<_Dp, default_delete<_Tp>>>>
|
unique_ptr(auto_ptr<_Up>&& __u) noexcept;
|
|
|
|
~unique_ptr() noexcept
|
{
|
auto& __ptr = std::get<0>(_M_t);
|
if (__ptr != nullptr)
|
get_deleter()(__ptr);
|
__ptr = pointer();
|
}
|
# 251 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
unique_ptr&
|
operator=(unique_ptr&& __u) noexcept
|
{
|
reset(__u.release());
|
get_deleter() = std::forward<deleter_type>(__u.get_deleter());
|
return *this;
|
}
|
# 266 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename _Up, typename _Ep>
|
typename enable_if< __and_<
|
__safe_conversion_up<_Up, _Ep>,
|
is_assignable<deleter_type&, _Ep&&>
|
>::value,
|
unique_ptr&>::type
|
operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
|
{
|
reset(__u.release());
|
get_deleter() = std::forward<_Ep>(__u.get_deleter());
|
return *this;
|
}
|
|
|
unique_ptr&
|
operator=(nullptr_t) noexcept
|
{
|
reset();
|
return *this;
|
}
|
|
|
|
|
typename add_lvalue_reference<element_type>::type
|
operator*() const
|
{
|
;
|
return *get();
|
}
|
|
|
pointer
|
operator->() const noexcept
|
{
|
;
|
return get();
|
}
|
|
|
pointer
|
get() const noexcept
|
{ return std::get<0>(_M_t); }
|
|
|
deleter_type&
|
get_deleter() noexcept
|
{ return std::get<1>(_M_t); }
|
|
|
const deleter_type&
|
get_deleter() const noexcept
|
{ return std::get<1>(_M_t); }
|
|
|
explicit operator bool() const noexcept
|
{ return get() == pointer() ? false : true; }
|
|
|
|
|
pointer
|
release() noexcept
|
{
|
pointer __p = get();
|
std::get<0>(_M_t) = pointer();
|
return __p;
|
}
|
|
|
|
|
|
|
|
void
|
reset(pointer __p = pointer()) noexcept
|
{
|
using std::swap;
|
swap(std::get<0>(_M_t), __p);
|
if (__p != pointer())
|
get_deleter()(__p);
|
}
|
|
|
void
|
swap(unique_ptr& __u) noexcept
|
{
|
using std::swap;
|
swap(_M_t, __u._M_t);
|
}
|
|
|
unique_ptr(const unique_ptr&) = delete;
|
unique_ptr& operator=(const unique_ptr&) = delete;
|
};
|
|
|
|
|
|
template<typename _Tp, typename _Dp>
|
class unique_ptr<_Tp[], _Dp>
|
{
|
|
class _Pointer
|
{
|
template<typename _Up>
|
static typename _Up::pointer __test(typename _Up::pointer*);
|
|
template<typename _Up>
|
static _Tp* __test(...);
|
|
typedef typename remove_reference<_Dp>::type _Del;
|
|
public:
|
typedef decltype(__test<_Del>(0)) type;
|
};
|
|
typedef std::tuple<typename _Pointer::type, _Dp> __tuple_type;
|
__tuple_type _M_t;
|
|
template<typename _Up>
|
using __remove_cv = typename remove_cv<_Up>::type;
|
|
|
template<typename _Up>
|
using __is_derived_Tp
|
= __and_< is_base_of<_Tp, _Up>,
|
__not_<is_same<__remove_cv<_Tp>, __remove_cv<_Up>>> >;
|
|
|
public:
|
typedef typename _Pointer::type pointer;
|
typedef _Tp element_type;
|
typedef _Dp deleter_type;
|
|
|
|
template<typename _Up, typename _Ep,
|
typename _Up_up = unique_ptr<_Up, _Ep>,
|
typename _Up_element_type = typename _Up_up::element_type>
|
using __safe_conversion_up = __and_<
|
is_array<_Up>,
|
is_same<pointer, element_type*>,
|
is_same<typename _Up_up::pointer, _Up_element_type*>,
|
is_convertible<_Up_element_type(*)[], element_type(*)[]>,
|
__or_<__and_<is_reference<deleter_type>, is_same<deleter_type, _Ep>>,
|
__and_<__not_<is_reference<deleter_type>>,
|
is_convertible<_Ep, deleter_type>>>
|
>;
|
|
|
template<typename _Up>
|
using __safe_conversion_raw = __and_<
|
__or_<__or_<is_same<_Up, pointer>,
|
is_same<_Up, nullptr_t>>,
|
__and_<is_pointer<_Up>,
|
is_same<pointer, element_type*>,
|
is_convertible<
|
typename remove_pointer<_Up>::type(*)[],
|
element_type(*)[]>
|
>
|
>
|
>;
|
|
|
|
|
constexpr unique_ptr() noexcept
|
: _M_t()
|
{ static_assert(!std::is_pointer<deleter_type>::value,
|
"constructed with null function pointer deleter"); }
|
# 447 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename _Up,
|
typename = typename enable_if<
|
__safe_conversion_raw<_Up>::value, bool>::type>
|
explicit
|
unique_ptr(_Up __p) noexcept
|
: _M_t(__p, deleter_type())
|
{ static_assert(!is_pointer<deleter_type>::value,
|
"constructed with null function pointer deleter"); }
|
# 464 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename _Up,
|
typename = typename enable_if<
|
__safe_conversion_raw<_Up>::value, bool>::type>
|
unique_ptr(_Up __p,
|
typename conditional<is_reference<deleter_type>::value,
|
deleter_type, const deleter_type&>::type __d) noexcept
|
: _M_t(__p, __d) { }
|
# 480 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename _Up,
|
typename = typename enable_if<
|
__safe_conversion_raw<_Up>::value, bool>::type>
|
unique_ptr(_Up __p, typename
|
remove_reference<deleter_type>::type&& __d) noexcept
|
: _M_t(std::move(__p), std::move(__d))
|
{ static_assert(!is_reference<deleter_type>::value,
|
"rvalue deleter bound to reference"); }
|
|
|
unique_ptr(unique_ptr&& __u) noexcept
|
: _M_t(__u.release(), std::forward<deleter_type>(__u.get_deleter())) { }
|
|
|
constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
|
|
template<typename _Up, typename _Ep,
|
typename = _Require<__safe_conversion_up<_Up, _Ep>>>
|
unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
|
: _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter()))
|
{ }
|
|
|
~unique_ptr()
|
{
|
auto& __ptr = std::get<0>(_M_t);
|
if (__ptr != nullptr)
|
get_deleter()(__ptr);
|
__ptr = pointer();
|
}
|
# 519 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
unique_ptr&
|
operator=(unique_ptr&& __u) noexcept
|
{
|
reset(__u.release());
|
get_deleter() = std::forward<deleter_type>(__u.get_deleter());
|
return *this;
|
}
|
# 534 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
template<typename _Up, typename _Ep>
|
typename
|
enable_if<__and_<__safe_conversion_up<_Up, _Ep>,
|
is_assignable<deleter_type&, _Ep&&>
|
>::value,
|
unique_ptr&>::type
|
operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
|
{
|
reset(__u.release());
|
get_deleter() = std::forward<_Ep>(__u.get_deleter());
|
return *this;
|
}
|
|
|
unique_ptr&
|
operator=(nullptr_t) noexcept
|
{
|
reset();
|
return *this;
|
}
|
|
|
|
|
typename std::add_lvalue_reference<element_type>::type
|
operator[](size_t __i) const
|
{
|
;
|
return get()[__i];
|
}
|
|
|
pointer
|
get() const noexcept
|
{ return std::get<0>(_M_t); }
|
|
|
deleter_type&
|
get_deleter() noexcept
|
{ return std::get<1>(_M_t); }
|
|
|
const deleter_type&
|
get_deleter() const noexcept
|
{ return std::get<1>(_M_t); }
|
|
|
explicit operator bool() const noexcept
|
{ return get() == pointer() ? false : true; }
|
|
|
|
|
pointer
|
release() noexcept
|
{
|
pointer __p = get();
|
std::get<0>(_M_t) = pointer();
|
return __p;
|
}
|
|
|
|
|
|
|
|
template <typename _Up,
|
typename = _Require<
|
__or_<is_same<_Up, pointer>,
|
__and_<is_same<pointer, element_type*>,
|
is_pointer<_Up>,
|
is_convertible<
|
typename remove_pointer<_Up>::type(*)[],
|
element_type(*)[]
|
>
|
>
|
>
|
>>
|
void
|
reset(_Up __p) noexcept
|
{
|
pointer __ptr = __p;
|
using std::swap;
|
swap(std::get<0>(_M_t), __ptr);
|
if (__ptr != nullptr)
|
get_deleter()(__ptr);
|
}
|
|
void reset(nullptr_t = nullptr) noexcept
|
{
|
reset(pointer());
|
}
|
|
|
void
|
swap(unique_ptr& __u) noexcept
|
{
|
using std::swap;
|
swap(_M_t, __u._M_t);
|
}
|
|
|
unique_ptr(const unique_ptr&) = delete;
|
unique_ptr& operator=(const unique_ptr&) = delete;
|
};
|
|
template<typename _Tp, typename _Dp>
|
inline void
|
swap(unique_ptr<_Tp, _Dp>& __x,
|
unique_ptr<_Tp, _Dp>& __y) noexcept
|
{ __x.swap(__y); }
|
|
template<typename _Tp, typename _Dp,
|
typename _Up, typename _Ep>
|
inline bool
|
operator==(const unique_ptr<_Tp, _Dp>& __x,
|
const unique_ptr<_Up, _Ep>& __y)
|
{ return __x.get() == __y.get(); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept
|
{ return !__x; }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept
|
{ return !__x; }
|
|
template<typename _Tp, typename _Dp,
|
typename _Up, typename _Ep>
|
inline bool
|
operator!=(const unique_ptr<_Tp, _Dp>& __x,
|
const unique_ptr<_Up, _Ep>& __y)
|
{ return __x.get() != __y.get(); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept
|
{ return (bool)__x; }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept
|
{ return (bool)__x; }
|
|
template<typename _Tp, typename _Dp,
|
typename _Up, typename _Ep>
|
inline bool
|
operator<(const unique_ptr<_Tp, _Dp>& __x,
|
const unique_ptr<_Up, _Ep>& __y)
|
{
|
typedef typename
|
std::common_type<typename unique_ptr<_Tp, _Dp>::pointer,
|
typename unique_ptr<_Up, _Ep>::pointer>::type _CT;
|
return std::less<_CT>()(__x.get(), __y.get());
|
}
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
|
{ return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(__x.get(),
|
nullptr); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
|
{ return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(nullptr,
|
__x.get()); }
|
|
template<typename _Tp, typename _Dp,
|
typename _Up, typename _Ep>
|
inline bool
|
operator<=(const unique_ptr<_Tp, _Dp>& __x,
|
const unique_ptr<_Up, _Ep>& __y)
|
{ return !(__y < __x); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
|
{ return !(nullptr < __x); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
|
{ return !(__x < nullptr); }
|
|
template<typename _Tp, typename _Dp,
|
typename _Up, typename _Ep>
|
inline bool
|
operator>(const unique_ptr<_Tp, _Dp>& __x,
|
const unique_ptr<_Up, _Ep>& __y)
|
{ return (__y < __x); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
|
{ return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(nullptr,
|
__x.get()); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
|
{ return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(__x.get(),
|
nullptr); }
|
|
template<typename _Tp, typename _Dp,
|
typename _Up, typename _Ep>
|
inline bool
|
operator>=(const unique_ptr<_Tp, _Dp>& __x,
|
const unique_ptr<_Up, _Ep>& __y)
|
{ return !(__x < __y); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t)
|
{ return !(__x < nullptr); }
|
|
template<typename _Tp, typename _Dp>
|
inline bool
|
operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x)
|
{ return !(nullptr < __x); }
|
|
|
template<typename _Tp, typename _Dp>
|
struct hash<unique_ptr<_Tp, _Dp>>
|
: public __hash_base<size_t, unique_ptr<_Tp, _Dp>>
|
{
|
size_t
|
operator()(const unique_ptr<_Tp, _Dp>& __u) const noexcept
|
{
|
typedef unique_ptr<_Tp, _Dp> _UP;
|
return std::hash<typename _UP::pointer>()(__u.get());
|
}
|
};
|
# 808 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/unique_ptr.h" 3
|
}
|
# 82 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 1 3
|
# 52 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h" 1 3
|
# 53 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocated_ptr.h" 1 3
|
# 40 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/allocated_ptr.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
template<typename _Alloc>
|
struct __allocated_ptr
|
{
|
using pointer = typename allocator_traits<_Alloc>::pointer;
|
using value_type = typename allocator_traits<_Alloc>::value_type;
|
|
|
__allocated_ptr(_Alloc& __a, pointer __ptr) noexcept
|
: _M_alloc(std::__addressof(__a)), _M_ptr(__ptr)
|
{ }
|
|
|
template<typename _Ptr,
|
typename _Req = _Require<is_same<_Ptr, value_type*>>>
|
__allocated_ptr(_Alloc& __a, _Ptr __ptr)
|
: _M_alloc(std::__addressof(__a)),
|
_M_ptr(pointer_traits<pointer>::pointer_to(*__ptr))
|
{ }
|
|
|
__allocated_ptr(__allocated_ptr&& __gd) noexcept
|
: _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr)
|
{ __gd._M_ptr = nullptr; }
|
|
|
~__allocated_ptr()
|
{
|
if (_M_ptr != nullptr)
|
std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1);
|
}
|
|
|
__allocated_ptr&
|
operator=(std::nullptr_t) noexcept
|
{
|
_M_ptr = nullptr;
|
return *this;
|
}
|
|
|
value_type* get() { return _S_raw_ptr(_M_ptr); }
|
|
private:
|
value_type* _S_raw_ptr(value_type* __ptr) { return __ptr; }
|
|
template<typename _Ptr>
|
auto _S_raw_ptr(_Ptr __ptr) -> decltype(_S_raw_ptr(__ptr.operator->()))
|
{ return _S_raw_ptr(__ptr.operator->()); }
|
|
_Alloc* _M_alloc;
|
pointer _M_ptr;
|
};
|
|
|
template<typename _Alloc>
|
__allocated_ptr<_Alloc>
|
__allocate_guarded(_Alloc& __a)
|
{
|
return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) };
|
}
|
|
|
}
|
# 54 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h" 2 3
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
template<typename> class auto_ptr;
|
|
|
|
|
|
|
class bad_weak_ptr : public std::exception
|
{
|
public:
|
virtual char const* what() const noexcept;
|
|
virtual ~bad_weak_ptr() noexcept;
|
};
|
|
|
inline void
|
__throw_bad_weak_ptr()
|
{ (throw (bad_weak_ptr())); }
|
|
using __gnu_cxx::_Lock_policy;
|
using __gnu_cxx::__default_lock_policy;
|
using __gnu_cxx::_S_single;
|
using __gnu_cxx::_S_mutex;
|
using __gnu_cxx::_S_atomic;
|
|
|
template<_Lock_policy _Lp>
|
class _Mutex_base
|
{
|
protected:
|
|
enum { _S_need_barriers = 0 };
|
};
|
|
template<>
|
class _Mutex_base<_S_mutex>
|
: public __gnu_cxx::__mutex
|
{
|
protected:
|
|
|
|
enum { _S_need_barriers = 1 };
|
};
|
|
template<_Lock_policy _Lp = __default_lock_policy>
|
class _Sp_counted_base
|
: public _Mutex_base<_Lp>
|
{
|
public:
|
_Sp_counted_base() noexcept
|
: _M_use_count(1), _M_weak_count(1) { }
|
|
virtual
|
~_Sp_counted_base() noexcept
|
{ }
|
|
|
|
virtual void
|
_M_dispose() noexcept = 0;
|
|
|
virtual void
|
_M_destroy() noexcept
|
{ delete this; }
|
|
virtual void*
|
_M_get_deleter(const std::type_info&) noexcept = 0;
|
|
void
|
_M_add_ref_copy()
|
{ __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); }
|
|
void
|
_M_add_ref_lock();
|
|
bool
|
_M_add_ref_lock_nothrow();
|
|
void
|
_M_release() noexcept
|
{
|
|
;
|
if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1)
|
{
|
;
|
_M_dispose();
|
|
|
|
|
if (_Mutex_base<_Lp>::_S_need_barriers)
|
{
|
__atomic_thread_fence (4);
|
}
|
|
|
;
|
if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count,
|
-1) == 1)
|
{
|
;
|
_M_destroy();
|
}
|
}
|
}
|
|
void
|
_M_weak_add_ref() noexcept
|
{ __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); }
|
|
void
|
_M_weak_release() noexcept
|
{
|
|
;
|
if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1)
|
{
|
;
|
if (_Mutex_base<_Lp>::_S_need_barriers)
|
{
|
|
|
__atomic_thread_fence (4);
|
}
|
_M_destroy();
|
}
|
}
|
|
long
|
_M_get_use_count() const noexcept
|
{
|
|
|
return __atomic_load_n(&_M_use_count, 0);
|
}
|
|
private:
|
_Sp_counted_base(_Sp_counted_base const&) = delete;
|
_Sp_counted_base& operator=(_Sp_counted_base const&) = delete;
|
|
_Atomic_word _M_use_count;
|
_Atomic_word _M_weak_count;
|
};
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_single>::
|
_M_add_ref_lock()
|
{
|
if (_M_use_count == 0)
|
__throw_bad_weak_ptr();
|
++_M_use_count;
|
}
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_mutex>::
|
_M_add_ref_lock()
|
{
|
__gnu_cxx::__scoped_lock sentry(*this);
|
if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
|
{
|
_M_use_count = 0;
|
__throw_bad_weak_ptr();
|
}
|
}
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_atomic>::
|
_M_add_ref_lock()
|
{
|
|
_Atomic_word __count = _M_get_use_count();
|
do
|
{
|
if (__count == 0)
|
__throw_bad_weak_ptr();
|
|
|
}
|
while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1,
|
true, 4,
|
0));
|
}
|
|
template<>
|
inline bool
|
_Sp_counted_base<_S_single>::
|
_M_add_ref_lock_nothrow()
|
{
|
if (_M_use_count == 0)
|
return false;
|
++_M_use_count;
|
return true;
|
}
|
|
template<>
|
inline bool
|
_Sp_counted_base<_S_mutex>::
|
_M_add_ref_lock_nothrow()
|
{
|
__gnu_cxx::__scoped_lock sentry(*this);
|
if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
|
{
|
_M_use_count = 0;
|
return false;
|
}
|
return true;
|
}
|
|
template<>
|
inline bool
|
_Sp_counted_base<_S_atomic>::
|
_M_add_ref_lock_nothrow()
|
{
|
|
_Atomic_word __count = _M_get_use_count();
|
do
|
{
|
if (__count == 0)
|
return false;
|
|
|
}
|
while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1,
|
true, 4,
|
0));
|
return true;
|
}
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_single>::_M_add_ref_copy()
|
{ ++_M_use_count; }
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_single>::_M_release() noexcept
|
{
|
if (--_M_use_count == 0)
|
{
|
_M_dispose();
|
if (--_M_weak_count == 0)
|
_M_destroy();
|
}
|
}
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept
|
{ ++_M_weak_count; }
|
|
template<>
|
inline void
|
_Sp_counted_base<_S_single>::_M_weak_release() noexcept
|
{
|
if (--_M_weak_count == 0)
|
_M_destroy();
|
}
|
|
template<>
|
inline long
|
_Sp_counted_base<_S_single>::_M_get_use_count() const noexcept
|
{ return _M_use_count; }
|
|
|
|
template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
|
class __shared_ptr;
|
|
template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
|
class __weak_ptr;
|
|
template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
|
class __enable_shared_from_this;
|
|
template<typename _Tp>
|
class shared_ptr;
|
|
template<typename _Tp>
|
class weak_ptr;
|
|
template<typename _Tp>
|
struct owner_less;
|
|
template<typename _Tp>
|
class enable_shared_from_this;
|
|
template<_Lock_policy _Lp = __default_lock_policy>
|
class __weak_count;
|
|
template<_Lock_policy _Lp = __default_lock_policy>
|
class __shared_count;
|
|
|
|
template<typename _Ptr, _Lock_policy _Lp>
|
class _Sp_counted_ptr final : public _Sp_counted_base<_Lp>
|
{
|
public:
|
explicit
|
_Sp_counted_ptr(_Ptr __p) noexcept
|
: _M_ptr(__p) { }
|
|
virtual void
|
_M_dispose() noexcept
|
{ delete _M_ptr; }
|
|
virtual void
|
_M_destroy() noexcept
|
{ delete this; }
|
|
virtual void*
|
_M_get_deleter(const std::type_info&) noexcept
|
{ return nullptr; }
|
|
_Sp_counted_ptr(const _Sp_counted_ptr&) = delete;
|
_Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete;
|
|
private:
|
_Ptr _M_ptr;
|
};
|
|
template<>
|
inline void
|
_Sp_counted_ptr<nullptr_t, _S_single>::_M_dispose() noexcept { }
|
|
template<>
|
inline void
|
_Sp_counted_ptr<nullptr_t, _S_mutex>::_M_dispose() noexcept { }
|
|
template<>
|
inline void
|
_Sp_counted_ptr<nullptr_t, _S_atomic>::_M_dispose() noexcept { }
|
|
template<int _Nm, typename _Tp,
|
bool __use_ebo = !__is_final(_Tp) && __is_empty(_Tp)>
|
struct _Sp_ebo_helper;
|
|
|
template<int _Nm, typename _Tp>
|
struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp
|
{
|
explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { }
|
|
static _Tp&
|
_S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); }
|
};
|
|
|
template<int _Nm, typename _Tp>
|
struct _Sp_ebo_helper<_Nm, _Tp, false>
|
{
|
explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { }
|
|
static _Tp&
|
_S_get(_Sp_ebo_helper& __eboh)
|
{ return __eboh._M_tp; }
|
|
private:
|
_Tp _M_tp;
|
};
|
|
|
template<typename _Ptr, typename _Deleter, typename _Alloc, _Lock_policy _Lp>
|
class _Sp_counted_deleter final : public _Sp_counted_base<_Lp>
|
{
|
class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc>
|
{
|
typedef _Sp_ebo_helper<0, _Deleter> _Del_base;
|
typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base;
|
|
public:
|
_Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
|
: _M_ptr(__p), _Del_base(__d), _Alloc_base(__a)
|
{ }
|
|
_Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); }
|
_Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); }
|
|
_Ptr _M_ptr;
|
};
|
|
public:
|
using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>;
|
|
|
_Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept
|
: _M_impl(__p, __d, _Alloc()) { }
|
|
|
_Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept
|
: _M_impl(__p, __d, __a) { }
|
|
~_Sp_counted_deleter() noexcept { }
|
|
virtual void
|
_M_dispose() noexcept
|
{ _M_impl._M_del()(_M_impl._M_ptr); }
|
|
virtual void
|
_M_destroy() noexcept
|
{
|
__allocator_type __a(_M_impl._M_alloc());
|
__allocated_ptr<__allocator_type> __guard_ptr{ __a, this };
|
this->~_Sp_counted_deleter();
|
}
|
|
virtual void*
|
_M_get_deleter(const std::type_info& __ti) noexcept
|
{
|
|
|
|
return __ti == typeid(_Deleter)
|
? std::__addressof(_M_impl._M_del())
|
: nullptr;
|
|
|
|
}
|
|
private:
|
_Impl _M_impl;
|
};
|
|
|
|
struct _Sp_make_shared_tag { };
|
|
template<typename _Tp, typename _Alloc, _Lock_policy _Lp>
|
class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp>
|
{
|
class _Impl : _Sp_ebo_helper<0, _Alloc>
|
{
|
typedef _Sp_ebo_helper<0, _Alloc> _A_base;
|
|
public:
|
explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { }
|
|
_Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); }
|
|
__gnu_cxx::__aligned_buffer<_Tp> _M_storage;
|
};
|
|
public:
|
using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>;
|
|
template<typename... _Args>
|
_Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
|
: _M_impl(__a)
|
{
|
|
|
allocator_traits<_Alloc>::construct(__a, _M_ptr(),
|
std::forward<_Args>(__args)...);
|
}
|
|
~_Sp_counted_ptr_inplace() noexcept { }
|
|
virtual void
|
_M_dispose() noexcept
|
{
|
allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
|
}
|
|
|
virtual void
|
_M_destroy() noexcept
|
{
|
__allocator_type __a(_M_impl._M_alloc());
|
__allocated_ptr<__allocator_type> __guard_ptr{ __a, this };
|
this->~_Sp_counted_ptr_inplace();
|
}
|
|
|
virtual void*
|
_M_get_deleter(const std::type_info& __ti) noexcept
|
{
|
|
if (__ti == typeid(_Sp_make_shared_tag))
|
return const_cast<typename remove_cv<_Tp>::type*>(_M_ptr());
|
|
return nullptr;
|
}
|
|
private:
|
_Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); }
|
|
_Impl _M_impl;
|
};
|
|
|
template<_Lock_policy _Lp>
|
class __shared_count
|
{
|
public:
|
constexpr __shared_count() noexcept : _M_pi(0)
|
{ }
|
|
template<typename _Ptr>
|
explicit
|
__shared_count(_Ptr __p) : _M_pi(0)
|
{
|
try
|
{
|
_M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p);
|
}
|
catch(...)
|
{
|
delete __p;
|
throw;
|
}
|
}
|
|
template<typename _Ptr, typename _Deleter>
|
__shared_count(_Ptr __p, _Deleter __d)
|
: __shared_count(__p, std::move(__d), allocator<void>())
|
{ }
|
|
template<typename _Ptr, typename _Deleter, typename _Alloc>
|
__shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0)
|
{
|
typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type;
|
try
|
{
|
typename _Sp_cd_type::__allocator_type __a2(__a);
|
auto __guard = std::__allocate_guarded(__a2);
|
_Sp_cd_type* __mem = __guard.get();
|
::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a));
|
_M_pi = __mem;
|
__guard = nullptr;
|
}
|
catch(...)
|
{
|
__d(__p);
|
throw;
|
}
|
}
|
|
template<typename _Tp, typename _Alloc, typename... _Args>
|
__shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a,
|
_Args&&... __args)
|
: _M_pi(0)
|
{
|
typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type;
|
typename _Sp_cp_type::__allocator_type __a2(__a);
|
auto __guard = std::__allocate_guarded(__a2);
|
_Sp_cp_type* __mem = __guard.get();
|
::new (__mem) _Sp_cp_type(std::move(__a),
|
std::forward<_Args>(__args)...);
|
_M_pi = __mem;
|
__guard = nullptr;
|
}
|
|
|
|
template<typename _Tp>
|
explicit
|
__shared_count(std::auto_ptr<_Tp>&& __r);
|
|
|
|
template<typename _Tp, typename _Del>
|
explicit
|
__shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0)
|
{
|
|
|
if (__r.get() == nullptr)
|
return;
|
|
using _Ptr = typename unique_ptr<_Tp, _Del>::pointer;
|
using _Del2 = typename conditional<is_reference<_Del>::value,
|
reference_wrapper<typename remove_reference<_Del>::type>,
|
_Del>::type;
|
using _Sp_cd_type
|
= _Sp_counted_deleter<_Ptr, _Del2, allocator<void>, _Lp>;
|
using _Alloc = allocator<_Sp_cd_type>;
|
using _Alloc_traits = allocator_traits<_Alloc>;
|
_Alloc __a;
|
_Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1);
|
_Alloc_traits::construct(__a, __mem, __r.release(),
|
__r.get_deleter());
|
_M_pi = __mem;
|
}
|
|
|
explicit __shared_count(const __weak_count<_Lp>& __r);
|
|
|
explicit __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t);
|
|
~__shared_count() noexcept
|
{
|
if (_M_pi != nullptr)
|
_M_pi->_M_release();
|
}
|
|
__shared_count(const __shared_count& __r) noexcept
|
: _M_pi(__r._M_pi)
|
{
|
if (_M_pi != 0)
|
_M_pi->_M_add_ref_copy();
|
}
|
|
__shared_count&
|
operator=(const __shared_count& __r) noexcept
|
{
|
_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
|
if (__tmp != _M_pi)
|
{
|
if (__tmp != 0)
|
__tmp->_M_add_ref_copy();
|
if (_M_pi != 0)
|
_M_pi->_M_release();
|
_M_pi = __tmp;
|
}
|
return *this;
|
}
|
|
void
|
_M_swap(__shared_count& __r) noexcept
|
{
|
_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
|
__r._M_pi = _M_pi;
|
_M_pi = __tmp;
|
}
|
|
long
|
_M_get_use_count() const noexcept
|
{ return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; }
|
|
bool
|
_M_unique() const noexcept
|
{ return this->_M_get_use_count() == 1; }
|
|
void*
|
_M_get_deleter(const std::type_info& __ti) const noexcept
|
{ return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; }
|
|
bool
|
_M_less(const __shared_count& __rhs) const noexcept
|
{ return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
|
|
bool
|
_M_less(const __weak_count<_Lp>& __rhs) const noexcept
|
{ return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
|
|
|
friend inline bool
|
operator==(const __shared_count& __a, const __shared_count& __b) noexcept
|
{ return __a._M_pi == __b._M_pi; }
|
|
private:
|
friend class __weak_count<_Lp>;
|
|
_Sp_counted_base<_Lp>* _M_pi;
|
};
|
|
|
template<_Lock_policy _Lp>
|
class __weak_count
|
{
|
public:
|
constexpr __weak_count() noexcept : _M_pi(nullptr)
|
{ }
|
|
__weak_count(const __shared_count<_Lp>& __r) noexcept
|
: _M_pi(__r._M_pi)
|
{
|
if (_M_pi != nullptr)
|
_M_pi->_M_weak_add_ref();
|
}
|
|
__weak_count(const __weak_count& __r) noexcept
|
: _M_pi(__r._M_pi)
|
{
|
if (_M_pi != nullptr)
|
_M_pi->_M_weak_add_ref();
|
}
|
|
__weak_count(__weak_count&& __r) noexcept
|
: _M_pi(__r._M_pi)
|
{ __r._M_pi = nullptr; }
|
|
~__weak_count() noexcept
|
{
|
if (_M_pi != nullptr)
|
_M_pi->_M_weak_release();
|
}
|
|
__weak_count&
|
operator=(const __shared_count<_Lp>& __r) noexcept
|
{
|
_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
|
if (__tmp != nullptr)
|
__tmp->_M_weak_add_ref();
|
if (_M_pi != nullptr)
|
_M_pi->_M_weak_release();
|
_M_pi = __tmp;
|
return *this;
|
}
|
|
__weak_count&
|
operator=(const __weak_count& __r) noexcept
|
{
|
_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
|
if (__tmp != nullptr)
|
__tmp->_M_weak_add_ref();
|
if (_M_pi != nullptr)
|
_M_pi->_M_weak_release();
|
_M_pi = __tmp;
|
return *this;
|
}
|
|
__weak_count&
|
operator=(__weak_count&& __r) noexcept
|
{
|
if (_M_pi != nullptr)
|
_M_pi->_M_weak_release();
|
_M_pi = __r._M_pi;
|
__r._M_pi = nullptr;
|
return *this;
|
}
|
|
void
|
_M_swap(__weak_count& __r) noexcept
|
{
|
_Sp_counted_base<_Lp>* __tmp = __r._M_pi;
|
__r._M_pi = _M_pi;
|
_M_pi = __tmp;
|
}
|
|
long
|
_M_get_use_count() const noexcept
|
{ return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; }
|
|
bool
|
_M_less(const __weak_count& __rhs) const noexcept
|
{ return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
|
|
bool
|
_M_less(const __shared_count<_Lp>& __rhs) const noexcept
|
{ return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); }
|
|
|
friend inline bool
|
operator==(const __weak_count& __a, const __weak_count& __b) noexcept
|
{ return __a._M_pi == __b._M_pi; }
|
|
private:
|
friend class __shared_count<_Lp>;
|
|
_Sp_counted_base<_Lp>* _M_pi;
|
};
|
|
|
template<_Lock_policy _Lp>
|
inline
|
__shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r)
|
: _M_pi(__r._M_pi)
|
{
|
if (_M_pi != nullptr)
|
_M_pi->_M_add_ref_lock();
|
else
|
__throw_bad_weak_ptr();
|
}
|
|
|
template<_Lock_policy _Lp>
|
inline
|
__shared_count<_Lp>::
|
__shared_count(const __weak_count<_Lp>& __r, std::nothrow_t)
|
: _M_pi(__r._M_pi)
|
{
|
if (_M_pi != nullptr)
|
if (!_M_pi->_M_add_ref_lock_nothrow())
|
_M_pi = nullptr;
|
}
|
|
|
|
|
template<_Lock_policy _Lp, typename _Tp1, typename _Tp2>
|
void
|
__enable_shared_from_this_helper(const __shared_count<_Lp>&,
|
const __enable_shared_from_this<_Tp1,
|
_Lp>*, const _Tp2*) noexcept;
|
|
|
template<typename _Tp1, typename _Tp2>
|
void
|
__enable_shared_from_this_helper(const __shared_count<>&,
|
const enable_shared_from_this<_Tp1>*,
|
const _Tp2*) noexcept;
|
|
template<_Lock_policy _Lp>
|
inline void
|
__enable_shared_from_this_helper(const __shared_count<_Lp>&, ...) noexcept
|
{ }
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
class __shared_ptr
|
{
|
template<typename _Ptr>
|
using _Convertible
|
= typename enable_if<is_convertible<_Ptr, _Tp*>::value>::type;
|
|
public:
|
typedef _Tp element_type;
|
|
constexpr __shared_ptr() noexcept
|
: _M_ptr(0), _M_refcount()
|
{ }
|
|
template<typename _Tp1>
|
explicit __shared_ptr(_Tp1* __p)
|
: _M_ptr(__p), _M_refcount(__p)
|
{
|
|
static_assert( !is_void<_Tp1>::value, "incomplete type" );
|
static_assert( sizeof(_Tp1) > 0, "incomplete type" );
|
__enable_shared_from_this_helper(_M_refcount, __p, __p);
|
}
|
|
template<typename _Tp1, typename _Deleter>
|
__shared_ptr(_Tp1* __p, _Deleter __d)
|
: _M_ptr(__p), _M_refcount(__p, __d)
|
{
|
|
|
__enable_shared_from_this_helper(_M_refcount, __p, __p);
|
}
|
|
template<typename _Tp1, typename _Deleter, typename _Alloc>
|
__shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
|
: _M_ptr(__p), _M_refcount(__p, __d, std::move(__a))
|
{
|
|
|
__enable_shared_from_this_helper(_M_refcount, __p, __p);
|
}
|
|
template<typename _Deleter>
|
__shared_ptr(nullptr_t __p, _Deleter __d)
|
: _M_ptr(0), _M_refcount(__p, __d)
|
{ }
|
|
template<typename _Deleter, typename _Alloc>
|
__shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
|
: _M_ptr(0), _M_refcount(__p, __d, std::move(__a))
|
{ }
|
|
template<typename _Tp1>
|
__shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, _Tp* __p) noexcept
|
: _M_ptr(__p), _M_refcount(__r._M_refcount)
|
{ }
|
|
__shared_ptr(const __shared_ptr&) noexcept = default;
|
__shared_ptr& operator=(const __shared_ptr&) noexcept = default;
|
~__shared_ptr() = default;
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
__shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
: _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount)
|
{ }
|
|
__shared_ptr(__shared_ptr&& __r) noexcept
|
: _M_ptr(__r._M_ptr), _M_refcount()
|
{
|
_M_refcount._M_swap(__r._M_refcount);
|
__r._M_ptr = 0;
|
}
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
__shared_ptr(__shared_ptr<_Tp1, _Lp>&& __r) noexcept
|
: _M_ptr(__r._M_ptr), _M_refcount()
|
{
|
_M_refcount._M_swap(__r._M_refcount);
|
__r._M_ptr = 0;
|
}
|
|
template<typename _Tp1>
|
explicit __shared_ptr(const __weak_ptr<_Tp1, _Lp>& __r)
|
: _M_refcount(__r._M_refcount)
|
{
|
|
|
|
|
_M_ptr = __r._M_ptr;
|
}
|
|
|
template<typename _Tp1, typename _Del, typename
|
= _Convertible<typename unique_ptr<_Tp1, _Del>::pointer>>
|
__shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
|
: _M_ptr(__r.get()), _M_refcount()
|
{
|
|
auto __raw = _S_raw_ptr(__r.get());
|
_M_refcount = __shared_count<_Lp>(std::move(__r));
|
__enable_shared_from_this_helper(_M_refcount, __raw, __raw);
|
}
|
|
|
|
template<typename _Tp1>
|
__shared_ptr(std::auto_ptr<_Tp1>&& __r);
|
|
|
constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { }
|
|
template<typename _Tp1>
|
__shared_ptr&
|
operator=(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
{
|
_M_ptr = __r._M_ptr;
|
_M_refcount = __r._M_refcount;
|
return *this;
|
}
|
|
|
template<typename _Tp1>
|
__shared_ptr&
|
operator=(std::auto_ptr<_Tp1>&& __r)
|
{
|
__shared_ptr(std::move(__r)).swap(*this);
|
return *this;
|
}
|
|
|
__shared_ptr&
|
operator=(__shared_ptr&& __r) noexcept
|
{
|
__shared_ptr(std::move(__r)).swap(*this);
|
return *this;
|
}
|
|
template<class _Tp1>
|
__shared_ptr&
|
operator=(__shared_ptr<_Tp1, _Lp>&& __r) noexcept
|
{
|
__shared_ptr(std::move(__r)).swap(*this);
|
return *this;
|
}
|
|
template<typename _Tp1, typename _Del>
|
__shared_ptr&
|
operator=(std::unique_ptr<_Tp1, _Del>&& __r)
|
{
|
__shared_ptr(std::move(__r)).swap(*this);
|
return *this;
|
}
|
|
void
|
reset() noexcept
|
{ __shared_ptr().swap(*this); }
|
|
template<typename _Tp1>
|
void
|
reset(_Tp1* __p)
|
{
|
|
;
|
__shared_ptr(__p).swap(*this);
|
}
|
|
template<typename _Tp1, typename _Deleter>
|
void
|
reset(_Tp1* __p, _Deleter __d)
|
{ __shared_ptr(__p, __d).swap(*this); }
|
|
template<typename _Tp1, typename _Deleter, typename _Alloc>
|
void
|
reset(_Tp1* __p, _Deleter __d, _Alloc __a)
|
{ __shared_ptr(__p, __d, std::move(__a)).swap(*this); }
|
|
|
typename std::add_lvalue_reference<_Tp>::type
|
operator*() const noexcept
|
{
|
;
|
return *_M_ptr;
|
}
|
|
_Tp*
|
operator->() const noexcept
|
{
|
;
|
return _M_ptr;
|
}
|
|
_Tp*
|
get() const noexcept
|
{ return _M_ptr; }
|
|
explicit operator bool() const
|
{ return _M_ptr == 0 ? false : true; }
|
|
bool
|
unique() const noexcept
|
{ return _M_refcount._M_unique(); }
|
|
long
|
use_count() const noexcept
|
{ return _M_refcount._M_get_use_count(); }
|
|
void
|
swap(__shared_ptr<_Tp, _Lp>& __other) noexcept
|
{
|
std::swap(_M_ptr, __other._M_ptr);
|
_M_refcount._M_swap(__other._M_refcount);
|
}
|
|
template<typename _Tp1>
|
bool
|
owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const
|
{ return _M_refcount._M_less(__rhs._M_refcount); }
|
|
template<typename _Tp1>
|
bool
|
owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const
|
{ return _M_refcount._M_less(__rhs._M_refcount); }
|
|
|
protected:
|
|
template<typename _Alloc, typename... _Args>
|
__shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
|
_Args&&... __args)
|
: _M_ptr(), _M_refcount(__tag, (_Tp*)0, __a,
|
std::forward<_Args>(__args)...)
|
{
|
|
|
void* __p = _M_refcount._M_get_deleter(typeid(__tag));
|
_M_ptr = static_cast<_Tp*>(__p);
|
__enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr);
|
}
|
# 1142 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h" 3
|
template<typename _Tp1, _Lock_policy _Lp1, typename _Alloc,
|
typename... _Args>
|
friend __shared_ptr<_Tp1, _Lp1>
|
__allocate_shared(const _Alloc& __a, _Args&&... __args);
|
|
|
|
__shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t)
|
: _M_refcount(__r._M_refcount, std::nothrow)
|
{
|
_M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr;
|
}
|
|
friend class __weak_ptr<_Tp, _Lp>;
|
|
private:
|
void*
|
_M_get_deleter(const std::type_info& __ti) const noexcept
|
{ return _M_refcount._M_get_deleter(__ti); }
|
|
template<typename _Tp1>
|
static _Tp1*
|
_S_raw_ptr(_Tp1* __ptr)
|
{ return __ptr; }
|
|
template<typename _Tp1>
|
static auto
|
_S_raw_ptr(_Tp1 __ptr) -> decltype(std::__addressof(*__ptr))
|
{ return std::__addressof(*__ptr); }
|
|
template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
|
template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
|
|
template<typename _Del, typename _Tp1, _Lock_policy _Lp1>
|
friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept;
|
|
_Tp* _M_ptr;
|
__shared_count<_Lp> _M_refcount;
|
};
|
|
|
|
template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
|
inline bool
|
operator==(const __shared_ptr<_Tp1, _Lp>& __a,
|
const __shared_ptr<_Tp2, _Lp>& __b) noexcept
|
{ return __a.get() == __b.get(); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
|
{ return !__a; }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
|
{ return !__a; }
|
|
template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
|
inline bool
|
operator!=(const __shared_ptr<_Tp1, _Lp>& __a,
|
const __shared_ptr<_Tp2, _Lp>& __b) noexcept
|
{ return __a.get() != __b.get(); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
|
{ return (bool)__a; }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
|
{ return (bool)__a; }
|
|
template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
|
inline bool
|
operator<(const __shared_ptr<_Tp1, _Lp>& __a,
|
const __shared_ptr<_Tp2, _Lp>& __b) noexcept
|
{
|
typedef typename std::common_type<_Tp1*, _Tp2*>::type _CT;
|
return std::less<_CT>()(__a.get(), __b.get());
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
|
{ return std::less<_Tp*>()(__a.get(), nullptr); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
|
{ return std::less<_Tp*>()(nullptr, __a.get()); }
|
|
template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
|
inline bool
|
operator<=(const __shared_ptr<_Tp1, _Lp>& __a,
|
const __shared_ptr<_Tp2, _Lp>& __b) noexcept
|
{ return !(__b < __a); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
|
{ return !(nullptr < __a); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
|
{ return !(__a < nullptr); }
|
|
template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
|
inline bool
|
operator>(const __shared_ptr<_Tp1, _Lp>& __a,
|
const __shared_ptr<_Tp2, _Lp>& __b) noexcept
|
{ return (__b < __a); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
|
{ return std::less<_Tp*>()(nullptr, __a.get()); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
|
{ return std::less<_Tp*>()(__a.get(), nullptr); }
|
|
template<typename _Tp1, typename _Tp2, _Lock_policy _Lp>
|
inline bool
|
operator>=(const __shared_ptr<_Tp1, _Lp>& __a,
|
const __shared_ptr<_Tp2, _Lp>& __b) noexcept
|
{ return !(__a < __b); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept
|
{ return !(__a < nullptr); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept
|
{ return !(nullptr < __a); }
|
|
template<typename _Sp>
|
struct _Sp_less : public binary_function<_Sp, _Sp, bool>
|
{
|
bool
|
operator()(const _Sp& __lhs, const _Sp& __rhs) const noexcept
|
{
|
typedef typename _Sp::element_type element_type;
|
return std::less<element_type*>()(__lhs.get(), __rhs.get());
|
}
|
};
|
|
template<typename _Tp, _Lock_policy _Lp>
|
struct less<__shared_ptr<_Tp, _Lp>>
|
: public _Sp_less<__shared_ptr<_Tp, _Lp>>
|
{ };
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline void
|
swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept
|
{ __a.swap(__b); }
|
# 1312 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h" 3
|
template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
{ return __shared_ptr<_Tp, _Lp>(__r, static_cast<_Tp*>(__r.get())); }
|
|
|
|
|
|
|
template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
{ return __shared_ptr<_Tp, _Lp>(__r, const_cast<_Tp*>(__r.get())); }
|
|
|
|
|
|
|
template<typename _Tp, typename _Tp1, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
{
|
if (_Tp* __p = dynamic_cast<_Tp*>(__r.get()))
|
return __shared_ptr<_Tp, _Lp>(__r, __p);
|
return __shared_ptr<_Tp, _Lp>();
|
}
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
class __weak_ptr
|
{
|
template<typename _Ptr>
|
using _Convertible
|
= typename enable_if<is_convertible<_Ptr, _Tp*>::value>::type;
|
|
public:
|
typedef _Tp element_type;
|
|
constexpr __weak_ptr() noexcept
|
: _M_ptr(nullptr), _M_refcount()
|
{ }
|
|
__weak_ptr(const __weak_ptr&) noexcept = default;
|
|
~__weak_ptr() = default;
|
# 1374 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_base.h" 3
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
__weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) noexcept
|
: _M_refcount(__r._M_refcount)
|
{ _M_ptr = __r.lock().get(); }
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
__weak_ptr(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
: _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount)
|
{ }
|
|
__weak_ptr(__weak_ptr&& __r) noexcept
|
: _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount))
|
{ __r._M_ptr = nullptr; }
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
__weak_ptr(__weak_ptr<_Tp1, _Lp>&& __r) noexcept
|
: _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount))
|
{ __r._M_ptr = nullptr; }
|
|
__weak_ptr&
|
operator=(const __weak_ptr& __r) noexcept = default;
|
|
template<typename _Tp1>
|
__weak_ptr&
|
operator=(const __weak_ptr<_Tp1, _Lp>& __r) noexcept
|
{
|
_M_ptr = __r.lock().get();
|
_M_refcount = __r._M_refcount;
|
return *this;
|
}
|
|
template<typename _Tp1>
|
__weak_ptr&
|
operator=(const __shared_ptr<_Tp1, _Lp>& __r) noexcept
|
{
|
_M_ptr = __r._M_ptr;
|
_M_refcount = __r._M_refcount;
|
return *this;
|
}
|
|
__weak_ptr&
|
operator=(__weak_ptr&& __r) noexcept
|
{
|
_M_ptr = __r._M_ptr;
|
_M_refcount = std::move(__r._M_refcount);
|
__r._M_ptr = nullptr;
|
return *this;
|
}
|
|
template<typename _Tp1>
|
__weak_ptr&
|
operator=(__weak_ptr<_Tp1, _Lp>&& __r) noexcept
|
{
|
_M_ptr = __r.lock().get();
|
_M_refcount = std::move(__r._M_refcount);
|
__r._M_ptr = nullptr;
|
return *this;
|
}
|
|
__shared_ptr<_Tp, _Lp>
|
lock() const noexcept
|
{ return __shared_ptr<element_type, _Lp>(*this, std::nothrow); }
|
|
long
|
use_count() const noexcept
|
{ return _M_refcount._M_get_use_count(); }
|
|
bool
|
expired() const noexcept
|
{ return _M_refcount._M_get_use_count() == 0; }
|
|
template<typename _Tp1>
|
bool
|
owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const
|
{ return _M_refcount._M_less(__rhs._M_refcount); }
|
|
template<typename _Tp1>
|
bool
|
owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const
|
{ return _M_refcount._M_less(__rhs._M_refcount); }
|
|
void
|
reset() noexcept
|
{ __weak_ptr().swap(*this); }
|
|
void
|
swap(__weak_ptr& __s) noexcept
|
{
|
std::swap(_M_ptr, __s._M_ptr);
|
_M_refcount._M_swap(__s._M_refcount);
|
}
|
|
private:
|
|
void
|
_M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept
|
{
|
if (use_count() == 0)
|
{
|
_M_ptr = __ptr;
|
_M_refcount = __refcount;
|
}
|
}
|
|
template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr;
|
template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
|
friend class __enable_shared_from_this<_Tp, _Lp>;
|
friend class enable_shared_from_this<_Tp>;
|
|
_Tp* _M_ptr;
|
__weak_count<_Lp> _M_refcount;
|
};
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline void
|
swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept
|
{ __a.swap(__b); }
|
|
template<typename _Tp, typename _Tp1>
|
struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool>
|
{
|
bool
|
operator()(const _Tp& __lhs, const _Tp& __rhs) const
|
{ return __lhs.owner_before(__rhs); }
|
|
bool
|
operator()(const _Tp& __lhs, const _Tp1& __rhs) const
|
{ return __lhs.owner_before(__rhs); }
|
|
bool
|
operator()(const _Tp1& __lhs, const _Tp& __rhs) const
|
{ return __lhs.owner_before(__rhs); }
|
};
|
|
template<typename _Tp, _Lock_policy _Lp>
|
struct owner_less<__shared_ptr<_Tp, _Lp>>
|
: public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>>
|
{ };
|
|
template<typename _Tp, _Lock_policy _Lp>
|
struct owner_less<__weak_ptr<_Tp, _Lp>>
|
: public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>>
|
{ };
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
class __enable_shared_from_this
|
{
|
protected:
|
constexpr __enable_shared_from_this() noexcept { }
|
|
__enable_shared_from_this(const __enable_shared_from_this&) noexcept { }
|
|
__enable_shared_from_this&
|
operator=(const __enable_shared_from_this&) noexcept
|
{ return *this; }
|
|
~__enable_shared_from_this() { }
|
|
public:
|
__shared_ptr<_Tp, _Lp>
|
shared_from_this()
|
{ return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); }
|
|
__shared_ptr<const _Tp, _Lp>
|
shared_from_this() const
|
{ return __shared_ptr<const _Tp, _Lp>(this->_M_weak_this); }
|
|
private:
|
template<typename _Tp1>
|
void
|
_M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept
|
{ _M_weak_this._M_assign(__p, __n); }
|
|
template<_Lock_policy _Lp1, typename _Tp1, typename _Tp2>
|
friend void
|
__enable_shared_from_this_helper(const __shared_count<_Lp1>&,
|
const __enable_shared_from_this<_Tp1,
|
_Lp1>*, const _Tp2*) noexcept;
|
|
mutable __weak_ptr<_Tp, _Lp> _M_weak_this;
|
};
|
|
template<_Lock_policy _Lp1, typename _Tp1, typename _Tp2>
|
inline void
|
__enable_shared_from_this_helper(const __shared_count<_Lp1>& __pn,
|
const __enable_shared_from_this<_Tp1,
|
_Lp1>* __pe,
|
const _Tp2* __px) noexcept
|
{
|
if (__pe != nullptr)
|
__pe->_M_weak_assign(const_cast<_Tp2*>(__px), __pn);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp, typename _Alloc, typename... _Args>
|
inline __shared_ptr<_Tp, _Lp>
|
__allocate_shared(const _Alloc& __a, _Args&&... __args)
|
{
|
return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(), __a,
|
std::forward<_Args>(__args)...);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp, typename... _Args>
|
inline __shared_ptr<_Tp, _Lp>
|
__make_shared(_Args&&... __args)
|
{
|
typedef typename std::remove_const<_Tp>::type _Tp_nc;
|
return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(),
|
std::forward<_Args>(__args)...);
|
}
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
struct hash<__shared_ptr<_Tp, _Lp>>
|
: public __hash_base<size_t, __shared_ptr<_Tp, _Lp>>
|
{
|
size_t
|
operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept
|
{ return std::hash<_Tp*>()(__s.get()); }
|
};
|
|
|
}
|
# 53 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 64 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Ch, typename _Tr, typename _Tp, _Lock_policy _Lp>
|
inline std::basic_ostream<_Ch, _Tr>&
|
operator<<(std::basic_ostream<_Ch, _Tr>& __os,
|
const __shared_ptr<_Tp, _Lp>& __p)
|
{
|
__os << __p.get();
|
return __os;
|
}
|
|
|
template<typename _Del, typename _Tp, _Lock_policy _Lp>
|
inline _Del*
|
get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept
|
{
|
|
return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del)));
|
|
|
|
}
|
# 92 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp>
|
class shared_ptr : public __shared_ptr<_Tp>
|
{
|
template<typename _Ptr>
|
using _Convertible
|
= typename enable_if<is_convertible<_Ptr, _Tp*>::value>::type;
|
|
public:
|
|
|
|
|
constexpr shared_ptr() noexcept
|
: __shared_ptr<_Tp>() { }
|
|
shared_ptr(const shared_ptr&) noexcept = default;
|
|
|
|
|
|
|
|
template<typename _Tp1>
|
explicit shared_ptr(_Tp1* __p)
|
: __shared_ptr<_Tp>(__p) { }
|
# 132 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp1, typename _Deleter>
|
shared_ptr(_Tp1* __p, _Deleter __d)
|
: __shared_ptr<_Tp>(__p, __d) { }
|
# 149 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Deleter>
|
shared_ptr(nullptr_t __p, _Deleter __d)
|
: __shared_ptr<_Tp>(__p, __d) { }
|
# 168 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp1, typename _Deleter, typename _Alloc>
|
shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a)
|
: __shared_ptr<_Tp>(__p, __d, std::move(__a)) { }
|
# 187 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Deleter, typename _Alloc>
|
shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a)
|
: __shared_ptr<_Tp>(__p, __d, std::move(__a)) { }
|
# 209 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp1>
|
shared_ptr(const shared_ptr<_Tp1>& __r, _Tp* __p) noexcept
|
: __shared_ptr<_Tp>(__r, __p) { }
|
# 220 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
shared_ptr(const shared_ptr<_Tp1>& __r) noexcept
|
: __shared_ptr<_Tp>(__r) { }
|
|
|
|
|
|
|
shared_ptr(shared_ptr&& __r) noexcept
|
: __shared_ptr<_Tp>(std::move(__r)) { }
|
|
|
|
|
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
shared_ptr(shared_ptr<_Tp1>&& __r) noexcept
|
: __shared_ptr<_Tp>(std::move(__r)) { }
|
# 249 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp1>
|
explicit shared_ptr(const weak_ptr<_Tp1>& __r)
|
: __shared_ptr<_Tp>(__r) { }
|
|
|
template<typename _Tp1>
|
shared_ptr(std::auto_ptr<_Tp1>&& __r);
|
|
|
|
|
template<typename _Tp1, typename _Del, typename
|
= _Convertible<typename unique_ptr<_Tp1, _Del>::pointer>>
|
shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r)
|
: __shared_ptr<_Tp>(std::move(__r)) { }
|
|
|
|
|
|
constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { }
|
|
shared_ptr& operator=(const shared_ptr&) noexcept = default;
|
|
template<typename _Tp1>
|
shared_ptr&
|
operator=(const shared_ptr<_Tp1>& __r) noexcept
|
{
|
this->__shared_ptr<_Tp>::operator=(__r);
|
return *this;
|
}
|
|
|
template<typename _Tp1>
|
shared_ptr&
|
operator=(std::auto_ptr<_Tp1>&& __r)
|
{
|
this->__shared_ptr<_Tp>::operator=(std::move(__r));
|
return *this;
|
}
|
|
|
shared_ptr&
|
operator=(shared_ptr&& __r) noexcept
|
{
|
this->__shared_ptr<_Tp>::operator=(std::move(__r));
|
return *this;
|
}
|
|
template<class _Tp1>
|
shared_ptr&
|
operator=(shared_ptr<_Tp1>&& __r) noexcept
|
{
|
this->__shared_ptr<_Tp>::operator=(std::move(__r));
|
return *this;
|
}
|
|
template<typename _Tp1, typename _Del>
|
shared_ptr&
|
operator=(std::unique_ptr<_Tp1, _Del>&& __r)
|
{
|
this->__shared_ptr<_Tp>::operator=(std::move(__r));
|
return *this;
|
}
|
|
private:
|
|
template<typename _Alloc, typename... _Args>
|
shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a,
|
_Args&&... __args)
|
: __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...)
|
{ }
|
|
template<typename _Tp1, typename _Alloc, typename... _Args>
|
friend shared_ptr<_Tp1>
|
allocate_shared(const _Alloc& __a, _Args&&... __args);
|
|
|
shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t)
|
: __shared_ptr<_Tp>(__r, std::nothrow) { }
|
|
friend class weak_ptr<_Tp>;
|
};
|
|
|
template<typename _Tp1, typename _Tp2>
|
inline bool
|
operator==(const shared_ptr<_Tp1>& __a,
|
const shared_ptr<_Tp2>& __b) noexcept
|
{ return __a.get() == __b.get(); }
|
|
template<typename _Tp>
|
inline bool
|
operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
|
{ return !__a; }
|
|
template<typename _Tp>
|
inline bool
|
operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
|
{ return !__a; }
|
|
template<typename _Tp1, typename _Tp2>
|
inline bool
|
operator!=(const shared_ptr<_Tp1>& __a,
|
const shared_ptr<_Tp2>& __b) noexcept
|
{ return __a.get() != __b.get(); }
|
|
template<typename _Tp>
|
inline bool
|
operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
|
{ return (bool)__a; }
|
|
template<typename _Tp>
|
inline bool
|
operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
|
{ return (bool)__a; }
|
|
template<typename _Tp1, typename _Tp2>
|
inline bool
|
operator<(const shared_ptr<_Tp1>& __a,
|
const shared_ptr<_Tp2>& __b) noexcept
|
{
|
typedef typename std::common_type<_Tp1*, _Tp2*>::type _CT;
|
return std::less<_CT>()(__a.get(), __b.get());
|
}
|
|
template<typename _Tp>
|
inline bool
|
operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
|
{ return std::less<_Tp*>()(__a.get(), nullptr); }
|
|
template<typename _Tp>
|
inline bool
|
operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
|
{ return std::less<_Tp*>()(nullptr, __a.get()); }
|
|
template<typename _Tp1, typename _Tp2>
|
inline bool
|
operator<=(const shared_ptr<_Tp1>& __a,
|
const shared_ptr<_Tp2>& __b) noexcept
|
{ return !(__b < __a); }
|
|
template<typename _Tp>
|
inline bool
|
operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
|
{ return !(nullptr < __a); }
|
|
template<typename _Tp>
|
inline bool
|
operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
|
{ return !(__a < nullptr); }
|
|
template<typename _Tp1, typename _Tp2>
|
inline bool
|
operator>(const shared_ptr<_Tp1>& __a,
|
const shared_ptr<_Tp2>& __b) noexcept
|
{ return (__b < __a); }
|
|
template<typename _Tp>
|
inline bool
|
operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
|
{ return std::less<_Tp*>()(nullptr, __a.get()); }
|
|
template<typename _Tp>
|
inline bool
|
operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
|
{ return std::less<_Tp*>()(__a.get(), nullptr); }
|
|
template<typename _Tp1, typename _Tp2>
|
inline bool
|
operator>=(const shared_ptr<_Tp1>& __a,
|
const shared_ptr<_Tp2>& __b) noexcept
|
{ return !(__a < __b); }
|
|
template<typename _Tp>
|
inline bool
|
operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept
|
{ return !(__a < nullptr); }
|
|
template<typename _Tp>
|
inline bool
|
operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
|
{ return !(nullptr < __a); }
|
|
template<typename _Tp>
|
struct less<shared_ptr<_Tp>> : public _Sp_less<shared_ptr<_Tp>>
|
{ };
|
|
|
template<typename _Tp>
|
inline void
|
swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept
|
{ __a.swap(__b); }
|
|
|
template<typename _Tp, typename _Tp1>
|
inline shared_ptr<_Tp>
|
static_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept
|
{ return shared_ptr<_Tp>(__r, static_cast<_Tp*>(__r.get())); }
|
|
template<typename _Tp, typename _Tp1>
|
inline shared_ptr<_Tp>
|
const_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept
|
{ return shared_ptr<_Tp>(__r, const_cast<_Tp*>(__r.get())); }
|
|
template<typename _Tp, typename _Tp1>
|
inline shared_ptr<_Tp>
|
dynamic_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept
|
{
|
if (_Tp* __p = dynamic_cast<_Tp*>(__r.get()))
|
return shared_ptr<_Tp>(__r, __p);
|
return shared_ptr<_Tp>();
|
}
|
|
|
|
|
|
|
|
template<typename _Tp>
|
class weak_ptr : public __weak_ptr<_Tp>
|
{
|
template<typename _Ptr>
|
using _Convertible
|
= typename enable_if<is_convertible<_Ptr, _Tp*>::value>::type;
|
|
public:
|
constexpr weak_ptr() noexcept = default;
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
weak_ptr(const shared_ptr<_Tp1>& __r) noexcept
|
: __weak_ptr<_Tp>(__r) { }
|
|
weak_ptr(const weak_ptr&) noexcept = default;
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
weak_ptr(const weak_ptr<_Tp1>& __r) noexcept
|
: __weak_ptr<_Tp>(__r) { }
|
|
weak_ptr(weak_ptr&&) noexcept = default;
|
|
template<typename _Tp1, typename = _Convertible<_Tp1*>>
|
weak_ptr(weak_ptr<_Tp1>&& __r) noexcept
|
: __weak_ptr<_Tp>(std::move(__r)) { }
|
|
weak_ptr&
|
operator=(const weak_ptr& __r) noexcept = default;
|
|
template<typename _Tp1>
|
weak_ptr&
|
operator=(const weak_ptr<_Tp1>& __r) noexcept
|
{
|
this->__weak_ptr<_Tp>::operator=(__r);
|
return *this;
|
}
|
|
template<typename _Tp1>
|
weak_ptr&
|
operator=(const shared_ptr<_Tp1>& __r) noexcept
|
{
|
this->__weak_ptr<_Tp>::operator=(__r);
|
return *this;
|
}
|
|
weak_ptr&
|
operator=(weak_ptr&& __r) noexcept = default;
|
|
template<typename _Tp1>
|
weak_ptr&
|
operator=(weak_ptr<_Tp1>&& __r) noexcept
|
{
|
this->__weak_ptr<_Tp>::operator=(std::move(__r));
|
return *this;
|
}
|
|
shared_ptr<_Tp>
|
lock() const noexcept
|
{ return shared_ptr<_Tp>(*this, std::nothrow); }
|
};
|
|
|
template<typename _Tp>
|
inline void
|
swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept
|
{ __a.swap(__b); }
|
|
|
|
template<typename _Tp>
|
struct owner_less;
|
|
|
template<typename _Tp>
|
struct owner_less<shared_ptr<_Tp>>
|
: public _Sp_owner_less<shared_ptr<_Tp>, weak_ptr<_Tp>>
|
{ };
|
|
|
template<typename _Tp>
|
struct owner_less<weak_ptr<_Tp>>
|
: public _Sp_owner_less<weak_ptr<_Tp>, shared_ptr<_Tp>>
|
{ };
|
|
|
|
|
template<typename _Tp>
|
class enable_shared_from_this
|
{
|
protected:
|
constexpr enable_shared_from_this() noexcept { }
|
|
enable_shared_from_this(const enable_shared_from_this&) noexcept { }
|
|
enable_shared_from_this&
|
operator=(const enable_shared_from_this&) noexcept
|
{ return *this; }
|
|
~enable_shared_from_this() { }
|
|
public:
|
shared_ptr<_Tp>
|
shared_from_this()
|
{ return shared_ptr<_Tp>(this->_M_weak_this); }
|
|
shared_ptr<const _Tp>
|
shared_from_this() const
|
{ return shared_ptr<const _Tp>(this->_M_weak_this); }
|
|
private:
|
template<typename _Tp1>
|
void
|
_M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept
|
{ _M_weak_this._M_assign(__p, __n); }
|
|
template<typename _Tp1, typename _Tp2>
|
friend void
|
__enable_shared_from_this_helper(const __shared_count<>&,
|
const enable_shared_from_this<_Tp1>*,
|
const _Tp2*) noexcept;
|
|
mutable weak_ptr<_Tp> _M_weak_this;
|
};
|
|
template<typename _Tp1, typename _Tp2>
|
inline void
|
__enable_shared_from_this_helper(const __shared_count<>& __pn,
|
const enable_shared_from_this<_Tp1>*
|
__pe, const _Tp2* __px) noexcept
|
{
|
if (__pe != nullptr)
|
__pe->_M_weak_assign(const_cast<_Tp2*>(__px), __pn);
|
}
|
# 615 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp, typename _Alloc, typename... _Args>
|
inline shared_ptr<_Tp>
|
allocate_shared(const _Alloc& __a, _Args&&... __args)
|
{
|
return shared_ptr<_Tp>(_Sp_make_shared_tag(), __a,
|
std::forward<_Args>(__args)...);
|
}
|
# 630 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr.h" 3
|
template<typename _Tp, typename... _Args>
|
inline shared_ptr<_Tp>
|
make_shared(_Args&&... __args)
|
{
|
typedef typename std::remove_const<_Tp>::type _Tp_nc;
|
return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(),
|
std::forward<_Args>(__args)...);
|
}
|
|
|
template<typename _Tp>
|
struct hash<shared_ptr<_Tp>>
|
: public __hash_base<size_t, shared_ptr<_Tp>>
|
{
|
size_t
|
operator()(const shared_ptr<_Tp>& __s) const noexcept
|
{ return std::hash<_Tp*>()(__s.get()); }
|
};
|
|
|
|
|
}
|
# 83 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 1 3
|
# 33 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 3
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_base.h" 1 3
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_base.h" 3
|
|
|
# 1 "/usr/lib/llvm-3.9/bin/../lib/clang/3.9.1/include/stdint.h" 1 3
|
# 37 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_base.h" 2 3
|
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 55 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_base.h" 3
|
typedef enum memory_order
|
{
|
memory_order_relaxed,
|
memory_order_consume,
|
memory_order_acquire,
|
memory_order_release,
|
memory_order_acq_rel,
|
memory_order_seq_cst
|
} memory_order;
|
|
enum __memory_order_modifier
|
{
|
__memory_order_mask = 0x0ffff,
|
__memory_order_modifier_mask = 0xffff0000,
|
__memory_order_hle_acquire = 0x10000,
|
__memory_order_hle_release = 0x20000
|
};
|
|
constexpr memory_order
|
operator|(memory_order __m, __memory_order_modifier __mod)
|
{
|
return memory_order(__m | int(__mod));
|
}
|
|
constexpr memory_order
|
operator&(memory_order __m, __memory_order_modifier __mod)
|
{
|
return memory_order(__m & int(__mod));
|
}
|
|
|
constexpr memory_order
|
__cmpexch_failure_order2(memory_order __m) noexcept
|
{
|
return __m == memory_order_acq_rel ? memory_order_acquire
|
: __m == memory_order_release ? memory_order_relaxed : __m;
|
}
|
|
constexpr memory_order
|
__cmpexch_failure_order(memory_order __m) noexcept
|
{
|
return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask)
|
| (__m & __memory_order_modifier_mask));
|
}
|
|
inline __attribute__((__always_inline__)) void
|
atomic_thread_fence(memory_order __m) noexcept
|
{ __atomic_thread_fence(__m); }
|
|
inline __attribute__((__always_inline__)) void
|
atomic_signal_fence(memory_order __m) noexcept
|
{ __atomic_signal_fence(__m); }
|
|
|
template<typename _Tp>
|
inline _Tp
|
kill_dependency(_Tp __y) noexcept
|
{
|
_Tp __ret(__y);
|
return __ret;
|
}
|
|
|
|
template<typename _IntTp>
|
struct __atomic_base;
|
|
|
|
|
template<typename _Tp>
|
struct atomic;
|
|
template<typename _Tp>
|
struct atomic<_Tp*>;
|
|
|
|
typedef bool __atomic_flag_data_type;
|
# 148 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_base.h" 3
|
extern "C" {
|
|
struct __atomic_flag_base
|
{
|
__atomic_flag_data_type _M_i;
|
};
|
|
}
|
|
|
|
|
struct atomic_flag : public __atomic_flag_base
|
{
|
atomic_flag() noexcept = default;
|
~atomic_flag() noexcept = default;
|
atomic_flag(const atomic_flag&) = delete;
|
atomic_flag& operator=(const atomic_flag&) = delete;
|
atomic_flag& operator=(const atomic_flag&) volatile = delete;
|
|
|
constexpr atomic_flag(bool __i) noexcept
|
: __atomic_flag_base{ _S_init(__i) }
|
{ }
|
|
inline __attribute__((__always_inline__)) bool
|
test_and_set(memory_order __m = memory_order_seq_cst) noexcept
|
{
|
return __atomic_test_and_set (&_M_i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
return __atomic_test_and_set (&_M_i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) void
|
clear(memory_order __m = memory_order_seq_cst) noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
;
|
|
__atomic_clear (&_M_i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) void
|
clear(memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
;
|
|
__atomic_clear (&_M_i, __m);
|
}
|
|
private:
|
static constexpr __atomic_flag_data_type
|
_S_init(bool __i)
|
{ return __i ? 1 : 0; }
|
};
|
# 237 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/atomic_base.h" 3
|
template<typename _ITp>
|
struct __atomic_base
|
{
|
private:
|
typedef _ITp __int_type;
|
|
static constexpr int _S_alignment =
|
sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp);
|
|
alignas(_S_alignment) __int_type _M_i;
|
|
public:
|
__atomic_base() noexcept = default;
|
~__atomic_base() noexcept = default;
|
__atomic_base(const __atomic_base&) = delete;
|
__atomic_base& operator=(const __atomic_base&) = delete;
|
__atomic_base& operator=(const __atomic_base&) volatile = delete;
|
|
|
constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { }
|
|
operator __int_type() const noexcept
|
{ return load(); }
|
|
operator __int_type() const volatile noexcept
|
{ return load(); }
|
|
__int_type
|
operator=(__int_type __i) noexcept
|
{
|
store(__i);
|
return __i;
|
}
|
|
__int_type
|
operator=(__int_type __i) volatile noexcept
|
{
|
store(__i);
|
return __i;
|
}
|
|
__int_type
|
operator++(int) noexcept
|
{ return fetch_add(1); }
|
|
__int_type
|
operator++(int) volatile noexcept
|
{ return fetch_add(1); }
|
|
__int_type
|
operator--(int) noexcept
|
{ return fetch_sub(1); }
|
|
__int_type
|
operator--(int) volatile noexcept
|
{ return fetch_sub(1); }
|
|
__int_type
|
operator++() noexcept
|
{ return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); }
|
|
__int_type
|
operator++() volatile noexcept
|
{ return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); }
|
|
__int_type
|
operator--() noexcept
|
{ return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); }
|
|
__int_type
|
operator--() volatile noexcept
|
{ return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); }
|
|
__int_type
|
operator+=(__int_type __i) noexcept
|
{ return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator+=(__int_type __i) volatile noexcept
|
{ return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator-=(__int_type __i) noexcept
|
{ return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator-=(__int_type __i) volatile noexcept
|
{ return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator&=(__int_type __i) noexcept
|
{ return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator&=(__int_type __i) volatile noexcept
|
{ return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator|=(__int_type __i) noexcept
|
{ return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator|=(__int_type __i) volatile noexcept
|
{ return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator^=(__int_type __i) noexcept
|
{ return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
__int_type
|
operator^=(__int_type __i) volatile noexcept
|
{ return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); }
|
|
bool
|
is_lock_free() const noexcept
|
{
|
|
return __atomic_is_lock_free(sizeof(_M_i),
|
reinterpret_cast<void *>(-__alignof(_M_i)));
|
}
|
|
bool
|
is_lock_free() const volatile noexcept
|
{
|
|
return __atomic_is_lock_free(sizeof(_M_i),
|
reinterpret_cast<void *>(-__alignof(_M_i)));
|
}
|
|
inline __attribute__((__always_inline__)) void
|
store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
;
|
|
__atomic_store_n(&_M_i, __i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) void
|
store(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
;
|
|
__atomic_store_n(&_M_i, __i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) __int_type
|
load(memory_order __m = memory_order_seq_cst) const noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
|
return __atomic_load_n(&_M_i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) __int_type
|
load(memory_order __m = memory_order_seq_cst) const volatile noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
|
return __atomic_load_n(&_M_i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) __int_type
|
exchange(__int_type __i,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{
|
return __atomic_exchange_n(&_M_i, __i, __m);
|
}
|
|
|
inline __attribute__((__always_inline__)) __int_type
|
exchange(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
return __atomic_exchange_n(&_M_i, __i, __m);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_weak(__int_type& __i1, __int_type __i2,
|
memory_order __m1, memory_order __m2) noexcept
|
{
|
memory_order __b2 = __m2 & __memory_order_mask;
|
memory_order __b1 = __m1 & __memory_order_mask;
|
;
|
;
|
;
|
|
return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_weak(__int_type& __i1, __int_type __i2,
|
memory_order __m1,
|
memory_order __m2) volatile noexcept
|
{
|
memory_order __b2 = __m2 & __memory_order_mask;
|
memory_order __b1 = __m1 & __memory_order_mask;
|
;
|
;
|
;
|
|
return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_weak(__int_type& __i1, __int_type __i2,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{
|
return compare_exchange_weak(__i1, __i2, __m,
|
__cmpexch_failure_order(__m));
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_weak(__int_type& __i1, __int_type __i2,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
return compare_exchange_weak(__i1, __i2, __m,
|
__cmpexch_failure_order(__m));
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_strong(__int_type& __i1, __int_type __i2,
|
memory_order __m1, memory_order __m2) noexcept
|
{
|
memory_order __b2 = __m2 & __memory_order_mask;
|
memory_order __b1 = __m1 & __memory_order_mask;
|
;
|
;
|
;
|
|
return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_strong(__int_type& __i1, __int_type __i2,
|
memory_order __m1,
|
memory_order __m2) volatile noexcept
|
{
|
memory_order __b2 = __m2 & __memory_order_mask;
|
memory_order __b1 = __m1 & __memory_order_mask;
|
|
;
|
;
|
;
|
|
return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_strong(__int_type& __i1, __int_type __i2,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{
|
return compare_exchange_strong(__i1, __i2, __m,
|
__cmpexch_failure_order(__m));
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_strong(__int_type& __i1, __int_type __i2,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
return compare_exchange_strong(__i1, __i2, __m,
|
__cmpexch_failure_order(__m));
|
}
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_add(__int_type __i,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_add(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_add(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_add(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_sub(__int_type __i,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_sub(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_sub(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_sub(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_and(__int_type __i,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_and(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_and(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_and(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_or(__int_type __i,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_or(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_or(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_or(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_xor(__int_type __i,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_xor(&_M_i, __i, __m); }
|
|
inline __attribute__((__always_inline__)) __int_type
|
fetch_xor(__int_type __i,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_xor(&_M_i, __i, __m); }
|
};
|
|
|
|
template<typename _PTp>
|
struct __atomic_base<_PTp*>
|
{
|
private:
|
typedef _PTp* __pointer_type;
|
|
__pointer_type _M_p;
|
|
|
constexpr ptrdiff_t
|
_M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); }
|
|
constexpr ptrdiff_t
|
_M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); }
|
|
public:
|
__atomic_base() noexcept = default;
|
~__atomic_base() noexcept = default;
|
__atomic_base(const __atomic_base&) = delete;
|
__atomic_base& operator=(const __atomic_base&) = delete;
|
__atomic_base& operator=(const __atomic_base&) volatile = delete;
|
|
|
constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { }
|
|
operator __pointer_type() const noexcept
|
{ return load(); }
|
|
operator __pointer_type() const volatile noexcept
|
{ return load(); }
|
|
__pointer_type
|
operator=(__pointer_type __p) noexcept
|
{
|
store(__p);
|
return __p;
|
}
|
|
__pointer_type
|
operator=(__pointer_type __p) volatile noexcept
|
{
|
store(__p);
|
return __p;
|
}
|
|
__pointer_type
|
operator++(int) noexcept
|
{ return fetch_add(1); }
|
|
__pointer_type
|
operator++(int) volatile noexcept
|
{ return fetch_add(1); }
|
|
__pointer_type
|
operator--(int) noexcept
|
{ return fetch_sub(1); }
|
|
__pointer_type
|
operator--(int) volatile noexcept
|
{ return fetch_sub(1); }
|
|
__pointer_type
|
operator++() noexcept
|
{ return __atomic_add_fetch(&_M_p, _M_type_size(1),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator++() volatile noexcept
|
{ return __atomic_add_fetch(&_M_p, _M_type_size(1),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator--() noexcept
|
{ return __atomic_sub_fetch(&_M_p, _M_type_size(1),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator--() volatile noexcept
|
{ return __atomic_sub_fetch(&_M_p, _M_type_size(1),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator+=(ptrdiff_t __d) noexcept
|
{ return __atomic_add_fetch(&_M_p, _M_type_size(__d),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator+=(ptrdiff_t __d) volatile noexcept
|
{ return __atomic_add_fetch(&_M_p, _M_type_size(__d),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator-=(ptrdiff_t __d) noexcept
|
{ return __atomic_sub_fetch(&_M_p, _M_type_size(__d),
|
memory_order_seq_cst); }
|
|
__pointer_type
|
operator-=(ptrdiff_t __d) volatile noexcept
|
{ return __atomic_sub_fetch(&_M_p, _M_type_size(__d),
|
memory_order_seq_cst); }
|
|
bool
|
is_lock_free() const noexcept
|
{
|
|
return __atomic_is_lock_free(sizeof(_M_p),
|
reinterpret_cast<void *>(-__alignof(_M_p)));
|
}
|
|
bool
|
is_lock_free() const volatile noexcept
|
{
|
|
return __atomic_is_lock_free(sizeof(_M_p),
|
reinterpret_cast<void *>(-__alignof(_M_p)));
|
}
|
|
inline __attribute__((__always_inline__)) void
|
store(__pointer_type __p,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
|
;
|
;
|
;
|
|
__atomic_store_n(&_M_p, __p, __m);
|
}
|
|
inline __attribute__((__always_inline__)) void
|
store(__pointer_type __p,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
;
|
|
__atomic_store_n(&_M_p, __p, __m);
|
}
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
load(memory_order __m = memory_order_seq_cst) const noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
|
return __atomic_load_n(&_M_p, __m);
|
}
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
load(memory_order __m = memory_order_seq_cst) const volatile noexcept
|
{
|
memory_order __b = __m & __memory_order_mask;
|
;
|
;
|
|
return __atomic_load_n(&_M_p, __m);
|
}
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
exchange(__pointer_type __p,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{
|
return __atomic_exchange_n(&_M_p, __p, __m);
|
}
|
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
exchange(__pointer_type __p,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{
|
return __atomic_exchange_n(&_M_p, __p, __m);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
|
memory_order __m1,
|
memory_order __m2) noexcept
|
{
|
memory_order __b2 = __m2 & __memory_order_mask;
|
memory_order __b1 = __m1 & __memory_order_mask;
|
;
|
;
|
;
|
|
return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2);
|
}
|
|
inline __attribute__((__always_inline__)) bool
|
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
|
memory_order __m1,
|
memory_order __m2) volatile noexcept
|
{
|
memory_order __b2 = __m2 & __memory_order_mask;
|
memory_order __b1 = __m1 & __memory_order_mask;
|
|
;
|
;
|
;
|
|
return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2);
|
}
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
fetch_add(ptrdiff_t __d,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); }
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
fetch_add(ptrdiff_t __d,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); }
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
fetch_sub(ptrdiff_t __d,
|
memory_order __m = memory_order_seq_cst) noexcept
|
{ return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); }
|
|
inline __attribute__((__always_inline__)) __pointer_type
|
fetch_sub(ptrdiff_t __d,
|
memory_order __m = memory_order_seq_cst) volatile noexcept
|
{ return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); }
|
};
|
|
|
|
|
}
|
# 34 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 2 3
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
|
|
|
|
|
|
|
struct _Sp_locker
|
{
|
_Sp_locker(const _Sp_locker&) = delete;
|
_Sp_locker& operator=(const _Sp_locker&) = delete;
|
|
|
explicit
|
_Sp_locker(const void*) noexcept;
|
_Sp_locker(const void*, const void*) noexcept;
|
~_Sp_locker();
|
|
private:
|
unsigned char _M_key1;
|
unsigned char _M_key2;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p)
|
{
|
|
return __gthread_active_p() == 0;
|
|
|
|
}
|
|
template<typename _Tp>
|
inline bool
|
atomic_is_lock_free(const shared_ptr<_Tp>* __p)
|
{ return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); }
|
# 96 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 3
|
template<typename _Tp>
|
inline shared_ptr<_Tp>
|
atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order)
|
{
|
_Sp_locker __lock{__p};
|
return *__p;
|
}
|
|
template<typename _Tp>
|
inline shared_ptr<_Tp>
|
atomic_load(const shared_ptr<_Tp>* __p)
|
{ return std::atomic_load_explicit(__p, memory_order_seq_cst); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order)
|
{
|
_Sp_locker __lock{__p};
|
return *__p;
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
atomic_load(const __shared_ptr<_Tp, _Lp>* __p)
|
{ return std::atomic_load_explicit(__p, memory_order_seq_cst); }
|
# 132 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 3
|
template<typename _Tp>
|
inline void
|
atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r,
|
memory_order)
|
{
|
_Sp_locker __lock{__p};
|
__p->swap(__r);
|
}
|
|
template<typename _Tp>
|
inline void
|
atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)
|
{ std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline void
|
atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p,
|
__shared_ptr<_Tp, _Lp> __r,
|
memory_order)
|
{
|
_Sp_locker __lock{__p};
|
__p->swap(__r);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline void
|
atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
|
{ std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
|
# 169 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 3
|
template<typename _Tp>
|
inline shared_ptr<_Tp>
|
atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r,
|
memory_order)
|
{
|
_Sp_locker __lock{__p};
|
__p->swap(__r);
|
return __r;
|
}
|
|
template<typename _Tp>
|
inline shared_ptr<_Tp>
|
atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)
|
{
|
return std::atomic_exchange_explicit(__p, std::move(__r),
|
memory_order_seq_cst);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p,
|
__shared_ptr<_Tp, _Lp> __r,
|
memory_order)
|
{
|
_Sp_locker __lock{__p};
|
__p->swap(__r);
|
return __r;
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline __shared_ptr<_Tp, _Lp>
|
atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
|
{
|
return std::atomic_exchange_explicit(__p, std::move(__r),
|
memory_order_seq_cst);
|
}
|
# 218 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/bits/shared_ptr_atomic.h" 3
|
template<typename _Tp>
|
bool
|
atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p,
|
shared_ptr<_Tp>* __v,
|
shared_ptr<_Tp> __w,
|
memory_order,
|
memory_order)
|
{
|
shared_ptr<_Tp> __x;
|
_Sp_locker __lock{__p, __v};
|
owner_less<shared_ptr<_Tp>> __less;
|
if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p))
|
{
|
__x = std::move(*__p);
|
*__p = std::move(__w);
|
return true;
|
}
|
__x = std::move(*__v);
|
*__v = *__p;
|
return false;
|
}
|
|
template<typename _Tp>
|
inline bool
|
atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
|
shared_ptr<_Tp> __w)
|
{
|
return std::atomic_compare_exchange_strong_explicit(__p, __v,
|
std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
|
}
|
|
template<typename _Tp>
|
inline bool
|
atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p,
|
shared_ptr<_Tp>* __v,
|
shared_ptr<_Tp> __w,
|
memory_order __success,
|
memory_order __failure)
|
{
|
return std::atomic_compare_exchange_strong_explicit(__p, __v,
|
std::move(__w), __success, __failure);
|
}
|
|
template<typename _Tp>
|
inline bool
|
atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,
|
shared_ptr<_Tp> __w)
|
{
|
return std::atomic_compare_exchange_weak_explicit(__p, __v,
|
std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
bool
|
atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p,
|
__shared_ptr<_Tp, _Lp>* __v,
|
__shared_ptr<_Tp, _Lp> __w,
|
memory_order,
|
memory_order)
|
{
|
__shared_ptr<_Tp, _Lp> __x;
|
_Sp_locker __lock{__p, __v};
|
owner_less<__shared_ptr<_Tp, _Lp>> __less;
|
if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p))
|
{
|
__x = std::move(*__p);
|
*__p = std::move(__w);
|
return true;
|
}
|
__x = std::move(*__v);
|
*__v = *__p;
|
return false;
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p,
|
__shared_ptr<_Tp, _Lp>* __v,
|
__shared_ptr<_Tp, _Lp> __w)
|
{
|
return std::atomic_compare_exchange_strong_explicit(__p, __v,
|
std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p,
|
__shared_ptr<_Tp, _Lp>* __v,
|
__shared_ptr<_Tp, _Lp> __w,
|
memory_order __success,
|
memory_order __failure)
|
{
|
return std::atomic_compare_exchange_strong_explicit(__p, __v,
|
std::move(__w), __success, __failure);
|
}
|
|
template<typename _Tp, _Lock_policy _Lp>
|
inline bool
|
atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p,
|
__shared_ptr<_Tp, _Lp>* __v,
|
__shared_ptr<_Tp, _Lp> __w)
|
{
|
return std::atomic_compare_exchange_weak_explicit(__p, __v,
|
std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
|
}
|
|
|
|
|
|
}
|
# 84 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
|
# 1 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 1 3
|
# 36 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 47 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
template<typename _Tp1>
|
struct auto_ptr_ref
|
{
|
_Tp1* _M_ptr;
|
|
explicit
|
auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }
|
} __attribute__ ((__deprecated__));
|
# 86 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { }
|
# 124 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
template<typename _Tp1>
|
auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { }
|
# 135 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
auto_ptr&
|
operator=(auto_ptr& __a) throw()
|
{
|
reset(__a.release());
|
return *this;
|
}
|
# 152 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
template<typename _Tp1>
|
auto_ptr&
|
operator=(auto_ptr<_Tp1>& __a) throw()
|
{
|
reset(__a.release());
|
return *this;
|
}
|
# 170 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
~auto_ptr() { delete _M_ptr; }
|
# 180 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
element_type&
|
operator*() const throw()
|
{
|
;
|
return *_M_ptr;
|
}
|
|
|
|
|
|
|
|
element_type*
|
operator->() const throw()
|
{
|
;
|
return _M_ptr;
|
}
|
# 210 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
element_type*
|
get() const throw() { return _M_ptr; }
|
# 224 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
element_type*
|
release() throw()
|
{
|
element_type* __tmp = _M_ptr;
|
_M_ptr = 0;
|
return __tmp;
|
}
|
# 239 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/backward/auto_ptr.h" 3
|
void
|
reset(element_type* __p = 0) throw()
|
{
|
if (__p != _M_ptr)
|
{
|
delete _M_ptr;
|
_M_ptr = __p;
|
}
|
}
|
# 260 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/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()); }
|
} __attribute__ ((__deprecated__));
|
|
|
|
template<>
|
class auto_ptr<void>
|
{
|
public:
|
typedef void element_type;
|
} __attribute__ ((__deprecated__));
|
|
|
template<_Lock_policy _Lp>
|
template<typename _Tp>
|
inline
|
__shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r)
|
: _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get()))
|
{ __r.release(); }
|
|
template<typename _Tp, _Lock_policy _Lp>
|
template<typename _Tp1>
|
inline
|
__shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r)
|
: _M_ptr(__r.get()), _M_refcount()
|
{
|
|
static_assert( sizeof(_Tp1) > 0, "incomplete type" );
|
_Tp1* __tmp = __r.get();
|
_M_refcount = __shared_count<_Lp>(std::move(__r));
|
__enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
|
}
|
|
template<typename _Tp>
|
template<typename _Tp1>
|
inline
|
shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r)
|
: __shared_ptr<_Tp>(std::move(__r)) { }
|
|
template<typename _Tp, typename _Dp>
|
template<typename _Up, typename>
|
inline
|
unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept
|
: _M_t(__u.release(), deleter_type()) { }
|
|
|
|
}
|
# 86 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 2 3
|
|
|
|
|
|
|
|
|
namespace std __attribute__ ((__visibility__ ("default")))
|
{
|
# 114 "/usr/bin/../lib/gcc/arm-linux-gnueabihf/6.3.0/../../../../include/c++/6.3.0/memory" 3
|
inline void*
|
align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept
|
{
|
const auto __intptr = reinterpret_cast<uintptr_t>(__ptr);
|
const auto __aligned = (__intptr - 1u + __align) & -__align;
|
const auto __diff = __aligned - __intptr;
|
if ((__size + __diff) > __space)
|
return nullptr;
|
else
|
{
|
__space -= __diff;
|
return __ptr = reinterpret_cast<void*>(__aligned);
|
}
|
}
|
|
|
|
enum class pointer_safety { relaxed, preferred, strict };
|
|
inline void
|
declare_reachable(void*) { }
|
|
template <typename _Tp>
|
inline _Tp*
|
undeclare_reachable(_Tp* __p) { return __p; }
|
|
inline void
|
declare_no_pointers(char*, size_t) { }
|
|
inline void
|
undeclare_no_pointers(char*, size_t) { }
|
|
inline pointer_safety
|
get_pointer_safety() noexcept { return pointer_safety::relaxed; }
|
|
|
}
|
# 6 "./libraries/Scope/Scope.h" 2
|
|
|
|
|
|
|
class WSServer;
|
class JSONValue;
|
|
class AuxTaskRT;
|
|
|
|
|
|
|
|
class Scope{
|
public:
|
typedef enum {
|
AUTO,
|
NORMAL,
|
CUSTOM,
|
} TriggerMode;
|
typedef enum {
|
POSITIVE,
|
NEGATIVE,
|
BOTH,
|
} TriggerSlope;
|
|
Scope();
|
Scope(unsigned int numChannels, float sampleRate);
|
~Scope();
|
# 51 "./libraries/Scope/Scope.h"
|
void setup(unsigned int numChannels, float sampleRate);
|
|
void cleanup();
|
|
|
|
|
|
|
|
void log(double chn1, ...);
|
# 71 "./libraries/Scope/Scope.h"
|
void log(const float* values);
|
|
|
|
|
|
|
|
bool trigger();
|
|
|
|
|
void setTrigger(TriggerMode mode, unsigned int channel = 0, TriggerSlope dir = BOTH, float level = 0);
|
|
private:
|
typedef enum {
|
TIME_DOMAIN,
|
FREQ_DOMAIN,
|
} PlotMode;
|
void dealloc();
|
void start();
|
void stop();
|
void triggerTimeDomain();
|
void triggerFFT();
|
bool triggered();
|
bool prelog();
|
void postlog();
|
void setPlotMode();
|
void doFFT();
|
void setXParams();
|
void scope_control_connected();
|
void scope_control_data(const char* data);
|
void parse_settings(JSONValue* value);
|
|
bool volatile isUsingOutBuffer;
|
bool volatile isUsingBuffer;
|
bool volatile isResizing;
|
|
|
int numChannels;
|
float sampleRate;
|
int pixelWidth;
|
int frameWidth;
|
PlotMode plotMode = TIME_DOMAIN;
|
TriggerMode triggerMode;
|
unsigned int triggerChannel;
|
TriggerSlope triggerDir;
|
float triggerLevel;
|
int xOffset;
|
int xOffsetSamples;
|
int upSampling;
|
int downSampling;
|
float holdOff;
|
|
int logCount;
|
|
int channelWidth;
|
int downSampleCount;
|
int holdOffSamples;
|
|
|
std::vector<float> buffer;
|
std::vector<float> outBuffer;
|
|
|
int writePointer;
|
int readPointer;
|
int triggerPointer;
|
int customTriggerPointer;
|
|
|
bool triggerPrimed;
|
bool triggerCollecting;
|
bool triggerWaiting;
|
int triggerCount;
|
int autoTriggerCount;
|
bool started;
|
bool customTriggered;
|
|
|
int FFTLength;
|
int newFFTLength;
|
float FFTScale;
|
float FFTLogOffset;
|
int pointerFFT;
|
bool collectingFFT;
|
float *windowFFT;
|
int FFTXAxis;
|
int FFTYAxis;
|
|
ne10_fft_cpx_float32_t* inFFT;
|
ne10_fft_cpx_float32_t* outFFT;
|
ne10_fft_cfg_float32_t cfg;
|
|
std::unique_ptr<AuxTaskRT> scopeTriggerTask;
|
void triggerTask();
|
|
void setSetting(std::wstring setting, float value);
|
|
std::unique_ptr<WSServer> ws_server;
|
|
std::map<std::wstring, float> settings;
|
};
|
# 51 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp" 2
|
# 1 "./libraries/PulseIn/PulseIn.h" 1
|
# 12 "./libraries/PulseIn/PulseIn.h"
|
class PulseIn {
|
private:
|
std::vector<int> _array;
|
int _pulseOnState;
|
int _digitalInput;
|
bool _pulseIsOn;
|
uint64_t _pulseStart;
|
uint64_t _lastContext;
|
public:
|
PulseIn(){
|
_digitalInput = -1;
|
};
|
# 34 "./libraries/PulseIn/PulseIn.h"
|
PulseIn(BelaContext* context, unsigned int digitalInput, int direction=1){
|
setup(context, digitalInput, direction);
|
};
|
# 49 "./libraries/PulseIn/PulseIn.h"
|
void setup(BelaContext* context, unsigned int digitalInput, int direction=1);
|
# 61 "./libraries/PulseIn/PulseIn.h"
|
void check(BelaContext* context);
|
# 70 "./libraries/PulseIn/PulseIn.h"
|
int hasPulsed(BelaContext* context, unsigned int frame){
|
if(_lastContext != context->audioFramesElapsed){
|
check(context);
|
}
|
return _array[frame];
|
}
|
void cleanup();
|
virtual ~PulseIn();
|
};
|
# 52 "/root/Bela/projects/my_ultrasonic_ranger2/render.cpp" 2
|
|
PulseIn pulseIn;
|
Scope scope;
|
int gTriggerInterval = 2646;
|
int gMinPulseLength = 7;
|
float gRescale = 58;
|
unsigned int gTrigDigitalOutPin = 7;
|
unsigned int gEchoDigitalInPin = 7;
|
int gTriggerCount = 0;
|
int gPrintfCount = 0;
|
|
bool setup(BelaContext *context, void *userData)
|
{
|
|
|
|
pulseIn.setup(context, gEchoDigitalInPin, HIGH);
|
scope.setup(2, context->digitalSampleRate);
|
return true;
|
}
|
|
void render(BelaContext *context, void *userData)
|
{
|
for(unsigned int n = 0; n < context->digitalFrames; ++n){
|
gTriggerCount++;
|
bool state;
|
if(gTriggerCount == gTriggerInterval){
|
pinMode(context, 0, gTrigDigitalOutPin, OUTPUT);
|
state = LOW;
|
digitalWriteOnce(context, n, gTrigDigitalOutPin, state);
|
} else if (gTriggerCount == gTriggerInterval+1) {
|
pinMode(context, 0, gTrigDigitalOutPin, OUTPUT);
|
state = HIGH;
|
digitalWriteOnce(context, n, gTrigDigitalOutPin, state);
|
} else if (gTriggerCount == gTriggerInterval+2) {
|
gTriggerCount = 0;
|
state = LOW;
|
digitalWriteOnce(context, n, gTrigDigitalOutPin, state);
|
} else {
|
pinMode(context, 0, gTrigDigitalOutPin, INPUT);
|
}
|
|
auto dRead = digitalRead(context, n, gEchoDigitalInPin);
|
int pulseLength = pulseIn.hasPulsed(context, n);
|
|
float duration = 1e6 * pulseLength / context->digitalSampleRate;
|
|
static float distance = 0;
|
if(pulseLength >= gMinPulseLength){
|
|
distance = duration / gRescale;
|
}
|
static int count = 0;
|
if(count > 5000){
|
rt_printf("pulseLength: %d, distance: %fcm\n", pulseLength, distance);
|
count = 0;
|
}
|
++count;
|
|
scope.log(dRead * 0.5, distance/100);
|
}
|
}
|
|
void cleanup(BelaContext *context, void *userData)
|
{
|
}
|