Created
July 28, 2020 08:32
-
-
Save leonklingele/0fcc86c47d98e42ae7df7be0e6836e46 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang++ -DBINDIR=L"/usr/local/Cellar/fish/3.1.2/bin" -DCMAKE_BINARY_DIR="/private/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2" -DCMAKE_SOURCE_DIR="/private/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2" -DDATADIR=L"/usr/local/Cellar/fish/3.1.2/share" -DDOCDIR=L"/usr/local/Cellar/fish/3.1.2/share/doc/fish" -DLOCALEDIR="/usr/local/Cellar/fish/3.1.2/share/locale" -DPREFIX=L"/usr/local/Cellar/fish/3.1.2" -DSYSCONFDIR=L"/usr/local/Cellar/fish/3.1.2/etc" -D_REENTRANT -D_UNICODE=1 -I/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2 -I/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/pcre2-10.32 -Wall -Wextra -Wno-implicit-fallthrough -Wno-comment -Wno-address -Wno-strict-aliasing -Wno-redundant-move -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9 -fno-exceptions -std=gnu++11 /tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp -E | pbcopy | |
$ pbpaste | |
# 1 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" | |
# 1 "<built-in>" 1 | |
# 1 "<built-in>" 3 | |
# 353 "<built-in>" 3 | |
# 1 "<command line>" 1 | |
# 1 "<built-in>" 2 | |
# 1 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/config.h" 1 | |
# 6 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 1 3 4 | |
# 64 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types.h" 1 3 4 | |
# 27 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/cdefs.h" 1 3 4 | |
# 587 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/cdefs.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_symbol_aliasing.h" 1 3 4 | |
# 588 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/cdefs.h" 2 3 4 | |
# 653 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/cdefs.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_posix_availability.h" 1 3 4 | |
# 654 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/cdefs.h" 2 3 4 | |
# 33 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/_types.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/_types.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_types.h" 1 3 4 | |
# 37 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_types.h" 3 4 | |
typedef signed char __int8_t; | |
typedef unsigned char __uint8_t; | |
typedef short __int16_t; | |
typedef unsigned short __uint16_t; | |
typedef int __int32_t; | |
typedef unsigned int __uint32_t; | |
typedef long long __int64_t; | |
typedef unsigned long long __uint64_t; | |
typedef long __darwin_intptr_t; | |
typedef unsigned int __darwin_natural_t; | |
# 70 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_types.h" 3 4 | |
typedef int __darwin_ct_rune_t; | |
typedef union { | |
char __mbstate8[128]; | |
long long _mbstateL; | |
} __mbstate_t; | |
typedef __mbstate_t __darwin_mbstate_t; | |
typedef long int __darwin_ptrdiff_t; | |
typedef long unsigned int __darwin_size_t; | |
typedef __builtin_va_list __darwin_va_list; | |
typedef int __darwin_wchar_t; | |
typedef __darwin_wchar_t __darwin_rune_t; | |
typedef int __darwin_wint_t; | |
typedef unsigned long __darwin_clock_t; | |
typedef __uint32_t __darwin_socklen_t; | |
typedef long __darwin_ssize_t; | |
typedef long __darwin_time_t; | |
# 33 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/_types.h" 2 3 4 | |
# 34 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h" 2 3 4 | |
# 55 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h" 3 4 | |
typedef __int64_t __darwin_blkcnt_t; | |
typedef __int32_t __darwin_blksize_t; | |
typedef __int32_t __darwin_dev_t; | |
typedef unsigned int __darwin_fsblkcnt_t; | |
typedef unsigned int __darwin_fsfilcnt_t; | |
typedef __uint32_t __darwin_gid_t; | |
typedef __uint32_t __darwin_id_t; | |
typedef __uint64_t __darwin_ino64_t; | |
typedef __darwin_ino64_t __darwin_ino_t; | |
typedef __darwin_natural_t __darwin_mach_port_name_t; | |
typedef __darwin_mach_port_name_t __darwin_mach_port_t; | |
typedef __uint16_t __darwin_mode_t; | |
typedef __int64_t __darwin_off_t; | |
typedef __int32_t __darwin_pid_t; | |
typedef __uint32_t __darwin_sigset_t; | |
typedef __int32_t __darwin_suseconds_t; | |
typedef __uint32_t __darwin_uid_t; | |
typedef __uint32_t __darwin_useconds_t; | |
typedef unsigned char __darwin_uuid_t[16]; | |
typedef char __darwin_uuid_string_t[37]; | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_types.h" 1 3 4 | |
# 57 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_types.h" 3 4 | |
struct __darwin_pthread_handler_rec { | |
void (*__routine)(void *); | |
void *__arg; | |
struct __darwin_pthread_handler_rec *__next; | |
}; | |
struct _opaque_pthread_attr_t { | |
long __sig; | |
char __opaque[56]; | |
}; | |
struct _opaque_pthread_cond_t { | |
long __sig; | |
char __opaque[40]; | |
}; | |
struct _opaque_pthread_condattr_t { | |
long __sig; | |
char __opaque[8]; | |
}; | |
struct _opaque_pthread_mutex_t { | |
long __sig; | |
char __opaque[56]; | |
}; | |
struct _opaque_pthread_mutexattr_t { | |
long __sig; | |
char __opaque[8]; | |
}; | |
struct _opaque_pthread_once_t { | |
long __sig; | |
char __opaque[8]; | |
}; | |
struct _opaque_pthread_rwlock_t { | |
long __sig; | |
char __opaque[192]; | |
}; | |
struct _opaque_pthread_rwlockattr_t { | |
long __sig; | |
char __opaque[16]; | |
}; | |
struct _opaque_pthread_t { | |
long __sig; | |
struct __darwin_pthread_handler_rec *__cleanup_stack; | |
char __opaque[8176]; | |
}; | |
typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t; | |
typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t; | |
typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t; | |
typedef unsigned long __darwin_pthread_key_t; | |
typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t; | |
typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t; | |
typedef struct _opaque_pthread_once_t __darwin_pthread_once_t; | |
typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t; | |
typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t; | |
typedef struct _opaque_pthread_t *__darwin_pthread_t; | |
# 81 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types.h" 2 3 4 | |
# 28 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types.h" 2 3 4 | |
# 39 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types.h" 3 4 | |
typedef int __darwin_nl_item; | |
typedef int __darwin_wctrans_t; | |
typedef __uint32_t __darwin_wctype_t; | |
# 65 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/dirent.h" 1 3 4 | |
# 81 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/dirent.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ino_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ino_t.h" 3 4 | |
typedef __darwin_ino_t ino_t; | |
# 82 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/dirent.h" 2 3 4 | |
#pragma pack(4) | |
# 98 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/dirent.h" 3 4 | |
#pragma pack() | |
# 112 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/dirent.h" 3 4 | |
struct dirent { __uint64_t d_ino; __uint64_t d_seekoff; __uint16_t d_reclen; __uint16_t d_namlen; __uint8_t d_type; char d_name[1024]; }; | |
# 66 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/Availability.h" 1 3 4 | |
# 184 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/Availability.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/AvailabilityInternal.h" 1 3 4 | |
# 185 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/Availability.h" 2 3 4 | |
# 68 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 2 3 4 | |
struct _telldir; | |
typedef struct { | |
int __dd_fd; | |
long __dd_loc; | |
long __dd_size; | |
char *__dd_buf; | |
int __dd_len; | |
long __dd_seek; | |
long __dd_rewind; | |
int __dd_flags; | |
__darwin_pthread_mutex_t __dd_lock; | |
struct _telldir *__dd_td; | |
} DIR; | |
# 100 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 3 4 | |
extern "C" { | |
int closedir(DIR *) __asm("_" "closedir" ); | |
DIR *opendir(const char *) __asm("_" "opendir" "$INODE64" ); | |
struct dirent *readdir(DIR *) __asm("_" "readdir" "$INODE64"); | |
int readdir_r(DIR *, struct dirent *, struct dirent **) __asm("_" "readdir_r" "$INODE64"); | |
void rewinddir(DIR *) __asm("_" "rewinddir" "$INODE64" ); | |
void seekdir(DIR *, long) __asm("_" "seekdir" "$INODE64" ); | |
long telldir(DIR *) __asm("_" "telldir" "$INODE64" ); | |
} | |
extern "C" { | |
__attribute__((availability(macosx,introduced=10.10))) | |
DIR *fdopendir(int) __asm("_" "fdopendir" "$INODE64" ); | |
int alphasort(const struct dirent **, const struct dirent **) __asm("_" "alphasort" "$INODE64"); | |
# 143 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/dirent.h" 3 4 | |
int dirfd(DIR *dirp) __attribute__((availability(macosx,introduced=10.8))); | |
int scandir(const char *, struct dirent ***, | |
int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **)) __asm("_" "scandir" "$INODE64"); | |
int scandir_b(const char *, struct dirent ***, | |
int (^)(const struct dirent *), int (^)(const struct dirent **, const struct dirent **)) __asm("_" "scandir_b" "$INODE64") __attribute__((availability(macosx,introduced=10.6))); | |
} | |
extern "C" { | |
int getdirentries(int, char *, int, long *) | |
__asm("_getdirentries_is_not_available_when_64_bit_inodes_are_in_effect") | |
; | |
DIR *__opendir2(const char *, int) __asm("_" "__opendir2" "$INODE64" ); | |
} | |
# 9 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 1 3 4 | |
# 57 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/pthread_impl.h" 1 3 4 | |
# 58 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/sched.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/sched.h" 3 4 | |
extern "C" { | |
struct sched_param { int sched_priority; char __opaque[4]; }; | |
extern int sched_yield(void); | |
extern int sched_get_priority_min(int); | |
extern int sched_get_priority_max(int); | |
} | |
# 60 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 1 3 4 | |
# 68 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_clock_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_clock_t.h" 3 4 | |
typedef __darwin_clock_t clock_t; | |
# 69 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_null.h" 1 3 4 | |
# 70 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_size_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_size_t.h" 3 4 | |
typedef __darwin_size_t size_t; | |
# 71 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_time_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_time_t.h" 3 4 | |
typedef __darwin_time_t time_t; | |
# 72 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_timespec.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_timespec.h" 3 4 | |
struct timespec | |
{ | |
__darwin_time_t tv_sec; | |
long tv_nsec; | |
}; | |
# 73 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 2 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 tm_gmtoff; | |
char *tm_zone; | |
}; | |
# 97 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 3 4 | |
extern char *tzname[]; | |
extern int getdate_err; | |
extern long timezone __asm("_" "timezone" ); | |
extern int daylight; | |
extern "C" { | |
char *asctime(const struct tm *); | |
clock_t clock(void) __asm("_" "clock" ); | |
char *ctime(const time_t *); | |
double difftime(time_t, time_t); | |
struct tm *getdate(const char *); | |
struct tm *gmtime(const time_t *); | |
struct tm *localtime(const time_t *); | |
time_t mktime(struct tm *) __asm("_" "mktime" ); | |
size_t strftime(char * , size_t, const char * , const struct tm * ) __asm("_" "strftime" ); | |
char *strptime(const char * , const char * , struct tm * ) __asm("_" "strptime" ); | |
time_t time(time_t *); | |
void tzset(void); | |
char *asctime_r(const struct tm * , char * ); | |
char *ctime_r(const time_t *, char *); | |
struct tm *gmtime_r(const time_t * , struct tm * ); | |
struct tm *localtime_r(const time_t * , struct tm * ); | |
time_t posix2time(time_t); | |
void tzsetwall(void); | |
time_t time2posix(time_t); | |
time_t timelocal(struct tm * const); | |
time_t timegm(struct tm * const); | |
int nanosleep(const struct timespec *__rqtp, struct timespec *__rmtp) __asm("_" "nanosleep" ); | |
# 152 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/time.h" 3 4 | |
typedef enum { | |
_CLOCK_REALTIME __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 0, | |
_CLOCK_MONOTONIC __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 6, | |
_CLOCK_MONOTONIC_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 4, | |
_CLOCK_MONOTONIC_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 5, | |
_CLOCK_UPTIME_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 8, | |
_CLOCK_UPTIME_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 9, | |
_CLOCK_PROCESS_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 12, | |
_CLOCK_THREAD_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 16 | |
} clockid_t; | |
__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) | |
int clock_getres(clockid_t __clock_id, struct timespec *__res); | |
__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) | |
int clock_gettime(clockid_t __clock_id, struct timespec *__tp); | |
__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) | |
__uint64_t clock_gettime_nsec_np(clockid_t __clock_id); | |
__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable))) | |
__attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) | |
int clock_settime(clockid_t __clock_id, const struct timespec *__tp); | |
} | |
# 61 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_attr_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_attr_t.h" 3 4 | |
typedef __darwin_pthread_attr_t pthread_attr_t; | |
# 63 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_cond_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_cond_t.h" 3 4 | |
typedef __darwin_pthread_cond_t pthread_cond_t; | |
# 64 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h" 3 4 | |
typedef __darwin_pthread_condattr_t pthread_condattr_t; | |
# 65 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_key_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_key_t.h" 3 4 | |
typedef __darwin_pthread_key_t pthread_key_t; | |
# 66 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h" 3 4 | |
typedef __darwin_pthread_mutex_t pthread_mutex_t; | |
# 67 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h" 3 4 | |
typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t; | |
# 68 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_once_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_once_t.h" 3 4 | |
typedef __darwin_pthread_once_t pthread_once_t; | |
# 69 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h" 3 4 | |
typedef __darwin_pthread_rwlock_t pthread_rwlock_t; | |
# 70 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h" 3 4 | |
typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t; | |
# 71 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_pthread/_pthread_t.h" 3 4 | |
typedef __darwin_pthread_t pthread_t; | |
# 72 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/qos.h" 1 3 4 | |
# 128 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/qos.h" 3 4 | |
typedef enum : unsigned int { QOS_CLASS_USER_INTERACTIVE __attribute__((availability(macosx,introduced=10.10))) = 0x21, QOS_CLASS_USER_INITIATED __attribute__((availability(macosx,introduced=10.10))) = 0x19, QOS_CLASS_DEFAULT __attribute__((availability(macosx,introduced=10.10))) = 0x15, QOS_CLASS_UTILITY __attribute__((availability(macosx,introduced=10.10))) = 0x11, QOS_CLASS_BACKGROUND __attribute__((availability(macosx,introduced=10.10))) = 0x09, QOS_CLASS_UNSPECIFIED __attribute__((availability(macosx,introduced=10.10))) = 0x00, } qos_class_t; | |
# 157 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/qos.h" 3 4 | |
extern "C" { | |
# 168 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
qos_class_t | |
qos_class_self(void); | |
# 190 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
qos_class_t | |
qos_class_main(void); | |
} | |
# 33 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 2 3 4 | |
extern "C" { | |
# 79 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
int | |
pthread_attr_set_qos_class_np(pthread_attr_t *__attr, | |
qos_class_t __qos_class, int __relative_priority); | |
# 110 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
int | |
pthread_attr_get_qos_class_np(pthread_attr_t * __attr, | |
qos_class_t * _Nullable __qos_class, | |
int * _Nullable __relative_priority); | |
# 151 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
int | |
pthread_set_qos_class_self_np(qos_class_t __qos_class, | |
int __relative_priority); | |
# 182 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
int | |
pthread_get_qos_class_np(pthread_t __pthread, | |
qos_class_t * _Nullable __qos_class, | |
int * _Nullable __relative_priority); | |
# 209 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
typedef struct pthread_override_s* pthread_override_t; | |
# 261 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
pthread_override_t | |
pthread_override_qos_class_start_np(pthread_t __pthread, | |
qos_class_t __qos_class, int __relative_priority); | |
# 289 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread/qos.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.10))) | |
int | |
pthread_override_qos_class_end_np(pthread_override_t __override); | |
} | |
# 74 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_mach_port_t.h" 1 3 4 | |
# 49 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_mach_port_t.h" 3 4 | |
typedef __darwin_mach_port_t mach_port_t; | |
# 78 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_sigset_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_sigset_t.h" 3 4 | |
typedef __darwin_sigset_t sigset_t; | |
# 79 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 2 3 4 | |
# 108 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 3 4 | |
extern "C" { | |
# 215 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/pthread.h" 3 4 | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_atfork(void (* _Nullable)(void), void (* _Nullable)(void), | |
void (* _Nullable)(void)); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_destroy(pthread_attr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getdetachstate(const pthread_attr_t *, int *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getguardsize(const pthread_attr_t * , size_t * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getinheritsched(const pthread_attr_t * , int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getschedparam(const pthread_attr_t * , | |
struct sched_param * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getschedpolicy(const pthread_attr_t * , int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getscope(const pthread_attr_t * , int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getstack(const pthread_attr_t * , | |
void * _Nullable * _Nonnull , size_t * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getstackaddr(const pthread_attr_t * , | |
void * _Nullable * _Nonnull ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_getstacksize(const pthread_attr_t * , size_t * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_init(pthread_attr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setdetachstate(pthread_attr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setguardsize(pthread_attr_t *, size_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setinheritsched(pthread_attr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setschedparam(pthread_attr_t * , | |
const struct sched_param * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setschedpolicy(pthread_attr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setscope(pthread_attr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setstack(pthread_attr_t *, void *, size_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setstackaddr(pthread_attr_t *, void *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_attr_setstacksize(pthread_attr_t *, size_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cancel(pthread_t) __asm("_" "pthread_cancel" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_broadcast(pthread_cond_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_destroy(pthread_cond_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_init( | |
pthread_cond_t * , | |
const pthread_condattr_t * _Nullable ) | |
__asm("_" "pthread_cond_init" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_signal(pthread_cond_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_timedwait( | |
pthread_cond_t * , pthread_mutex_t * , | |
const struct timespec * _Nullable ) | |
__asm("_" "pthread_cond_timedwait" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_wait(pthread_cond_t * , | |
pthread_mutex_t * ) __asm("_" "pthread_cond_wait" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_condattr_destroy(pthread_condattr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_condattr_init(pthread_condattr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_condattr_getpshared(const pthread_condattr_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_condattr_setpshared(pthread_condattr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_create(pthread_t _Nullable * _Nonnull , | |
const pthread_attr_t * _Nullable , | |
void * _Nullable (* _Nonnull)(void * _Nullable), | |
void * _Nullable ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_detach(pthread_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_equal(pthread_t _Nullable, pthread_t _Nullable); | |
__attribute__((availability(macosx,introduced=10.4))) | |
void pthread_exit(void * _Nullable) __attribute__((noreturn)); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_getconcurrency(void); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_getschedparam(pthread_t , int * _Nullable , | |
struct sched_param * _Nullable ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
void* _Nullable pthread_getspecific(pthread_key_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_join(pthread_t , void * _Nullable * _Nullable) | |
__asm("_" "pthread_join" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_key_create(pthread_key_t *, void (* _Nullable)(void *)); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_key_delete(pthread_key_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_destroy(pthread_mutex_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_getprioceiling(const pthread_mutex_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_init(pthread_mutex_t * , | |
const pthread_mutexattr_t * _Nullable ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_lock(pthread_mutex_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_setprioceiling(pthread_mutex_t * , int, | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_trylock(pthread_mutex_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutex_unlock(pthread_mutex_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_destroy(pthread_mutexattr_t *) __asm("_" "pthread_mutexattr_destroy" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_getpshared(const pthread_mutexattr_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_gettype(const pthread_mutexattr_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_init(pthread_mutexattr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_mutexattr_settype(pthread_mutexattr_t *, int); | |
__attribute__((availability(swift,unavailable,message="Use lazily initialized globals instead"))) | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_once(pthread_once_t *, void (* _Nonnull)(void)); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_destroy(pthread_rwlock_t * ) __asm("_" "pthread_rwlock_destroy" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_init(pthread_rwlock_t * , | |
const pthread_rwlockattr_t * _Nullable ) | |
__asm("_" "pthread_rwlock_init" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_rdlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_rdlock" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_tryrdlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_tryrdlock" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_trywrlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_trywrlock" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_wrlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_wrlock" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlock_unlock(pthread_rwlock_t *) __asm("_" "pthread_rwlock_unlock" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * , | |
int * ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlockattr_init(pthread_rwlockattr_t *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
pthread_t pthread_self(void); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_setcancelstate(int , int * _Nullable) | |
__asm("_" "pthread_setcancelstate" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_setcanceltype(int , int * _Nullable) | |
__asm("_" "pthread_setcanceltype" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_setconcurrency(int); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_setschedparam(pthread_t, int, const struct sched_param *); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_setspecific(pthread_key_t , const void * _Nullable); | |
__attribute__((availability(macosx,introduced=10.4))) | |
void pthread_testcancel(void) __asm("_" "pthread_testcancel" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_is_threaded_np(void); | |
__attribute__((availability(macosx,introduced=10.6))) | |
int pthread_threadid_np(pthread_t _Nullable,__uint64_t* _Nullable); | |
__attribute__((availability(macosx,introduced=10.6))) | |
int pthread_getname_np(pthread_t,char*,size_t); | |
__attribute__((availability(macosx,introduced=10.6))) | |
int pthread_setname_np(const char*); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_main_np(void); | |
__attribute__((availability(macosx,introduced=10.4))) | |
mach_port_t pthread_mach_thread_np(pthread_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
size_t pthread_get_stacksize_np(pthread_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
void* pthread_get_stackaddr_np(pthread_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_signal_thread_np(pthread_cond_t *, pthread_t _Nullable); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_cond_timedwait_relative_np(pthread_cond_t *, pthread_mutex_t *, | |
const struct timespec * _Nullable); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_create_suspended_np( | |
pthread_t _Nullable * _Nonnull, const pthread_attr_t * _Nullable, | |
void * _Nullable (* _Nonnull)(void * _Nullable), void * _Nullable); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_kill(pthread_t, int); | |
__attribute__((availability(macosx,introduced=10.5))) | |
_Nullable pthread_t pthread_from_mach_thread_np(mach_port_t); | |
__attribute__((availability(macosx,introduced=10.4))) | |
int pthread_sigmask(int, const sigset_t * _Nullable, sigset_t * _Nullable) | |
__asm("_" "pthread_sigmask" ); | |
__attribute__((availability(macosx,introduced=10.4))) | |
void pthread_yield_np(void); | |
} | |
# 10 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stddef.h" 1 3 4 | |
# 51 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stddef.h" 3 4 | |
typedef long int ptrdiff_t; | |
# 76 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stddef.h" 3 4 | |
typedef long unsigned int rsize_t; | |
# 118 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stddef.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/__stddef_max_align_t.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/__stddef_max_align_t.h" 3 4 | |
typedef long double max_align_t; | |
# 119 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stddef.h" 2 3 4 | |
# 11 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 1 3 | |
# 623 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config" 1 3 | |
# 16 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config" 3 | |
# 399 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config" 3 | |
namespace std { | |
inline namespace __1 { | |
} | |
} | |
# 624 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/initializer_list" 1 3 | |
# 47 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/initializer_list" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef" 1 3 | |
# 38 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stddef.h" 1 3 4 | |
# 39 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef" 2 3 | |
# 42 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef" 3 | |
namespace std {inline namespace __1 { | |
using ::ptrdiff_t; | |
using ::size_t; | |
using ::max_align_t; | |
# 91 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef" 3 | |
} } | |
namespace std | |
{ | |
typedef decltype(nullptr) nullptr_t; | |
} | |
# 48 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/initializer_list" 2 3 | |
# 51 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/initializer_list" 3 | |
namespace std | |
{ | |
template<class _Ep> | |
class __attribute__ ((__type_visibility__("default"))) initializer_list | |
{ | |
const _Ep* __begin_; | |
size_t __size_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
initializer_list(const _Ep* __b, size_t __s) noexcept | |
: __begin_(__b), | |
__size_(__s) | |
{} | |
public: | |
typedef _Ep value_type; | |
typedef const _Ep& reference; | |
typedef const _Ep& const_reference; | |
typedef size_t size_type; | |
typedef const _Ep* iterator; | |
typedef const _Ep* const_iterator; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
initializer_list() noexcept : __begin_(nullptr), __size_(0) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t size() const noexcept {return __size_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Ep* begin() const noexcept {return __begin_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Ep* end() const noexcept {return __begin_ + __size_;} | |
}; | |
template<class _Ep> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Ep* | |
begin(initializer_list<_Ep> __il) noexcept | |
{ | |
return __il.begin(); | |
} | |
template<class _Ep> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Ep* | |
end(initializer_list<_Ep> __il) noexcept | |
{ | |
return __il.end(); | |
} | |
} | |
# 625 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 1 3 | |
# 215 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
namespace std {inline namespace __1 { | |
template <class> | |
struct __void_t { typedef void type; }; | |
template <class _Tp> | |
struct __identity { typedef _Tp type; }; | |
template <class _Tp, bool> | |
struct __attribute__ ((__type_visibility__("default"))) __dependent_type : public _Tp {}; | |
template <bool _Bp, class _If, class _Then> | |
struct __attribute__ ((__type_visibility__("default"))) conditional {typedef _If type;}; | |
template <class _If, class _Then> | |
struct __attribute__ ((__type_visibility__("default"))) conditional<false, _If, _Then> {typedef _Then type;}; | |
template <bool, class _Tp> struct __attribute__ ((__type_visibility__("default"))) __lazy_enable_if {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) __lazy_enable_if<true, _Tp> {typedef typename _Tp::type type;}; | |
template <bool, class _Tp = void> struct __attribute__ ((__type_visibility__("default"))) enable_if {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) enable_if<true, _Tp> {typedef _Tp type;}; | |
struct __two {char __lx[2];}; | |
template <class _Tp, _Tp __v> | |
struct __attribute__ ((__type_visibility__("default"))) integral_constant | |
{ | |
static constexpr const _Tp value = __v; | |
typedef _Tp value_type; | |
typedef integral_constant type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr operator value_type() const noexcept {return value;} | |
}; | |
template <class _Tp, _Tp __v> | |
constexpr const _Tp integral_constant<_Tp, __v>::value; | |
# 277 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
typedef integral_constant<bool,(true)> true_type; | |
typedef integral_constant<bool,(false)> false_type; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_const : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_const<_Tp const> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_volatile : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_volatile<_Tp volatile> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_const {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_const<const _Tp> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_volatile {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_volatile<volatile _Tp> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_cv | |
{typedef typename remove_volatile<typename remove_const<_Tp>::type>::type type;}; | |
template <class _Tp> struct __libcpp_is_void : public false_type {}; | |
template <> struct __libcpp_is_void<void> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_void | |
: public __libcpp_is_void<typename remove_cv<_Tp>::type> {}; | |
template <class _Tp> struct __is_nullptr_t_impl : public false_type {}; | |
template <> struct __is_nullptr_t_impl<nullptr_t> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) __is_nullptr_t | |
: public __is_nullptr_t_impl<typename remove_cv<_Tp>::type> {}; | |
# 337 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __libcpp_is_integral : public false_type {}; | |
template <> struct __libcpp_is_integral<bool> : public true_type {}; | |
template <> struct __libcpp_is_integral<char> : public true_type {}; | |
template <> struct __libcpp_is_integral<signed char> : public true_type {}; | |
template <> struct __libcpp_is_integral<unsigned char> : public true_type {}; | |
template <> struct __libcpp_is_integral<wchar_t> : public true_type {}; | |
template <> struct __libcpp_is_integral<char16_t> : public true_type {}; | |
template <> struct __libcpp_is_integral<char32_t> : public true_type {}; | |
template <> struct __libcpp_is_integral<short> : public true_type {}; | |
template <> struct __libcpp_is_integral<unsigned short> : public true_type {}; | |
template <> struct __libcpp_is_integral<int> : public true_type {}; | |
template <> struct __libcpp_is_integral<unsigned int> : public true_type {}; | |
template <> struct __libcpp_is_integral<long> : public true_type {}; | |
template <> struct __libcpp_is_integral<unsigned long> : public true_type {}; | |
template <> struct __libcpp_is_integral<long long> : public true_type {}; | |
template <> struct __libcpp_is_integral<unsigned long long> : public true_type {}; | |
template <> struct __libcpp_is_integral<__int128_t> : public true_type {}; | |
template <> struct __libcpp_is_integral<__uint128_t> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_integral | |
: public __libcpp_is_integral<typename remove_cv<_Tp>::type> {}; | |
template <class _Tp> struct __libcpp_is_floating_point : public false_type {}; | |
template <> struct __libcpp_is_floating_point<float> : public true_type {}; | |
template <> struct __libcpp_is_floating_point<double> : public true_type {}; | |
template <> struct __libcpp_is_floating_point<long double> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_floating_point | |
: public __libcpp_is_floating_point<typename remove_cv<_Tp>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_array | |
: public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_array<_Tp[]> | |
: public true_type {}; | |
template <class _Tp, size_t _Np> struct __attribute__ ((__type_visibility__("default"))) is_array<_Tp[_Np]> | |
: public true_type {}; | |
template <class _Tp> struct __libcpp_is_pointer : public false_type {}; | |
template <class _Tp> struct __libcpp_is_pointer<_Tp*> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_pointer | |
: public __libcpp_is_pointer<typename remove_cv<_Tp>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_lvalue_reference : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_lvalue_reference<_Tp&> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_rvalue_reference : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_rvalue_reference<_Tp&&> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_reference : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_reference<_Tp&> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_reference<_Tp&&> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_union | |
: public integral_constant<bool, __is_union(_Tp)> {}; | |
# 425 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_class | |
: public integral_constant<bool, __is_class(_Tp)> {}; | |
# 443 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp, class _Up> struct __attribute__ ((__type_visibility__("default"))) is_same : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_same<_Tp, _Tp> : public true_type {}; | |
namespace __libcpp_is_function_imp | |
{ | |
struct __dummy_type {}; | |
template <class _Tp> char __test(_Tp*); | |
template <class _Tp> char __test(__dummy_type); | |
template <class _Tp> __two __test(...); | |
template <class _Tp> _Tp& __source(int); | |
template <class _Tp> __dummy_type __source(...); | |
} | |
template <class _Tp, bool = is_class<_Tp>::value || | |
is_union<_Tp>::value || | |
is_void<_Tp>::value || | |
is_reference<_Tp>::value || | |
__is_nullptr_t<_Tp>::value > | |
struct __libcpp_is_function | |
: public integral_constant<bool, sizeof(__libcpp_is_function_imp::__test<_Tp>(__libcpp_is_function_imp::__source<_Tp>(0))) == 1> | |
{}; | |
template <class _Tp> struct __libcpp_is_function<_Tp, true> : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_function | |
: public __libcpp_is_function<_Tp> {}; | |
template <class _MP, bool _IsMemberFunctionPtr, bool _IsMemberObjectPtr> | |
struct __member_pointer_traits_imp | |
{ | |
}; | |
template <class _Tp> struct __libcpp_is_member_function_pointer | |
: public false_type {}; | |
template <class _Ret, class _Class> | |
struct __libcpp_is_member_function_pointer<_Ret _Class::*> | |
: public is_function<_Ret> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_member_function_pointer | |
: public __libcpp_is_member_function_pointer<typename remove_cv<_Tp>::type>::type {}; | |
template <class _Tp> struct __libcpp_is_member_pointer : public false_type {}; | |
template <class _Tp, class _Up> struct __libcpp_is_member_pointer<_Tp _Up::*> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_member_pointer | |
: public __libcpp_is_member_pointer<typename remove_cv<_Tp>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_member_object_pointer | |
: public integral_constant<bool, is_member_pointer<_Tp>::value && | |
!is_member_function_pointer<_Tp>::value> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_enum | |
: public integral_constant<bool, __is_enum(_Tp)> {}; | |
# 532 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_arithmetic | |
: public integral_constant<bool, is_integral<_Tp>::value || | |
is_floating_point<_Tp>::value> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_fundamental | |
: public integral_constant<bool, is_void<_Tp>::value || | |
__is_nullptr_t<_Tp>::value || | |
is_arithmetic<_Tp>::value> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_scalar | |
: public integral_constant<bool, is_arithmetic<_Tp>::value || | |
is_member_pointer<_Tp>::value || | |
is_pointer<_Tp>::value || | |
__is_nullptr_t<_Tp>::value || | |
is_enum<_Tp>::value > {}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) is_scalar<nullptr_t> : public true_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_object | |
: public integral_constant<bool, is_scalar<_Tp>::value || | |
is_array<_Tp>::value || | |
is_union<_Tp>::value || | |
is_class<_Tp>::value > {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_compound | |
: public integral_constant<bool, !is_fundamental<_Tp>::value> {}; | |
template <class _Tp, bool = is_reference<_Tp>::value || | |
is_function<_Tp>::value || | |
is_const<_Tp>::value > | |
struct __add_const {typedef _Tp type;}; | |
template <class _Tp> | |
struct __add_const<_Tp, false> {typedef const _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_const | |
{typedef typename __add_const<_Tp>::type type;}; | |
template <class _Tp, bool = is_reference<_Tp>::value || | |
is_function<_Tp>::value || | |
is_volatile<_Tp>::value > | |
struct __add_volatile {typedef _Tp type;}; | |
template <class _Tp> | |
struct __add_volatile<_Tp, false> {typedef volatile _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_volatile | |
{typedef typename __add_volatile<_Tp>::type type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_cv | |
{typedef typename add_const<typename add_volatile<_Tp>::type>::type type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_reference {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_reference<_Tp&> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_reference<_Tp&&> {typedef _Tp type;}; | |
# 624 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_lvalue_reference {typedef _Tp& type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_lvalue_reference<_Tp&> {typedef _Tp& type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_lvalue_reference<void> {typedef void type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_lvalue_reference<const void> {typedef const void type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_lvalue_reference<volatile void> {typedef volatile void type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_lvalue_reference<const volatile void> {typedef const volatile void type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_rvalue_reference {typedef _Tp&& type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_rvalue_reference<void> {typedef void type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_rvalue_reference<const void> {typedef const void type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_rvalue_reference<volatile void> {typedef volatile void type;}; | |
template <> struct __attribute__ ((__type_visibility__("default"))) add_rvalue_reference<const volatile void> {typedef const volatile void type;}; | |
# 651 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
typename add_rvalue_reference<_Tp>::type | |
declval() noexcept; | |
# 665 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
struct __uncvref { | |
typedef typename remove_cv<typename remove_reference<_Tp>::type>::type type; | |
}; | |
template <class _Tp> | |
struct __unconstref { | |
typedef typename remove_const<typename remove_reference<_Tp>::type>::type type; | |
}; | |
template <class _Tp, class _Up> | |
struct __is_same_uncvref : is_same<typename __uncvref<_Tp>::type, | |
typename __uncvref<_Up>::type> {}; | |
struct __any | |
{ | |
__any(...); | |
}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_pointer {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_pointer<_Tp*> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_pointer<_Tp* const> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_pointer<_Tp* volatile> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_pointer<_Tp* const volatile> {typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) add_pointer | |
{typedef typename remove_reference<_Tp>::type* type;}; | |
template <class _Tp, bool = is_integral<_Tp>::value> | |
struct __libcpp_is_signed_impl : public integral_constant<bool,(_Tp(-1) < _Tp(0))> {}; | |
template <class _Tp> | |
struct __libcpp_is_signed_impl<_Tp, false> : public true_type {}; | |
template <class _Tp, bool = is_arithmetic<_Tp>::value> | |
struct __libcpp_is_signed : public __libcpp_is_signed_impl<_Tp> {}; | |
template <class _Tp> struct __libcpp_is_signed<_Tp, false> : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_signed : public __libcpp_is_signed<_Tp> {}; | |
template <class _Tp, bool = is_integral<_Tp>::value> | |
struct __libcpp_is_unsigned_impl : public integral_constant<bool,(_Tp(0) < _Tp(-1))> {}; | |
template <class _Tp> | |
struct __libcpp_is_unsigned_impl<_Tp, false> : public false_type {}; | |
template <class _Tp, bool = is_arithmetic<_Tp>::value> | |
struct __libcpp_is_unsigned : public __libcpp_is_unsigned_impl<_Tp> {}; | |
template <class _Tp> struct __libcpp_is_unsigned<_Tp, false> : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_unsigned : public __libcpp_is_unsigned<_Tp> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) rank | |
: public integral_constant<size_t, 0> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) rank<_Tp[]> | |
: public integral_constant<size_t, rank<_Tp>::value + 1> {}; | |
template <class _Tp, size_t _Np> struct __attribute__ ((__type_visibility__("default"))) rank<_Tp[_Np]> | |
: public integral_constant<size_t, rank<_Tp>::value + 1> {}; | |
template <class _Tp, unsigned _Ip = 0> struct __attribute__ ((__type_visibility__("default"))) extent | |
: public integral_constant<size_t, 0> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) extent<_Tp[], 0> | |
: public integral_constant<size_t, 0> {}; | |
template <class _Tp, unsigned _Ip> struct __attribute__ ((__type_visibility__("default"))) extent<_Tp[], _Ip> | |
: public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {}; | |
template <class _Tp, size_t _Np> struct __attribute__ ((__type_visibility__("default"))) extent<_Tp[_Np], 0> | |
: public integral_constant<size_t, _Np> {}; | |
template <class _Tp, size_t _Np, unsigned _Ip> struct __attribute__ ((__type_visibility__("default"))) extent<_Tp[_Np], _Ip> | |
: public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_extent | |
{typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_extent<_Tp[]> | |
{typedef _Tp type;}; | |
template <class _Tp, size_t _Np> struct __attribute__ ((__type_visibility__("default"))) remove_extent<_Tp[_Np]> | |
{typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_all_extents | |
{typedef _Tp type;}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) remove_all_extents<_Tp[]> | |
{typedef typename remove_all_extents<_Tp>::type type;}; | |
template <class _Tp, size_t _Np> struct __attribute__ ((__type_visibility__("default"))) remove_all_extents<_Tp[_Np]> | |
{typedef typename remove_all_extents<_Tp>::type type;}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) decay | |
{ | |
private: | |
typedef typename remove_reference<_Tp>::type _Up; | |
public: | |
typedef typename conditional | |
< | |
is_array<_Up>::value, | |
typename remove_extent<_Up>::type*, | |
typename conditional | |
< | |
is_function<_Up>::value, | |
typename add_pointer<_Up>::type, | |
typename remove_cv<_Up>::type | |
>::type | |
>::type type; | |
}; | |
namespace __is_abstract_imp | |
{ | |
template <class _Tp> char __test(_Tp (*)[1]); | |
template <class _Tp> __two __test(...); | |
} | |
template <class _Tp, bool = is_class<_Tp>::value> | |
struct __libcpp_abstract : public integral_constant<bool, sizeof(__is_abstract_imp::__test<_Tp>(0)) != 1> {}; | |
template <class _Tp> struct __libcpp_abstract<_Tp, false> : public false_type {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_abstract : public __libcpp_abstract<_Tp> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) | |
__libcpp_is_final : public integral_constant<bool, __is_final(_Tp)> {}; | |
# 844 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Bp, class _Dp> | |
struct __attribute__ ((__type_visibility__("default"))) is_base_of | |
: public integral_constant<bool, __is_base_of(_Bp, _Dp)> {}; | |
# 879 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _T1, class _T2> struct __attribute__ ((__type_visibility__("default"))) is_convertible | |
: public integral_constant<bool, __is_convertible_to(_T1, _T2) && | |
!is_abstract<_T2>::value> {}; | |
# 1006 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_empty | |
: public integral_constant<bool, __is_empty(_Tp)> {}; | |
# 1037 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_polymorphic | |
: public integral_constant<bool, __is_polymorphic(_Tp)> {}; | |
# 1057 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) has_virtual_destructor | |
: public integral_constant<bool, __has_virtual_destructor(_Tp)> {}; | |
# 1069 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) alignment_of | |
: public integral_constant<size_t, __alignof__(_Tp)> {}; | |
template <class _Hp, class _Tp> | |
struct __type_list | |
{ | |
typedef _Hp _Head; | |
typedef _Tp _Tail; | |
}; | |
struct __nat | |
{ | |
__nat() = delete; | |
__nat(const __nat&) = delete; | |
__nat& operator=(const __nat&) = delete; | |
~__nat() = delete; | |
}; | |
template <class _Tp> | |
struct __align_type | |
{ | |
static const size_t value = alignment_of<_Tp>::value; | |
typedef _Tp type; | |
}; | |
struct __struct_double {long double __lx;}; | |
struct __struct_double4 {double __lx[4];}; | |
typedef | |
__type_list<__align_type<unsigned char>, | |
__type_list<__align_type<unsigned short>, | |
__type_list<__align_type<unsigned int>, | |
__type_list<__align_type<unsigned long>, | |
__type_list<__align_type<unsigned long long>, | |
__type_list<__align_type<double>, | |
__type_list<__align_type<long double>, | |
__type_list<__align_type<__struct_double>, | |
__type_list<__align_type<__struct_double4>, | |
__type_list<__align_type<int*>, | |
__nat | |
> > > > > > > > > > __all_types; | |
template <class _TL, size_t _Align> struct __find_pod; | |
template <class _Hp, size_t _Align> | |
struct __find_pod<__type_list<_Hp, __nat>, _Align> | |
{ | |
typedef typename conditional< | |
_Align == _Hp::value, | |
typename _Hp::type, | |
void | |
>::type type; | |
}; | |
template <class _Hp, class _Tp, size_t _Align> | |
struct __find_pod<__type_list<_Hp, _Tp>, _Align> | |
{ | |
typedef typename conditional< | |
_Align == _Hp::value, | |
typename _Hp::type, | |
typename __find_pod<_Tp, _Align>::type | |
>::type type; | |
}; | |
template <class _TL, size_t _Len> struct __find_max_align; | |
template <class _Hp, size_t _Len> | |
struct __find_max_align<__type_list<_Hp, __nat>, _Len> : public integral_constant<size_t, _Hp::value> {}; | |
template <size_t _Len, size_t _A1, size_t _A2> | |
struct __select_align | |
{ | |
private: | |
static const size_t __min = _A2 < _A1 ? _A2 : _A1; | |
static const size_t __max = _A1 < _A2 ? _A2 : _A1; | |
public: | |
static const size_t value = _Len < __max ? __min : __max; | |
}; | |
template <class _Hp, class _Tp, size_t _Len> | |
struct __find_max_align<__type_list<_Hp, _Tp>, _Len> | |
: public integral_constant<size_t, __select_align<_Len, _Hp::value, __find_max_align<_Tp, _Len>::value>::value> {}; | |
template <size_t _Len, size_t _Align = __find_max_align<__all_types, _Len>::value> | |
struct __attribute__ ((__type_visibility__("default"))) aligned_storage | |
{ | |
typedef typename __find_pod<__all_types, _Align>::type _Aligner; | |
static_assert(!is_void<_Aligner>::value, ""); | |
union type | |
{ | |
_Aligner __align; | |
unsigned char __data[_Len]; | |
}; | |
}; | |
# 1183 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x1>{ struct alignas(0x1) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x2>{ struct alignas(0x2) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x4>{ struct alignas(0x4) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x8>{ struct alignas(0x8) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x10>{ struct alignas(0x10) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x20>{ struct alignas(0x20) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x40>{ struct alignas(0x40) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x80>{ struct alignas(0x80) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x100>{ struct alignas(0x100) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x200>{ struct alignas(0x200) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x400>{ struct alignas(0x400) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x800>{ struct alignas(0x800) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x1000>{ struct alignas(0x1000) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x2000>{ struct alignas(0x2000) type { unsigned char __lx[_Len]; };}; | |
template <size_t _Len>struct __attribute__ ((__type_visibility__("default"))) aligned_storage<_Len, 0x4000>{ struct alignas(0x4000) type { unsigned char __lx[_Len]; };}; | |
# 1208 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <size_t _I0, size_t ..._In> | |
struct __static_max; | |
template <size_t _I0> | |
struct __static_max<_I0> | |
{ | |
static const size_t value = _I0; | |
}; | |
template <size_t _I0, size_t _I1, size_t ..._In> | |
struct __static_max<_I0, _I1, _In...> | |
{ | |
static const size_t value = _I0 >= _I1 ? __static_max<_I0, _In...>::value : | |
__static_max<_I1, _In...>::value; | |
}; | |
template <size_t _Len, class _Type0, class ..._Types> | |
struct aligned_union | |
{ | |
static const size_t alignment_value = __static_max<__alignof__(_Type0), | |
__alignof__(_Types)...>::value; | |
static const size_t __len = __static_max<_Len, sizeof(_Type0), | |
sizeof(_Types)...>::value; | |
typedef typename aligned_storage<__len, alignment_value>::type type; | |
}; | |
template <class _Tp> | |
struct __numeric_type | |
{ | |
static void __test(...); | |
static float __test(float); | |
static double __test(char); | |
static double __test(int); | |
static double __test(unsigned); | |
static double __test(long); | |
static double __test(unsigned long); | |
static double __test(long long); | |
static double __test(unsigned long long); | |
static double __test(double); | |
static long double __test(long double); | |
typedef decltype(__test(declval<_Tp>())) type; | |
static const bool value = !is_same<type, void>::value; | |
}; | |
template <> | |
struct __numeric_type<void> | |
{ | |
static const bool value = true; | |
}; | |
template <class _A1, class _A2 = void, class _A3 = void, | |
bool = __numeric_type<_A1>::value && | |
__numeric_type<_A2>::value && | |
__numeric_type<_A3>::value> | |
class __promote_imp | |
{ | |
public: | |
static const bool value = false; | |
}; | |
template <class _A1, class _A2, class _A3> | |
class __promote_imp<_A1, _A2, _A3, true> | |
{ | |
private: | |
typedef typename __promote_imp<_A1>::type __type1; | |
typedef typename __promote_imp<_A2>::type __type2; | |
typedef typename __promote_imp<_A3>::type __type3; | |
public: | |
typedef decltype(__type1() + __type2() + __type3()) type; | |
static const bool value = true; | |
}; | |
template <class _A1, class _A2> | |
class __promote_imp<_A1, _A2, void, true> | |
{ | |
private: | |
typedef typename __promote_imp<_A1>::type __type1; | |
typedef typename __promote_imp<_A2>::type __type2; | |
public: | |
typedef decltype(__type1() + __type2()) type; | |
static const bool value = true; | |
}; | |
template <class _A1> | |
class __promote_imp<_A1, void, void, true> | |
{ | |
public: | |
typedef typename __numeric_type<_A1>::type type; | |
static const bool value = true; | |
}; | |
template <class _A1, class _A2 = void, class _A3 = void> | |
class __promote : public __promote_imp<_A1, _A2, _A3> {}; | |
# 1325 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
typedef | |
__type_list<signed char, | |
__type_list<signed short, | |
__type_list<signed int, | |
__type_list<signed long, | |
__type_list<signed long long, | |
__type_list<__int128_t, | |
__nat | |
> | |
> > > > > __signed_types; | |
typedef | |
__type_list<unsigned char, | |
__type_list<unsigned short, | |
__type_list<unsigned int, | |
__type_list<unsigned long, | |
__type_list<unsigned long long, | |
__type_list<__uint128_t, | |
__nat | |
> | |
> > > > > __unsigned_types; | |
template <class _TypeList, size_t _Size, bool = _Size <= sizeof(typename _TypeList::_Head)> struct __find_first; | |
template <class _Hp, class _Tp, size_t _Size> | |
struct __find_first<__type_list<_Hp, _Tp>, _Size, true> | |
{ | |
typedef _Hp type; | |
}; | |
template <class _Hp, class _Tp, size_t _Size> | |
struct __find_first<__type_list<_Hp, _Tp>, _Size, false> | |
{ | |
typedef typename __find_first<_Tp, _Size>::type type; | |
}; | |
template <class _Tp, class _Up, bool = is_const<typename remove_reference<_Tp>::type>::value, | |
bool = is_volatile<typename remove_reference<_Tp>::type>::value> | |
struct __apply_cv | |
{ | |
typedef _Up type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp, _Up, true, false> | |
{ | |
typedef const _Up type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp, _Up, false, true> | |
{ | |
typedef volatile _Up type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp, _Up, true, true> | |
{ | |
typedef const volatile _Up type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp&, _Up, false, false> | |
{ | |
typedef _Up& type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp&, _Up, true, false> | |
{ | |
typedef const _Up& type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp&, _Up, false, true> | |
{ | |
typedef volatile _Up& type; | |
}; | |
template <class _Tp, class _Up> | |
struct __apply_cv<_Tp&, _Up, true, true> | |
{ | |
typedef const volatile _Up& type; | |
}; | |
template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value> | |
struct __make_signed {}; | |
template <class _Tp> | |
struct __make_signed<_Tp, true> | |
{ | |
typedef typename __find_first<__signed_types, sizeof(_Tp)>::type type; | |
}; | |
template <> struct __make_signed<bool, true> {}; | |
template <> struct __make_signed< signed short, true> {typedef short type;}; | |
template <> struct __make_signed<unsigned short, true> {typedef short type;}; | |
template <> struct __make_signed< signed int, true> {typedef int type;}; | |
template <> struct __make_signed<unsigned int, true> {typedef int type;}; | |
template <> struct __make_signed< signed long, true> {typedef long type;}; | |
template <> struct __make_signed<unsigned long, true> {typedef long type;}; | |
template <> struct __make_signed< signed long long, true> {typedef long long type;}; | |
template <> struct __make_signed<unsigned long long, true> {typedef long long type;}; | |
template <> struct __make_signed<__int128_t, true> {typedef __int128_t type;}; | |
template <> struct __make_signed<__uint128_t, true> {typedef __int128_t type;}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) make_signed | |
{ | |
typedef typename __apply_cv<_Tp, typename __make_signed<typename remove_cv<_Tp>::type>::type>::type type; | |
}; | |
template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value> | |
struct __make_unsigned {}; | |
template <class _Tp> | |
struct __make_unsigned<_Tp, true> | |
{ | |
typedef typename __find_first<__unsigned_types, sizeof(_Tp)>::type type; | |
}; | |
template <> struct __make_unsigned<bool, true> {}; | |
template <> struct __make_unsigned< signed short, true> {typedef unsigned short type;}; | |
template <> struct __make_unsigned<unsigned short, true> {typedef unsigned short type;}; | |
template <> struct __make_unsigned< signed int, true> {typedef unsigned int type;}; | |
template <> struct __make_unsigned<unsigned int, true> {typedef unsigned int type;}; | |
template <> struct __make_unsigned< signed long, true> {typedef unsigned long type;}; | |
template <> struct __make_unsigned<unsigned long, true> {typedef unsigned long type;}; | |
template <> struct __make_unsigned< signed long long, true> {typedef unsigned long long type;}; | |
template <> struct __make_unsigned<unsigned long long, true> {typedef unsigned long long type;}; | |
template <> struct __make_unsigned<__int128_t, true> {typedef __uint128_t type;}; | |
template <> struct __make_unsigned<__uint128_t, true> {typedef __uint128_t type;}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) make_unsigned | |
{ | |
typedef typename __apply_cv<_Tp, typename __make_unsigned<typename remove_cv<_Tp>::type>::type>::type type; | |
}; | |
# 1517 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class ..._Tp> struct common_type; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) common_type<_Tp> | |
{ | |
typedef typename decay<_Tp>::type type; | |
}; | |
template <class _Tp, class _Up> | |
struct __attribute__ ((__type_visibility__("default"))) common_type<_Tp, _Up> | |
{ | |
private: | |
static _Tp&& __t(); | |
static _Up&& __u(); | |
static bool __f(); | |
public: | |
typedef typename decay<decltype(__f() ? __t() : __u())>::type type; | |
}; | |
template <class _Tp, class _Up, class ..._Vp> | |
struct __attribute__ ((__type_visibility__("default"))) common_type<_Tp, _Up, _Vp...> | |
{ | |
typedef typename common_type<typename common_type<_Tp, _Up>::type, _Vp...>::type type; | |
}; | |
# 1550 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template<typename, typename _Tp> struct __select_2nd { typedef _Tp type; }; | |
template <class _Tp, class _Arg> | |
typename __select_2nd<decltype((std::__1::declval<_Tp>() = std::__1::declval<_Arg>())), true_type>::type | |
__is_assignable_test(_Tp&&, _Arg&&); | |
template <class _Arg> | |
false_type | |
__is_assignable_test(__any, _Arg&&); | |
template <class _Tp, class _Arg, bool = is_void<_Tp>::value || is_void<_Arg>::value> | |
struct __is_assignable_imp | |
: public common_type | |
< | |
decltype(std::__1::__is_assignable_test(declval<_Tp>(), declval<_Arg>())) | |
>::type {}; | |
template <class _Tp, class _Arg> | |
struct __is_assignable_imp<_Tp, _Arg, true> | |
: public false_type | |
{ | |
}; | |
template <class _Tp, class _Arg> | |
struct is_assignable | |
: public __is_assignable_imp<_Tp, _Arg> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_copy_assignable | |
: public is_assignable<typename add_lvalue_reference<_Tp>::type, | |
typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_move_assignable | |
: public is_assignable<typename add_lvalue_reference<_Tp>::type, | |
const typename add_rvalue_reference<_Tp>::type> {}; | |
# 1610 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class> | |
struct __is_destructible_apply { typedef int type; }; | |
template <typename _Tp> | |
struct __is_destructor_wellformed { | |
template <typename _Tp1> | |
static char __test ( | |
typename __is_destructible_apply<decltype(std::__1::declval<_Tp1&>().~_Tp1())>::type | |
); | |
template <typename _Tp1> | |
static __two __test (...); | |
static const bool value = sizeof(__test<_Tp>(12)) == sizeof(char); | |
}; | |
template <class _Tp, bool> | |
struct __destructible_imp; | |
template <class _Tp> | |
struct __destructible_imp<_Tp, false> | |
: public std::__1::integral_constant<bool, | |
__is_destructor_wellformed<typename std::__1::remove_all_extents<_Tp>::type>::value> {}; | |
template <class _Tp> | |
struct __destructible_imp<_Tp, true> | |
: public std::__1::true_type {}; | |
template <class _Tp, bool> | |
struct __destructible_false; | |
template <class _Tp> | |
struct __destructible_false<_Tp, false> : public __destructible_imp<_Tp, std::__1::is_reference<_Tp>::value> {}; | |
template <class _Tp> | |
struct __destructible_false<_Tp, true> : public std::__1::false_type {}; | |
template <class _Tp> | |
struct is_destructible | |
: public __destructible_false<_Tp, std::__1::is_function<_Tp>::value> {}; | |
template <class _Tp> | |
struct is_destructible<_Tp[]> | |
: public std::__1::false_type {}; | |
template <> | |
struct is_destructible<void> | |
: public std::__1::false_type {}; | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename remove_reference<_Tp>::type&& | |
move(_Tp&& __t) noexcept | |
{ | |
typedef typename remove_reference<_Tp>::type _Up; | |
return static_cast<_Up&&>(__t); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp&& | |
forward(typename std::remove_reference<_Tp>::type& __t) noexcept | |
{ | |
return static_cast<_Tp&&>(__t); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp&& | |
forward(typename std::remove_reference<_Tp>::type&& __t) noexcept | |
{ | |
static_assert(!std::is_lvalue_reference<_Tp>::value, | |
"Can not forward an rvalue as an lvalue."); | |
return static_cast<_Tp&&>(__t); | |
} | |
# 1733 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename decay<_Tp>::type | |
__decay_copy(_Tp&& __t) | |
{ | |
return std::__1::forward<_Tp>(__t); | |
} | |
# 1755 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...), true, false> | |
{ | |
typedef _Class _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...), true, false> | |
{ | |
typedef _Class _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const, true, false> | |
{ | |
typedef _Class const _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const, true, false> | |
{ | |
typedef _Class const _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile, true, false> | |
{ | |
typedef _Class volatile _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile, true, false> | |
{ | |
typedef _Class volatile _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile, true, false> | |
{ | |
typedef _Class const volatile _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile, true, false> | |
{ | |
typedef _Class const volatile _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &, true, false> | |
{ | |
typedef _Class& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &, true, false> | |
{ | |
typedef _Class& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&, true, false> | |
{ | |
typedef _Class const& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&, true, false> | |
{ | |
typedef _Class const& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&, true, false> | |
{ | |
typedef _Class volatile& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&, true, false> | |
{ | |
typedef _Class volatile& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&, true, false> | |
{ | |
typedef _Class const volatile& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&, true, false> | |
{ | |
typedef _Class const volatile& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &&, true, false> | |
{ | |
typedef _Class&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &&, true, false> | |
{ | |
typedef _Class&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&&, true, false> | |
{ | |
typedef _Class const&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&&, true, false> | |
{ | |
typedef _Class const&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&&, true, false> | |
{ | |
typedef _Class volatile&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&&, true, false> | |
{ | |
typedef _Class volatile&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&&, true, false> | |
{ | |
typedef _Class const volatile&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param...); | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&&, true, false> | |
{ | |
typedef _Class const volatile&& _ClassType; | |
typedef _Rp _ReturnType; | |
typedef _Rp (_FnType) (_Param..., ...); | |
}; | |
# 2212 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Rp, class _Class> | |
struct __member_pointer_traits_imp<_Rp _Class::*, false, true> | |
{ | |
typedef _Class _ClassType; | |
typedef _Rp _ReturnType; | |
}; | |
template <class _MP> | |
struct __member_pointer_traits | |
: public __member_pointer_traits_imp<typename remove_cv<_MP>::type, | |
is_member_function_pointer<_MP>::value, | |
is_member_object_pointer<_MP>::value> | |
{ | |
}; | |
template <class _Callable> class result_of; | |
# 2384 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
namespace __is_construct | |
{ | |
struct __nat {}; | |
} | |
template <class _Tp, class ..._Args> | |
struct __attribute__ ((__type_visibility__("default"))) is_constructible | |
: public integral_constant<bool, __is_constructible(_Tp, _Args...)> | |
{}; | |
# 2695 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_default_constructible | |
: public is_constructible<_Tp> | |
{}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_copy_constructible | |
: public is_constructible<_Tp, | |
typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_move_constructible | |
: public is_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> | |
{}; | |
template <class _Tp, class... _Args> | |
struct __attribute__ ((__type_visibility__("default"))) is_trivially_constructible | |
: integral_constant<bool, __is_trivially_constructible(_Tp, _Args...)> | |
{ | |
}; | |
# 2847 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_default_constructible | |
: public is_trivially_constructible<_Tp> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_copy_constructible | |
: public is_trivially_constructible<_Tp, typename add_lvalue_reference<const _Tp>::type> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_move_constructible | |
: public is_trivially_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> | |
{}; | |
template <class _Tp, class _Arg> | |
struct is_trivially_assignable | |
: integral_constant<bool, __is_trivially_assignable(_Tp, _Arg)> | |
{ | |
}; | |
# 2907 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_copy_assignable | |
: public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type, | |
typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_move_assignable | |
: public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type, | |
typename add_rvalue_reference<_Tp>::type> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_destructible | |
: public integral_constant<bool, is_destructible<_Tp>::value && __has_trivial_destructor(_Tp)> {}; | |
# 2958 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <bool, bool, class _Tp, class... _Args> struct __libcpp_is_nothrow_constructible; | |
template <class _Tp, class... _Args> | |
struct __libcpp_is_nothrow_constructible< true, false, _Tp, _Args...> | |
: public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> | |
{ | |
}; | |
template <class _Tp> | |
void __implicit_conversion_to(_Tp) noexcept { } | |
template <class _Tp, class _Arg> | |
struct __libcpp_is_nothrow_constructible< true, true, _Tp, _Arg> | |
: public integral_constant<bool, noexcept(__implicit_conversion_to<_Tp>(declval<_Arg>()))> | |
{ | |
}; | |
template <class _Tp, bool _IsReference, class... _Args> | |
struct __libcpp_is_nothrow_constructible< false, _IsReference, _Tp, _Args...> | |
: public false_type | |
{ | |
}; | |
template <class _Tp, class... _Args> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_constructible | |
: __libcpp_is_nothrow_constructible<is_constructible<_Tp, _Args...>::value, is_reference<_Tp>::value, _Tp, _Args...> | |
{ | |
}; | |
template <class _Tp, size_t _Ns> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_constructible<_Tp[_Ns]> | |
: __libcpp_is_nothrow_constructible<is_constructible<_Tp>::value, is_reference<_Tp>::value, _Tp> | |
{ | |
}; | |
# 3105 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_nothrow_default_constructible | |
: public is_nothrow_constructible<_Tp> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_nothrow_copy_constructible | |
: public is_nothrow_constructible<_Tp, | |
typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_nothrow_move_constructible | |
: public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> | |
{}; | |
template <bool, class _Tp, class _Arg> struct __libcpp_is_nothrow_assignable; | |
template <class _Tp, class _Arg> | |
struct __libcpp_is_nothrow_assignable<false, _Tp, _Arg> | |
: public false_type | |
{ | |
}; | |
template <class _Tp, class _Arg> | |
struct __libcpp_is_nothrow_assignable<true, _Tp, _Arg> | |
: public integral_constant<bool, noexcept(std::__1::declval<_Tp>() = std::__1::declval<_Arg>()) > | |
{ | |
}; | |
template <class _Tp, class _Arg> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_assignable | |
: public __libcpp_is_nothrow_assignable<is_assignable<_Tp, _Arg>::value, _Tp, _Arg> | |
{ | |
}; | |
# 3195 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_nothrow_copy_assignable | |
: public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type, | |
typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_nothrow_move_assignable | |
: public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type, | |
typename add_rvalue_reference<_Tp>::type> | |
{}; | |
template <bool, class _Tp> struct __libcpp_is_nothrow_destructible; | |
template <class _Tp> | |
struct __libcpp_is_nothrow_destructible<false, _Tp> | |
: public false_type | |
{ | |
}; | |
template <class _Tp> | |
struct __libcpp_is_nothrow_destructible<true, _Tp> | |
: public integral_constant<bool, noexcept(std::__1::declval<_Tp>().~_Tp()) > | |
{ | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_destructible | |
: public __libcpp_is_nothrow_destructible<is_destructible<_Tp>::value, _Tp> | |
{ | |
}; | |
template <class _Tp, size_t _Ns> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_destructible<_Tp[_Ns]> | |
: public is_nothrow_destructible<_Tp> | |
{ | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_destructible<_Tp&> | |
: public true_type | |
{ | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) is_nothrow_destructible<_Tp&&> | |
: public true_type | |
{ | |
}; | |
# 3275 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_pod | |
: public integral_constant<bool, __is_pod(_Tp)> {}; | |
# 3290 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_literal_type | |
: public integral_constant<bool, __is_literal(_Tp)> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_standard_layout | |
: public integral_constant<bool, __is_standard_layout(_Tp)> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivially_copyable | |
: public integral_constant<bool, __is_trivially_copyable(_Tp)> | |
{}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_trivial | |
: public integral_constant<bool, __is_trivial(_Tp)> | |
{}; | |
template <class ..._Tp> struct __check_complete; | |
template <> | |
struct __check_complete<> | |
{ | |
}; | |
template <class _Hp, class _T0, class ..._Tp> | |
struct __check_complete<_Hp, _T0, _Tp...> | |
: private __check_complete<_Hp>, | |
private __check_complete<_T0, _Tp...> | |
{ | |
}; | |
template <class _Hp> | |
struct __check_complete<_Hp, _Hp> | |
: private __check_complete<_Hp> | |
{ | |
}; | |
template <class _Tp> | |
struct __check_complete<_Tp> | |
{ | |
static_assert(sizeof(_Tp) > 0, "Type must be complete."); | |
}; | |
template <class _Tp> | |
struct __check_complete<_Tp&> | |
: private __check_complete<_Tp> | |
{ | |
}; | |
template <class _Tp> | |
struct __check_complete<_Tp&&> | |
: private __check_complete<_Tp> | |
{ | |
}; | |
template <class _Rp, class ..._Param> | |
struct __check_complete<_Rp (*)(_Param...)> | |
: private __check_complete<_Rp> | |
{ | |
}; | |
template <class ..._Param> | |
struct __check_complete<void (*)(_Param...)> | |
{ | |
}; | |
template <class _Rp, class ..._Param> | |
struct __check_complete<_Rp (_Param...)> | |
: private __check_complete<_Rp> | |
{ | |
}; | |
template <class ..._Param> | |
struct __check_complete<void (_Param...)> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...)> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) const> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) volatile> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) const volatile> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) &> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) const&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) volatile&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) &&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) const&&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) volatile&&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class, class ..._Param> | |
struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&&> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class _Rp, class _Class> | |
struct __check_complete<_Rp _Class::*> | |
: private __check_complete<_Class> | |
{ | |
}; | |
template <class ..._Args> | |
auto | |
__invoke(__any, _Args&& ...__args) | |
-> __nat; | |
template <class _Fp, class _A0, class ..._Args, | |
class = typename enable_if | |
< | |
is_member_function_pointer<typename remove_reference<_Fp>::type>::value && | |
is_base_of<typename remove_reference<typename __member_pointer_traits<typename remove_reference<_Fp>::type>::_ClassType>::type, | |
typename remove_reference<_A0>::type>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
-> decltype((std::__1::forward<_A0>(__a0).*__f)(std::__1::forward<_Args>(__args)...)); | |
template <class _Fp, class _A0, class ..._Args, | |
class = typename enable_if | |
< | |
is_member_function_pointer<typename remove_reference<_Fp>::type>::value && | |
!is_base_of<typename remove_reference<typename __member_pointer_traits<typename remove_reference<_Fp>::type>::_ClassType>::type, | |
typename remove_reference<_A0>::type>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
-> decltype(((*std::__1::forward<_A0>(__a0)).*__f)(std::__1::forward<_Args>(__args)...)); | |
template <class _Fp, class _A0, | |
class = typename enable_if | |
< | |
is_member_object_pointer<typename remove_reference<_Fp>::type>::value && | |
is_base_of<typename __member_pointer_traits<typename remove_reference<_Fp>::type>::_ClassType, | |
typename remove_reference<_A0>::type>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0) | |
-> decltype(std::__1::forward<_A0>(__a0).*__f); | |
template <class _Fp, class _A0, | |
class = typename enable_if | |
< | |
is_member_object_pointer<typename remove_reference<_Fp>::type>::value && | |
!is_base_of<typename __member_pointer_traits<typename remove_reference<_Fp>::type>::_ClassType, | |
typename remove_reference<_A0>::type>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0) | |
-> decltype((*std::__1::forward<_A0>(__a0)).*__f); | |
template <class _Fp, class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _Args&& ...__args) | |
-> decltype(std::__1::forward<_Fp>(__f)(std::__1::forward<_Args>(__args)...)); | |
template <class _Fp, class ..._Args> | |
struct __invokable_imp | |
: private __check_complete<_Fp> | |
{ | |
typedef decltype( | |
__invoke(std::__1::declval<_Fp>(), std::__1::declval<_Args>()...) | |
) type; | |
static const bool value = !is_same<type, __nat>::value; | |
}; | |
template <class _Fp, class ..._Args> | |
struct __invokable | |
: public integral_constant<bool, | |
__invokable_imp<_Fp, _Args...>::value> | |
{ | |
}; | |
template <bool _Invokable, class _Fp, class ..._Args> | |
struct __invoke_of_imp | |
{ | |
}; | |
template <class _Fp, class ..._Args> | |
struct __invoke_of_imp<true, _Fp, _Args...> | |
{ | |
typedef typename __invokable_imp<_Fp, _Args...>::type type; | |
}; | |
template <class _Fp, class ..._Args> | |
struct __invoke_of | |
: public __invoke_of_imp<__invokable<_Fp, _Args...>::value, _Fp, _Args...> | |
{ | |
}; | |
template <class _Fp, class ..._Args> | |
class __attribute__ ((__type_visibility__("default"))) result_of<_Fp(_Args...)> | |
: public __invoke_of<_Fp, _Args...> | |
{ | |
}; | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_move_constructible<_Tp>::value && | |
is_move_assignable<_Tp>::value | |
>::type | |
swap(_Tp& __x, _Tp& __y) noexcept(is_nothrow_move_constructible<_Tp>::value && is_nothrow_move_assignable<_Tp>::value) | |
{ | |
_Tp __t(std::__1::move(__x)); | |
__x = std::__1::move(__y); | |
__y = std::__1::move(__t); | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) | |
noexcept(noexcept(swap(*std::__1::declval<_ForwardIterator1>(), *std::__1::declval<_ForwardIterator2>()))) | |
{ | |
swap(*__a, *__b); | |
} | |
namespace __detail | |
{ | |
using std::__1::swap; | |
__nat swap(__any, __any); | |
template <class _Tp> | |
struct __swappable | |
{ | |
typedef decltype(swap(std::__1::declval<_Tp&>(), std::__1::declval<_Tp&>())) type; | |
static const bool value = !is_same<type, __nat>::value; | |
}; | |
} | |
template <class _Tp> | |
struct __is_swappable | |
: public integral_constant<bool, __detail::__swappable<_Tp>::value> | |
{ | |
}; | |
template <bool, class _Tp> | |
struct __is_nothrow_swappable_imp | |
: public integral_constant<bool, noexcept(swap(std::__1::declval<_Tp&>(), | |
std::__1::declval<_Tp&>()))> | |
{ | |
}; | |
template <class _Tp> | |
struct __is_nothrow_swappable_imp<false, _Tp> | |
: public false_type | |
{ | |
}; | |
template <class _Tp> | |
struct __is_nothrow_swappable | |
: public __is_nothrow_swappable_imp<__is_swappable<_Tp>::value, _Tp> | |
{ | |
}; | |
# 3687 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp> | |
struct underlying_type | |
{ | |
typedef __underlying_type(_Tp) type; | |
}; | |
# 3710 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits" 3 | |
template <class _Tp, bool = std::is_enum<_Tp>::value> | |
struct __sfinae_underlying_type | |
{ | |
typedef typename underlying_type<_Tp>::type type; | |
typedef decltype(((type)1) + 0) __promoted_type; | |
}; | |
template <class _Tp> | |
struct __sfinae_underlying_type<_Tp, false> {}; | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
int __convert_to_integral(int __val) { return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned __convert_to_integral(unsigned __val) { return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
long __convert_to_integral(long __val) { return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned long __convert_to_integral(unsigned long __val) { return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
long long __convert_to_integral(long long __val) { return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned long long __convert_to_integral(unsigned long long __val) {return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__int128_t __convert_to_integral(__int128_t __val) { return __val; } | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__uint128_t __convert_to_integral(__uint128_t __val) { return __val; } | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __sfinae_underlying_type<_Tp>::__promoted_type | |
__convert_to_integral(_Tp __val) { return __val; } | |
template <class _Tp> | |
struct __has_operator_addressof_member_imp | |
{ | |
template <class _Up> | |
static auto __test(int) | |
-> typename __select_2nd<decltype(std::__1::declval<_Up>().operator&()), true_type>::type; | |
template <class> | |
static auto __test(long) -> false_type; | |
static const bool value = decltype(__test<_Tp>(0))::value; | |
}; | |
template <class _Tp> | |
struct __has_operator_addressof_free_imp | |
{ | |
template <class _Up> | |
static auto __test(int) | |
-> typename __select_2nd<decltype(operator&(std::__1::declval<_Up>())), true_type>::type; | |
template <class> | |
static auto __test(long) -> false_type; | |
static const bool value = decltype(__test<_Tp>(0))::value; | |
}; | |
template <class _Tp> | |
struct __has_operator_addressof | |
: public integral_constant<bool, __has_operator_addressof_member_imp<_Tp>::value | |
|| __has_operator_addressof_free_imp<_Tp>::value> | |
{}; | |
} } | |
# 626 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring" 1 3 | |
# 61 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 1 3 4 | |
# 69 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 3 4 | |
extern "C" { | |
void *memchr(const void *__s, int __c, size_t __n); | |
int memcmp(const void *__s1, const void *__s2, size_t __n); | |
void *memcpy(void *__dst, const void *__src, size_t __n); | |
void *memmove(void *__dst, const void *__src, size_t __len); | |
void *memset(void *__b, int __c, size_t __len); | |
char *strcat(char *__s1, const char *__s2); | |
char *strchr(const char *__s, int __c); | |
int strcmp(const char *__s1, const char *__s2); | |
int strcoll(const char *__s1, const char *__s2); | |
char *strcpy(char *__dst, const char *__src); | |
size_t strcspn(const char *__s, const char *__charset); | |
char *strerror(int __errnum) __asm("_" "strerror" ); | |
size_t strlen(const char *__s); | |
char *strncat(char *__s1, const char *__s2, size_t __n); | |
int strncmp(const char *__s1, const char *__s2, size_t __n); | |
char *strncpy(char *__dst, const char *__src, size_t __n); | |
char *strpbrk(const char *__s, const char *__charset); | |
char *strrchr(const char *__s, int __c); | |
size_t strspn(const char *__s, const char *__charset); | |
char *strstr(const char *__big, const char *__little); | |
char *strtok(char *__str, const char *__sep); | |
size_t strxfrm(char *__s1, const char *__s2, size_t __n); | |
} | |
# 103 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 3 4 | |
extern "C" { | |
char *strtok_r(char *__str, const char *__sep, char **__lasts); | |
} | |
# 115 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 3 4 | |
extern "C" { | |
int strerror_r(int __errnum, char *__strerrbuf, size_t __buflen); | |
char *strdup(const char *__s1); | |
void *memccpy(void *__dst, const void *__src, int __c, size_t __n); | |
} | |
# 129 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 3 4 | |
extern "C" { | |
char *stpcpy(char *__dst, const char *__src); | |
char *stpncpy(char *__dst, const char *__src, size_t __n) __attribute__((availability(macosx,introduced=10.7))); | |
char *strndup(const char *__s1, size_t __n) __attribute__((availability(macosx,introduced=10.7))); | |
size_t strnlen(const char *__s1, size_t __n) __attribute__((availability(macosx,introduced=10.7))); | |
char *strsignal(int __sig); | |
} | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_rsize_t.h" 1 3 4 | |
# 142 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_errno_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_errno_t.h" 3 4 | |
typedef int errno_t; | |
# 143 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 2 3 4 | |
extern "C" { | |
errno_t memset_s(void *__s, rsize_t __smax, int __c, rsize_t __n) __attribute__((availability(macosx,introduced=10.9))); | |
} | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ssize_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ssize_t.h" 3 4 | |
typedef __darwin_ssize_t ssize_t; | |
# 153 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 2 3 4 | |
extern "C" { | |
void *memmem(const void *__big, size_t __big_len, const void *__little, size_t __little_len) __attribute__((availability(macosx,introduced=10.7))); | |
void memset_pattern4(void *__b, const void *__pattern4, size_t __len) __attribute__((availability(macosx,introduced=10.5))); | |
void memset_pattern8(void *__b, const void *__pattern8, size_t __len) __attribute__((availability(macosx,introduced=10.5))); | |
void memset_pattern16(void *__b, const void *__pattern16, size_t __len) __attribute__((availability(macosx,introduced=10.5))); | |
char *strcasestr(const char *__big, const char *__little); | |
char *strnstr(const char *__big, const char *__little, size_t __len); | |
size_t strlcat(char *__dst, const char *__source, size_t __size); | |
size_t strlcpy(char *__dst, const char *__source, size_t __size); | |
void strmode(int __mode, char *__bp); | |
char *strsep(char **__stringp, const char *__delim); | |
void swab(const void * , void * , ssize_t); | |
__attribute__((availability(macosx,introduced=10.12.1))) __attribute__((availability(ios,introduced=10.1))) | |
__attribute__((availability(tvos,introduced=10.0.1))) __attribute__((availability(watchos,introduced=3.1))) | |
int timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len); | |
} | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/strings.h" 1 3 4 | |
# 67 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/strings.h" 3 4 | |
extern "C" { | |
int bcmp(const void *, const void *, size_t) ; | |
void bcopy(const void *, void *, size_t) ; | |
void bzero(void *, size_t) ; | |
char *index(const char *, int) ; | |
char *rindex(const char *, int) ; | |
int ffs(int); | |
int strcasecmp(const char *, const char *); | |
int strncasecmp(const char *, const char *, size_t); | |
} | |
extern "C" { | |
int ffsl(long) __attribute__((availability(macosx,introduced=10.5))); | |
int ffsll(long long) __attribute__((availability(macosx,introduced=10.9))); | |
int fls(int) __attribute__((availability(macosx,introduced=10.5))); | |
int flsl(long) __attribute__((availability(macosx,introduced=10.5))); | |
int flsll(long long) __attribute__((availability(macosx,introduced=10.9))); | |
} | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 1 3 4 | |
# 93 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/strings.h" 2 3 4 | |
# 183 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/string.h" 2 3 4 | |
# 62 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring" 2 3 | |
# 65 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring" 3 | |
namespace std {inline namespace __1 { | |
using ::size_t; | |
using ::memcpy; | |
using ::memmove; | |
using ::strcpy; | |
using ::strncpy; | |
using ::strcat; | |
using ::strncat; | |
using ::memcmp; | |
using ::strcmp; | |
using ::strncmp; | |
using ::strcoll; | |
using ::strxfrm; | |
using ::memchr; | |
using ::strchr; | |
using ::strcspn; | |
using ::strpbrk; | |
using ::strrchr; | |
using ::strspn; | |
using ::strstr; | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) char* strchr( char* __s, int __c) {return ::strchr(__s, __c);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) char* strpbrk( char* __s1, const char* __s2) {return ::strpbrk(__s1, __s2);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) char* strrchr( char* __s, int __c) {return ::strrchr(__s, __c);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void* memchr( void* __s, int __c, size_t __n) {return ::memchr(__s, __c, __n);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) char* strstr( char* __s1, const char* __s2) {return ::strstr(__s1, __s2);} | |
using ::strtok; | |
using ::memset; | |
using ::strerror; | |
using ::strlen; | |
} } | |
# 627 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 1 3 | |
# 157 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tuple" 1 3 | |
# 20 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tuple" 3 | |
namespace std {inline namespace __1 { | |
template <class _Tp> class __attribute__ ((__type_visibility__("default"))) tuple_size; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_size<const _Tp> | |
: public tuple_size<_Tp> {}; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_size<volatile _Tp> | |
: public tuple_size<_Tp> {}; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_size<const volatile _Tp> | |
: public tuple_size<_Tp> {}; | |
template <size_t _Ip, class _Tp> class __attribute__ ((__type_visibility__("default"))) tuple_element; | |
template <size_t _Ip, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<_Ip, const _Tp> | |
{ | |
public: | |
typedef typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type; | |
}; | |
template <size_t _Ip, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<_Ip, volatile _Tp> | |
{ | |
public: | |
typedef typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type; | |
}; | |
template <size_t _Ip, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<_Ip, const volatile _Tp> | |
{ | |
public: | |
typedef typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type; | |
}; | |
template <class _Tp> struct __tuple_like : false_type {}; | |
template <class _Tp> struct __tuple_like<const _Tp> : public __tuple_like<_Tp> {}; | |
template <class _Tp> struct __tuple_like<volatile _Tp> : public __tuple_like<_Tp> {}; | |
template <class _Tp> struct __tuple_like<const volatile _Tp> : public __tuple_like<_Tp> {}; | |
template <class ..._Tp> class __attribute__ ((__type_visibility__("default"))) tuple; | |
template <class... _Tp> struct __tuple_like<tuple<_Tp...> > : true_type {}; | |
template <size_t _Ip, class ..._Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, tuple<_Tp...> >::type& | |
get(tuple<_Tp...>&) noexcept; | |
template <size_t _Ip, class ..._Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const typename tuple_element<_Ip, tuple<_Tp...> >::type& | |
get(const tuple<_Tp...>&) noexcept; | |
template <size_t _Ip, class ..._Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, tuple<_Tp...> >::type&& | |
get(tuple<_Tp...>&&) noexcept; | |
template <class _T1, class _T2> struct __attribute__ ((__type_visibility__("default"))) pair; | |
template <class _T1, class _T2> struct __tuple_like<pair<_T1, _T2> > : true_type {}; | |
template <size_t _Ip, class _T1, class _T2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
get(pair<_T1, _T2>&) noexcept; | |
template <size_t _Ip, class _T1, class _T2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
get(const pair<_T1, _T2>&) noexcept; | |
template <size_t _Ip, class _T1, class _T2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, pair<_T1, _T2> >::type&& | |
get(pair<_T1, _T2>&&) noexcept; | |
template <class _Tp, size_t _Size> struct __attribute__ ((__type_visibility__("default"))) array; | |
template <class _Tp, size_t _Size> struct __tuple_like<array<_Tp, _Size> > : true_type {}; | |
template <size_t _Ip, class _Tp, size_t _Size> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp& | |
get(array<_Tp, _Size>&) noexcept; | |
template <size_t _Ip, class _Tp, size_t _Size> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Tp& | |
get(const array<_Tp, _Size>&) noexcept; | |
template <size_t _Ip, class _Tp, size_t _Size> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp&& | |
get(array<_Tp, _Size>&&) noexcept; | |
template <bool _Last, class ..._Preds> | |
struct __lazy_and_impl; | |
template <class ..._Preds> | |
struct __lazy_and_impl<false, _Preds...> : false_type {}; | |
template <> | |
struct __lazy_and_impl<true> : true_type {}; | |
template <class _Pred> | |
struct __lazy_and_impl<true, _Pred> : integral_constant<bool, _Pred::type::value> {}; | |
template <class _Hp, class ..._Tp> | |
struct __lazy_and_impl<true, _Hp, _Tp...> : __lazy_and_impl<_Hp::type::value, _Tp...> {}; | |
template <class _P1, class ..._Pr> | |
struct __lazy_and : __lazy_and_impl<_P1::type::value, _Pr...> {}; | |
template <class _Pred> | |
struct __lazy_not : integral_constant<bool, !_Pred::type::value> {}; | |
template <size_t...> struct __tuple_indices {}; | |
template <size_t _Sp, class _IntTuple, size_t _Ep> | |
struct __make_indices_imp; | |
template <size_t _Sp, size_t ..._Indices, size_t _Ep> | |
struct __make_indices_imp<_Sp, __tuple_indices<_Indices...>, _Ep> | |
{ | |
typedef typename __make_indices_imp<_Sp+1, __tuple_indices<_Indices..., _Sp>, _Ep>::type type; | |
}; | |
template <size_t _Ep, size_t ..._Indices> | |
struct __make_indices_imp<_Ep, __tuple_indices<_Indices...>, _Ep> | |
{ | |
typedef __tuple_indices<_Indices...> type; | |
}; | |
template <size_t _Ep, size_t _Sp = 0> | |
struct __make_tuple_indices | |
{ | |
static_assert(_Sp <= _Ep, "__make_tuple_indices input error"); | |
typedef typename __make_indices_imp<_Sp, __tuple_indices<>, _Ep>::type type; | |
}; | |
template <class ..._Tp> struct __tuple_types {}; | |
template <size_t _Ip> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<_Ip, __tuple_types<> > | |
{ | |
public: | |
static_assert(_Ip == 0, "tuple_element index out of range"); | |
static_assert(_Ip != 0, "tuple_element index out of range"); | |
}; | |
template <class _Hp, class ..._Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<0, __tuple_types<_Hp, _Tp...> > | |
{ | |
public: | |
typedef _Hp type; | |
}; | |
template <size_t _Ip, class _Hp, class ..._Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<_Ip, __tuple_types<_Hp, _Tp...> > | |
{ | |
public: | |
typedef typename tuple_element<_Ip-1, __tuple_types<_Tp...> >::type type; | |
}; | |
template <class ..._Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_size<__tuple_types<_Tp...> > | |
: public integral_constant<size_t, sizeof...(_Tp)> | |
{ | |
}; | |
template <class... _Tp> struct __tuple_like<__tuple_types<_Tp...> > : true_type {}; | |
# 231 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tuple" 3 | |
template <class _TupleTypes, class _Tp, size_t _Sp, size_t _Ep> | |
struct __make_tuple_types_imp; | |
template <class ..._Types, class _Tp, size_t _Sp, size_t _Ep> | |
struct __make_tuple_types_imp<__tuple_types<_Types...>, _Tp, _Sp, _Ep> | |
{ | |
typedef typename remove_reference<_Tp>::type _Tpr; | |
typedef typename __make_tuple_types_imp<__tuple_types<_Types..., | |
typename conditional<is_lvalue_reference<_Tp>::value, | |
typename tuple_element<_Sp, _Tpr>::type&, | |
typename tuple_element<_Sp, _Tpr>::type>::type>, | |
_Tp, _Sp+1, _Ep>::type type; | |
}; | |
template <class ..._Types, class _Tp, size_t _Ep> | |
struct __make_tuple_types_imp<__tuple_types<_Types...>, _Tp, _Ep, _Ep> | |
{ | |
typedef __tuple_types<_Types...> type; | |
}; | |
template <class _Tp, size_t _Ep = tuple_size<typename remove_reference<_Tp>::type>::value, size_t _Sp = 0> | |
struct __make_tuple_types | |
{ | |
static_assert(_Sp <= _Ep, "__make_tuple_types input error"); | |
typedef typename __make_tuple_types_imp<__tuple_types<>, _Tp, _Sp, _Ep>::type type; | |
}; | |
template <class, class> | |
struct __tuple_convertible_imp : public false_type {}; | |
template <class _Tp0, class ..._Tp, class _Up0, class ..._Up> | |
struct __tuple_convertible_imp<__tuple_types<_Tp0, _Tp...>, __tuple_types<_Up0, _Up...> > | |
: public integral_constant<bool, | |
is_convertible<_Tp0, _Up0>::value && | |
__tuple_convertible_imp<__tuple_types<_Tp...>, __tuple_types<_Up...> >::value> {}; | |
template <> | |
struct __tuple_convertible_imp<__tuple_types<>, __tuple_types<> > | |
: public true_type {}; | |
template <bool, class, class> | |
struct __tuple_convertible_apply : public false_type {}; | |
template <class _Tp, class _Up> | |
struct __tuple_convertible_apply<true, _Tp, _Up> | |
: public __tuple_convertible_imp< | |
typename __make_tuple_types<_Tp>::type | |
, typename __make_tuple_types<_Up>::type | |
> | |
{}; | |
template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value, | |
bool = __tuple_like<_Up>::value> | |
struct __tuple_convertible | |
: public false_type {}; | |
template <class _Tp, class _Up> | |
struct __tuple_convertible<_Tp, _Up, true, true> | |
: public __tuple_convertible_apply<tuple_size<typename remove_reference<_Tp>::type>::value == | |
tuple_size<_Up>::value, _Tp, _Up> | |
{}; | |
template <class, class> | |
struct __tuple_constructible_imp : public false_type {}; | |
template <class _Tp0, class ..._Tp, class _Up0, class ..._Up> | |
struct __tuple_constructible_imp<__tuple_types<_Tp0, _Tp...>, __tuple_types<_Up0, _Up...> > | |
: public integral_constant<bool, | |
is_constructible<_Up0, _Tp0>::value && | |
__tuple_constructible_imp<__tuple_types<_Tp...>, __tuple_types<_Up...> >::value> {}; | |
template <> | |
struct __tuple_constructible_imp<__tuple_types<>, __tuple_types<> > | |
: public true_type {}; | |
template <bool _SameSize, class, class> | |
struct __tuple_constructible_apply : public false_type {}; | |
template <class _Tp, class _Up> | |
struct __tuple_constructible_apply<true, _Tp, _Up> | |
: public __tuple_constructible_imp< | |
typename __make_tuple_types<_Tp>::type | |
, typename __make_tuple_types<_Up>::type | |
> | |
{}; | |
template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value, | |
bool = __tuple_like<_Up>::value> | |
struct __tuple_constructible | |
: public false_type {}; | |
template <class _Tp, class _Up> | |
struct __tuple_constructible<_Tp, _Up, true, true> | |
: public __tuple_constructible_apply<tuple_size<typename remove_reference<_Tp>::type>::value == | |
tuple_size<_Up>::value, _Tp, _Up> | |
{}; | |
template <class, class> | |
struct __tuple_assignable_imp : public false_type {}; | |
template <class _Tp0, class ..._Tp, class _Up0, class ..._Up> | |
struct __tuple_assignable_imp<__tuple_types<_Tp0, _Tp...>, __tuple_types<_Up0, _Up...> > | |
: public integral_constant<bool, | |
is_assignable<_Up0&, _Tp0>::value && | |
__tuple_assignable_imp<__tuple_types<_Tp...>, __tuple_types<_Up...> >::value> {}; | |
template <> | |
struct __tuple_assignable_imp<__tuple_types<>, __tuple_types<> > | |
: public true_type {}; | |
template <bool, class, class> | |
struct __tuple_assignable_apply : public false_type {}; | |
template <class _Tp, class _Up> | |
struct __tuple_assignable_apply<true, _Tp, _Up> | |
: __tuple_assignable_imp< | |
typename __make_tuple_types<_Tp>::type | |
, typename __make_tuple_types<_Up>::type | |
> | |
{}; | |
template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value, | |
bool = __tuple_like<_Up>::value> | |
struct __tuple_assignable | |
: public false_type {}; | |
template <class _Tp, class _Up> | |
struct __tuple_assignable<_Tp, _Up, true, true> | |
: public __tuple_assignable_apply<tuple_size<typename remove_reference<_Tp>::type>::value == | |
tuple_size<_Up>::value, _Tp, _Up> | |
{}; | |
} } | |
# 158 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 2 3 | |
# 162 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 3 | |
namespace std {inline namespace __1 { | |
namespace rel_ops | |
{ | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const _Tp& __x, const _Tp& __y) | |
{ | |
return !(__x == __y); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator> (const _Tp& __x, const _Tp& __y) | |
{ | |
return __y < __x; | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const _Tp& __x, const _Tp& __y) | |
{ | |
return !(__y < __x); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const _Tp& __x, const _Tp& __y) | |
{ | |
return !(__x < __y); | |
} | |
} | |
template<class _Tp, size_t _Np> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) noexcept(__is_nothrow_swappable<_Tp>::value); | |
template <class _ForwardIterator1, class _ForwardIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator2 | |
swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) | |
{ | |
for(; __first1 != __last1; ++__first1, (void) ++__first2) | |
swap(*__first1, *__first2); | |
return __first2; | |
} | |
template<class _Tp, size_t _Np> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) noexcept(__is_nothrow_swappable<_Tp>::value) | |
{ | |
std::__1::swap_ranges(__a, __a + _Np, __b); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename conditional | |
< | |
!is_nothrow_move_constructible<_Tp>::value && is_copy_constructible<_Tp>::value, | |
const _Tp&, | |
_Tp&& | |
>::type | |
move_if_noexcept(_Tp& __x) noexcept | |
{ | |
return std::__1::move(__x); | |
} | |
struct __attribute__ ((__type_visibility__("default"))) piecewise_construct_t { }; | |
constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); | |
template <class _T1, class _T2> | |
struct __attribute__ ((__type_visibility__("default"))) pair | |
{ | |
typedef _T1 first_type; | |
typedef _T2 second_type; | |
_T1 first; | |
_T2 second; | |
template <bool _Dummy = true, class = typename enable_if< | |
__dependent_type<is_default_constructible<_T1>, _Dummy>::value && | |
__dependent_type<is_default_constructible<_T2>, _Dummy>::value | |
>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr pair() : first(), second() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(const _T1& __x, const _T2& __y) | |
: first(__x), second(__y) {} | |
template<class _U1, class _U2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(const pair<_U1, _U2>& __p | |
,typename enable_if<is_convertible<const _U1&, _T1>::value && | |
is_convertible<const _U2&, _T2>::value>::type* = 0 | |
) | |
: first(__p.first), second(__p.second) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(const pair& __p) = default; | |
# 300 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair& operator=(const pair& __p) | |
noexcept(is_nothrow_copy_assignable<first_type>::value && is_nothrow_copy_assignable<second_type>::value) | |
{ | |
first = __p.first; | |
second = __p.second; | |
return *this; | |
} | |
template <class _U1, class _U2, | |
class = typename enable_if<is_convertible<_U1, first_type>::value && | |
is_convertible<_U2, second_type>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(_U1&& __u1, _U2&& __u2) | |
: first(std::__1::forward<_U1>(__u1)), | |
second(std::__1::forward<_U2>(__u2)) | |
{} | |
template<class _U1, class _U2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(pair<_U1, _U2>&& __p, | |
typename enable_if<is_convertible<_U1, _T1>::value && | |
is_convertible<_U2, _T2>::value>::type* = 0) | |
: first(std::__1::forward<_U1>(__p.first)), | |
second(std::__1::forward<_U2>(__p.second)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(pair&& __p) = default; | |
# 342 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair& | |
operator=(pair&& __p) noexcept(is_nothrow_move_assignable<first_type>::value && is_nothrow_move_assignable<second_type>::value) | |
{ | |
first = std::__1::forward<first_type>(__p.first); | |
second = std::__1::forward<second_type>(__p.second); | |
return *this; | |
} | |
template<class _Tuple, | |
class = typename enable_if<__tuple_convertible<_Tuple, pair>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(_Tuple&& __p) | |
: first(std::__1::forward<typename tuple_element<0, | |
typename __make_tuple_types<_Tuple>::type>::type>(std::__1::get<0>(__p))), | |
second(std::__1::forward<typename tuple_element<1, | |
typename __make_tuple_types<_Tuple>::type>::type>(std::__1::get<1>(__p))) | |
{} | |
template <class... _Args1, class... _Args2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(piecewise_construct_t __pc, tuple<_Args1...> __first_args, | |
tuple<_Args2...> __second_args) | |
: pair(__pc, __first_args, __second_args, | |
typename __make_tuple_indices<sizeof...(_Args1)>::type(), | |
typename __make_tuple_indices<sizeof...(_Args2) >::type()) | |
{} | |
template <class _Tuple, | |
class = typename enable_if<__tuple_assignable<_Tuple, pair>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair& | |
operator=(_Tuple&& __p) | |
{ | |
typedef typename __make_tuple_types<_Tuple>::type _TupleRef; | |
typedef typename tuple_element<0, _TupleRef>::type _U0; | |
typedef typename tuple_element<1, _TupleRef>::type _U1; | |
first = std::__1::forward<_U0>(std::__1::get<0>(__p)); | |
second = std::__1::forward<_U1>(std::__1::get<1>(__p)); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(pair& __p) noexcept(__is_nothrow_swappable<first_type>::value && __is_nothrow_swappable<second_type>::value) | |
{ | |
std::__1::iter_swap(&first, &__p.first); | |
std::__1::iter_swap(&second, &__p.second); | |
} | |
private: | |
template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair(piecewise_construct_t, | |
tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args, | |
__tuple_indices<_I1...>, __tuple_indices<_I2...>); | |
}; | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
{ | |
return __x.first == __y.first && __x.second == __y.second; | |
} | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
{ | |
return !(__x == __y); | |
} | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator< (const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
{ | |
return __x.first < __y.first || (!(__y.first < __x.first) && __x.second < __y.second); | |
} | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator> (const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
{ | |
return __y < __x; | |
} | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
{ | |
return !(__x < __y); | |
} | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
{ | |
return !(__y < __x); | |
} | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
__is_swappable<_T1>::value && | |
__is_swappable<_T2>::value, | |
void | |
>::type | |
swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) | |
noexcept((__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value)) | |
{ | |
__x.swap(__y); | |
} | |
template <class _Tp> class __attribute__ ((__type_visibility__("default"))) reference_wrapper; | |
template <class _Tp> | |
struct __make_pair_return_impl | |
{ | |
typedef _Tp type; | |
}; | |
template <class _Tp> | |
struct __make_pair_return_impl<reference_wrapper<_Tp>> | |
{ | |
typedef _Tp& type; | |
}; | |
template <class _Tp> | |
struct __make_pair_return | |
{ | |
typedef typename __make_pair_return_impl<typename decay<_Tp>::type>::type type; | |
}; | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<typename __make_pair_return<_T1>::type, typename __make_pair_return<_T2>::type> | |
make_pair(_T1&& __t1, _T2&& __t2) | |
{ | |
return pair<typename __make_pair_return<_T1>::type, typename __make_pair_return<_T2>::type> | |
(std::__1::forward<_T1>(__t1), std::__1::forward<_T2>(__t2)); | |
} | |
# 517 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 3 | |
template <class _T1, class _T2> | |
class __attribute__ ((__type_visibility__("default"))) tuple_size<pair<_T1, _T2> > | |
: public integral_constant<size_t, 2> {}; | |
template <class _T1, class _T2> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<0, pair<_T1, _T2> > | |
{ | |
public: | |
typedef _T1 type; | |
}; | |
template <class _T1, class _T2> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<1, pair<_T1, _T2> > | |
{ | |
public: | |
typedef _T2 type; | |
}; | |
template <size_t _Ip> struct __get_pair; | |
template <> | |
struct __get_pair<0> | |
{ | |
template <class _T1, class _T2> | |
static | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_T1& | |
get(pair<_T1, _T2>& __p) noexcept {return __p.first;} | |
template <class _T1, class _T2> | |
static | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _T1& | |
get(const pair<_T1, _T2>& __p) noexcept {return __p.first;} | |
template <class _T1, class _T2> | |
static | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_T1&& | |
get(pair<_T1, _T2>&& __p) noexcept {return std::__1::forward<_T1>(__p.first);} | |
}; | |
template <> | |
struct __get_pair<1> | |
{ | |
template <class _T1, class _T2> | |
static | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_T2& | |
get(pair<_T1, _T2>& __p) noexcept {return __p.second;} | |
template <class _T1, class _T2> | |
static | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _T2& | |
get(const pair<_T1, _T2>& __p) noexcept {return __p.second;} | |
template <class _T1, class _T2> | |
static | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_T2&& | |
get(pair<_T1, _T2>&& __p) noexcept {return std::__1::forward<_T2>(__p.second);} | |
}; | |
template <size_t _Ip, class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
get(pair<_T1, _T2>& __p) noexcept | |
{ | |
return __get_pair<_Ip>::get(__p); | |
} | |
template <size_t _Ip, class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
get(const pair<_T1, _T2>& __p) noexcept | |
{ | |
return __get_pair<_Ip>::get(__p); | |
} | |
template <size_t _Ip, class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, pair<_T1, _T2> >::type&& | |
get(pair<_T1, _T2>&& __p) noexcept | |
{ | |
return __get_pair<_Ip>::get(std::__1::move(__p)); | |
} | |
# 759 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility" 3 | |
} } | |
# 628 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 1 3 | |
# 600 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/typeinfo" 1 3 | |
# 61 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/typeinfo" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception" 1 3 | |
# 86 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception" 3 | |
namespace std | |
{ | |
class __attribute__ ((__visibility__("default"))) exception | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) exception() noexcept {} | |
virtual ~exception() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) bad_exception | |
: public exception | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bad_exception() noexcept {} | |
virtual ~bad_exception() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
typedef void (*unexpected_handler)(); | |
__attribute__ ((__visibility__("default"))) unexpected_handler set_unexpected(unexpected_handler) noexcept; | |
__attribute__ ((__visibility__("default"))) unexpected_handler get_unexpected() noexcept; | |
[[noreturn]] __attribute__ ((__visibility__("default"))) void unexpected(); | |
typedef void (*terminate_handler)(); | |
__attribute__ ((__visibility__("default"))) terminate_handler set_terminate(terminate_handler) noexcept; | |
__attribute__ ((__visibility__("default"))) terminate_handler get_terminate() noexcept; | |
[[noreturn]] __attribute__ ((__visibility__("default"))) void terminate() noexcept; | |
__attribute__ ((__visibility__("default"))) bool uncaught_exception() noexcept; | |
__attribute__ ((__visibility__("default"))) __attribute__((availability(macosx,strict,introduced=10.12))) __attribute__((availability(ios,strict,introduced=10.0))) __attribute__((availability(tvos,strict,introduced=10.0))) __attribute__((availability(watchos,strict,introduced=3.0))) int uncaught_exceptions() noexcept; | |
class __attribute__ ((__type_visibility__("default"))) exception_ptr; | |
__attribute__ ((__visibility__("default"))) exception_ptr current_exception() noexcept; | |
[[noreturn]] __attribute__ ((__visibility__("default"))) void rethrow_exception(exception_ptr); | |
class __attribute__ ((__type_visibility__("default"))) exception_ptr | |
{ | |
void* __ptr_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) exception_ptr() noexcept : __ptr_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) exception_ptr(nullptr_t) noexcept : __ptr_() {} | |
exception_ptr(const exception_ptr&) noexcept; | |
exception_ptr& operator=(const exception_ptr&) noexcept; | |
~exception_ptr() noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit | |
operator bool() const noexcept {return __ptr_ != nullptr;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const exception_ptr& __x, const exception_ptr& __y) noexcept | |
{return __x.__ptr_ == __y.__ptr_;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const exception_ptr& __x, const exception_ptr& __y) noexcept | |
{return !(__x == __y);} | |
friend __attribute__ ((__visibility__("default"))) exception_ptr current_exception() noexcept; | |
friend __attribute__ ((__visibility__("default"))) void rethrow_exception(exception_ptr); | |
}; | |
template<class _Ep> | |
exception_ptr | |
make_exception_ptr(_Ep __e) noexcept | |
{ | |
# 165 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/exception" 3 | |
} | |
class __attribute__ ((__visibility__("default"))) nested_exception | |
{ | |
exception_ptr __ptr_; | |
public: | |
nested_exception() noexcept; | |
virtual ~nested_exception() noexcept; | |
[[noreturn]] void rethrow_nested() const; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) exception_ptr nested_ptr() const noexcept {return __ptr_;} | |
}; | |
template <class _Tp> | |
struct __nested | |
: public _Tp, | |
public nested_exception | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __nested(const _Tp& __t) : _Tp(__t) {} | |
}; | |
template <class _Tp> | |
[[noreturn]] | |
void | |
throw_with_nested(_Tp&& __t, typename enable_if< | |
is_class<typename remove_reference<_Tp>::type>::value && | |
!is_base_of<nested_exception, typename remove_reference<_Tp>::type>::value | |
&& !__libcpp_is_final<typename remove_reference<_Tp>::type>::value | |
>::type* = 0) | |
{ | |
} | |
template <class _Tp> | |
[[noreturn]] | |
void | |
throw_with_nested(_Tp&& __t, typename enable_if< | |
!is_class<typename remove_reference<_Tp>::type>::value || | |
is_base_of<nested_exception, typename remove_reference<_Tp>::type>::value | |
|| __libcpp_is_final<typename remove_reference<_Tp>::type>::value | |
>::type* = 0) | |
{ | |
} | |
template <class _Ep> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
rethrow_if_nested(const _Ep& __e, typename enable_if< | |
is_polymorphic<_Ep>::value | |
>::type* = 0) | |
{ | |
const nested_exception* __nep = dynamic_cast<const nested_exception*>(&__e); | |
if (__nep) | |
__nep->rethrow_nested(); | |
} | |
template <class _Ep> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
rethrow_if_nested(const _Ep&, typename enable_if< | |
!is_polymorphic<_Ep>::value | |
>::type* = 0) | |
{ | |
} | |
} | |
# 62 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/typeinfo" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdint" 1 3 | |
# 145 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdint" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdint.h" 1 3 4 | |
# 63 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdint.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 1 3 4 | |
# 18 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int8_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int8_t.h" 3 4 | |
typedef signed char int8_t; | |
# 19 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int16_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int16_t.h" 3 4 | |
typedef short int16_t; | |
# 20 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int32_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int32_t.h" 3 4 | |
typedef int int32_t; | |
# 21 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int64_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_int64_t.h" 3 4 | |
typedef long long int64_t; | |
# 22 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint8_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint8_t.h" 3 4 | |
typedef unsigned char uint8_t; | |
# 24 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint16_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint16_t.h" 3 4 | |
typedef unsigned short uint16_t; | |
# 25 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint32_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint32_t.h" 3 4 | |
typedef unsigned int uint32_t; | |
# 26 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint64_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uint64_t.h" 3 4 | |
typedef unsigned long long uint64_t; | |
# 27 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
typedef int8_t int_least8_t; | |
typedef int16_t int_least16_t; | |
typedef int32_t int_least32_t; | |
typedef int64_t int_least64_t; | |
typedef uint8_t uint_least8_t; | |
typedef uint16_t uint_least16_t; | |
typedef uint32_t uint_least32_t; | |
typedef uint64_t uint_least64_t; | |
typedef int8_t int_fast8_t; | |
typedef int16_t int_fast16_t; | |
typedef int32_t int_fast32_t; | |
typedef int64_t int_fast64_t; | |
typedef uint8_t uint_fast8_t; | |
typedef uint16_t uint_fast16_t; | |
typedef uint32_t uint_fast32_t; | |
typedef uint64_t uint_fast64_t; | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_intptr_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_intptr_t.h" 3 4 | |
typedef __darwin_intptr_t intptr_t; | |
# 54 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_uintptr_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_uintptr_t.h" 3 4 | |
typedef unsigned long uintptr_t; | |
# 55 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_intmax_t.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_intmax_t.h" 3 4 | |
typedef long int intmax_t; | |
# 59 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uintmax_t.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_uintmax_t.h" 3 4 | |
typedef long unsigned int uintmax_t; | |
# 60 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h" 2 3 4 | |
# 64 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdint.h" 2 3 4 | |
# 146 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdint" 2 3 | |
# 149 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdint" 3 | |
namespace std {inline namespace __1 { | |
using::int8_t; | |
using::int16_t; | |
using::int32_t; | |
using::int64_t; | |
using::uint8_t; | |
using::uint16_t; | |
using::uint32_t; | |
using::uint64_t; | |
using::int_least8_t; | |
using::int_least16_t; | |
using::int_least32_t; | |
using::int_least64_t; | |
using::uint_least8_t; | |
using::uint_least16_t; | |
using::uint_least32_t; | |
using::uint_least64_t; | |
using::int_fast8_t; | |
using::int_fast16_t; | |
using::int_fast32_t; | |
using::int_fast64_t; | |
using::uint_fast8_t; | |
using::uint_fast16_t; | |
using::uint_fast32_t; | |
using::uint_fast64_t; | |
using::intptr_t; | |
using::uintptr_t; | |
using::intmax_t; | |
using::uintmax_t; | |
} } | |
# 64 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/typeinfo" 2 3 | |
# 67 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/typeinfo" 3 | |
namespace std | |
{ | |
class __attribute__ ((__visibility__("default"))) type_info | |
{ | |
type_info& operator=(const type_info&); | |
type_info(const type_info&); | |
protected: | |
const char* __type_name; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit type_info(const char* __n) | |
: __type_name(__n) {} | |
public: | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
virtual ~type_info(); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const char* name() const noexcept | |
{return __type_name;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool before(const type_info& __arg) const noexcept | |
{return __type_name < __arg.__type_name;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t hash_code() const noexcept | |
{return *reinterpret_cast<const size_t*>(&__type_name);} | |
# 127 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/typeinfo" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const type_info& __arg) const noexcept | |
{return __type_name == __arg.__type_name;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const type_info& __arg) const noexcept | |
{return !operator==(__arg);} | |
}; | |
class __attribute__ ((__visibility__("default"))) bad_cast | |
: public exception | |
{ | |
public: | |
bad_cast() noexcept; | |
virtual ~bad_cast() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) bad_typeid | |
: public exception | |
{ | |
public: | |
bad_typeid() noexcept; | |
virtual ~bad_typeid() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
} | |
# 601 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/new" 1 3 | |
# 73 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/new" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__undef___deallocate" 1 3 | |
# 74 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/new" 2 3 | |
# 77 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/new" 3 | |
namespace std | |
{ | |
class __attribute__ ((__visibility__("default"))) bad_alloc | |
: public exception | |
{ | |
public: | |
bad_alloc() noexcept; | |
virtual ~bad_alloc() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) bad_array_new_length | |
: public bad_alloc | |
{ | |
public: | |
bad_array_new_length() noexcept; | |
virtual ~bad_array_new_length() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
# 114 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/new" 3 | |
__attribute__ ((__visibility__("default"))) void __throw_bad_alloc(); | |
struct __attribute__ ((__type_visibility__("default"))) nothrow_t {}; | |
extern __attribute__ ((__visibility__("default"))) const nothrow_t nothrow; | |
typedef void (*new_handler)(); | |
__attribute__ ((__visibility__("default"))) new_handler set_new_handler(new_handler) noexcept; | |
__attribute__ ((__visibility__("default"))) new_handler get_new_handler() noexcept; | |
} | |
__attribute__ ((__visibility__("default"))) void* operator new(std::size_t __sz) | |
; | |
__attribute__ ((__visibility__("default"))) void* operator new(std::size_t __sz, const std::nothrow_t&) noexcept __attribute__((__malloc__)); | |
__attribute__ ((__visibility__("default"))) void operator delete(void* __p) noexcept; | |
__attribute__ ((__visibility__("default"))) void operator delete(void* __p, const std::nothrow_t&) noexcept; | |
__attribute__ ((__visibility__("default"))) void* operator new[](std::size_t __sz) | |
; | |
__attribute__ ((__visibility__("default"))) void* operator new[](std::size_t __sz, const std::nothrow_t&) noexcept __attribute__((__malloc__)); | |
__attribute__ ((__visibility__("default"))) void operator delete[](void* __p) noexcept; | |
__attribute__ ((__visibility__("default"))) void operator delete[](void* __p, const std::nothrow_t&) noexcept; | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void* operator new (std::size_t, void* __p) noexcept {return __p;} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void* operator new[](std::size_t, void* __p) noexcept {return __p;} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void operator delete (void*, void*) noexcept {} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void operator delete[](void*, void*) noexcept {} | |
namespace std {inline namespace __1 { | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void *__allocate(size_t __size) { | |
return __builtin_operator_new(__size); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) void __deallocate(void *__ptr) { | |
__builtin_operator_delete(__ptr); | |
} | |
} } | |
# 604 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/limits" 1 3 | |
# 107 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/limits" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__undef_min_max" 1 3 | |
# 113 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/limits" 2 3 | |
# 122 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/limits" 3 | |
namespace std {inline namespace __1 { | |
enum float_round_style | |
{ | |
round_indeterminate = -1, | |
round_toward_zero = 0, | |
round_to_nearest = 1, | |
round_toward_infinity = 2, | |
round_toward_neg_infinity = 3 | |
}; | |
enum float_denorm_style | |
{ | |
denorm_indeterminate = -1, | |
denorm_absent = 0, | |
denorm_present = 1 | |
}; | |
template <class _Tp, bool = is_arithmetic<_Tp>::value> | |
class __libcpp_numeric_limits | |
{ | |
protected: | |
typedef _Tp type; | |
static constexpr const bool is_specialized = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return type();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return type();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return type();} | |
static constexpr const int digits = 0; | |
static constexpr const int digits10 = 0; | |
static constexpr const int max_digits10 = 0; | |
static constexpr const bool is_signed = false; | |
static constexpr const bool is_integer = false; | |
static constexpr const bool is_exact = false; | |
static constexpr const int radix = 0; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return type();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return type();} | |
static constexpr const int min_exponent = 0; | |
static constexpr const int min_exponent10 = 0; | |
static constexpr const int max_exponent = 0; | |
static constexpr const int max_exponent10 = 0; | |
static constexpr const bool has_infinity = false; | |
static constexpr const bool has_quiet_NaN = false; | |
static constexpr const bool has_signaling_NaN = false; | |
static constexpr const float_denorm_style has_denorm = denorm_absent; | |
static constexpr const bool has_denorm_loss = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return type();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return type();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return type();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return type();} | |
static constexpr const bool is_iec559 = false; | |
static constexpr const bool is_bounded = false; | |
static constexpr const bool is_modulo = false; | |
static constexpr const bool traps = false; | |
static constexpr const bool tinyness_before = false; | |
static constexpr const float_round_style round_style = round_toward_zero; | |
}; | |
template <class _Tp, int digits, bool is_signed> | |
struct __libcpp_compute_min | |
{ | |
static constexpr const _Tp value = _Tp(_Tp(1) << digits); | |
}; | |
template <class _Tp, int digits> | |
struct __libcpp_compute_min<_Tp, digits, false> | |
{ | |
static constexpr const _Tp value = _Tp(0); | |
}; | |
template <class _Tp> | |
class __libcpp_numeric_limits<_Tp, true> | |
{ | |
protected: | |
typedef _Tp type; | |
static constexpr const bool is_specialized = true; | |
static constexpr const bool is_signed = type(-1) < type(0); | |
static constexpr const int digits = static_cast<int>(sizeof(type) * 8 - is_signed); | |
static constexpr const int digits10 = digits * 3 / 10; | |
static constexpr const int max_digits10 = 0; | |
static constexpr const type __min = __libcpp_compute_min<type, digits, is_signed>::value; | |
static constexpr const type __max = is_signed ? type(type(~0) ^ __min) : type(~0); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return __min;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return __max;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return min();} | |
static constexpr const bool is_integer = true; | |
static constexpr const bool is_exact = true; | |
static constexpr const int radix = 2; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return type(0);} | |
static constexpr const int min_exponent = 0; | |
static constexpr const int min_exponent10 = 0; | |
static constexpr const int max_exponent = 0; | |
static constexpr const int max_exponent10 = 0; | |
static constexpr const bool has_infinity = false; | |
static constexpr const bool has_quiet_NaN = false; | |
static constexpr const bool has_signaling_NaN = false; | |
static constexpr const float_denorm_style has_denorm = denorm_absent; | |
static constexpr const bool has_denorm_loss = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return type(0);} | |
static constexpr const bool is_iec559 = false; | |
static constexpr const bool is_bounded = true; | |
static constexpr const bool is_modulo = !std::__1::is_signed<_Tp>::value; | |
static constexpr const bool traps = true; | |
static constexpr const bool tinyness_before = false; | |
static constexpr const float_round_style round_style = round_toward_zero; | |
}; | |
template <> | |
class __libcpp_numeric_limits<bool, true> | |
{ | |
protected: | |
typedef bool type; | |
static constexpr const bool is_specialized = true; | |
static constexpr const bool is_signed = false; | |
static constexpr const int digits = 1; | |
static constexpr const int digits10 = 0; | |
static constexpr const int max_digits10 = 0; | |
static constexpr const type __min = false; | |
static constexpr const type __max = true; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return __min;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return __max;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return min();} | |
static constexpr const bool is_integer = true; | |
static constexpr const bool is_exact = true; | |
static constexpr const int radix = 2; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return type(0);} | |
static constexpr const int min_exponent = 0; | |
static constexpr const int min_exponent10 = 0; | |
static constexpr const int max_exponent = 0; | |
static constexpr const int max_exponent10 = 0; | |
static constexpr const bool has_infinity = false; | |
static constexpr const bool has_quiet_NaN = false; | |
static constexpr const bool has_signaling_NaN = false; | |
static constexpr const float_denorm_style has_denorm = denorm_absent; | |
static constexpr const bool has_denorm_loss = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return type(0);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return type(0);} | |
static constexpr const bool is_iec559 = false; | |
static constexpr const bool is_bounded = true; | |
static constexpr const bool is_modulo = false; | |
static constexpr const bool traps = false; | |
static constexpr const bool tinyness_before = false; | |
static constexpr const float_round_style round_style = round_toward_zero; | |
}; | |
template <> | |
class __libcpp_numeric_limits<float, true> | |
{ | |
protected: | |
typedef float type; | |
static constexpr const bool is_specialized = true; | |
static constexpr const bool is_signed = true; | |
static constexpr const int digits = 24; | |
static constexpr const int digits10 = 6; | |
static constexpr const int max_digits10 = 2+(digits * 30103)/100000; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return 1.17549435e-38F;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return 3.40282347e+38F;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return -max();} | |
static constexpr const bool is_integer = false; | |
static constexpr const bool is_exact = false; | |
static constexpr const int radix = 2; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return 1.19209290e-7F;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return 0.5F;} | |
static constexpr const int min_exponent = (-125); | |
static constexpr const int min_exponent10 = (-37); | |
static constexpr const int max_exponent = 128; | |
static constexpr const int max_exponent10 = 38; | |
static constexpr const bool has_infinity = true; | |
static constexpr const bool has_quiet_NaN = true; | |
static constexpr const bool has_signaling_NaN = true; | |
static constexpr const float_denorm_style has_denorm = denorm_present; | |
static constexpr const bool has_denorm_loss = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __builtin_huge_valf();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __builtin_nanf("");} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __builtin_nansf("");} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return 1.40129846e-45F;} | |
static constexpr const bool is_iec559 = true; | |
static constexpr const bool is_bounded = true; | |
static constexpr const bool is_modulo = false; | |
static constexpr const bool traps = false; | |
static constexpr const bool tinyness_before = false; | |
static constexpr const float_round_style round_style = round_to_nearest; | |
}; | |
template <> | |
class __libcpp_numeric_limits<double, true> | |
{ | |
protected: | |
typedef double type; | |
static constexpr const bool is_specialized = true; | |
static constexpr const bool is_signed = true; | |
static constexpr const int digits = 53; | |
static constexpr const int digits10 = 15; | |
static constexpr const int max_digits10 = 2+(digits * 30103)/100000; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return 2.2250738585072014e-308;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return 1.7976931348623157e+308;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return -max();} | |
static constexpr const bool is_integer = false; | |
static constexpr const bool is_exact = false; | |
static constexpr const int radix = 2; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return 2.2204460492503131e-16;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return 0.5;} | |
static constexpr const int min_exponent = (-1021); | |
static constexpr const int min_exponent10 = (-307); | |
static constexpr const int max_exponent = 1024; | |
static constexpr const int max_exponent10 = 308; | |
static constexpr const bool has_infinity = true; | |
static constexpr const bool has_quiet_NaN = true; | |
static constexpr const bool has_signaling_NaN = true; | |
static constexpr const float_denorm_style has_denorm = denorm_present; | |
static constexpr const bool has_denorm_loss = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __builtin_huge_val();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __builtin_nan("");} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __builtin_nans("");} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return 4.9406564584124654e-324;} | |
static constexpr const bool is_iec559 = true; | |
static constexpr const bool is_bounded = true; | |
static constexpr const bool is_modulo = false; | |
static constexpr const bool traps = false; | |
static constexpr const bool tinyness_before = false; | |
static constexpr const float_round_style round_style = round_to_nearest; | |
}; | |
template <> | |
class __libcpp_numeric_limits<long double, true> | |
{ | |
protected: | |
typedef long double type; | |
static constexpr const bool is_specialized = true; | |
static constexpr const bool is_signed = true; | |
static constexpr const int digits = 64; | |
static constexpr const int digits10 = 18; | |
static constexpr const int max_digits10 = 2+(digits * 30103)/100000; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return 3.36210314311209350626e-4932L;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return 1.18973149535723176502e+4932L;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return -max();} | |
static constexpr const bool is_integer = false; | |
static constexpr const bool is_exact = false; | |
static constexpr const int radix = 2; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return 1.08420217248550443401e-19L;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return 0.5;} | |
static constexpr const int min_exponent = (-16381); | |
static constexpr const int min_exponent10 = (-4931); | |
static constexpr const int max_exponent = 16384; | |
static constexpr const int max_exponent10 = 4932; | |
static constexpr const bool has_infinity = true; | |
static constexpr const bool has_quiet_NaN = true; | |
static constexpr const bool has_signaling_NaN = true; | |
static constexpr const float_denorm_style has_denorm = denorm_present; | |
static constexpr const bool has_denorm_loss = false; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __builtin_huge_vall();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __builtin_nanl("");} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __builtin_nansl("");} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return 3.64519953188247460253e-4951L;} | |
static constexpr const bool is_iec559 = true; | |
static constexpr const bool is_bounded = true; | |
static constexpr const bool is_modulo = false; | |
static constexpr const bool traps = false; | |
static constexpr const bool tinyness_before = false; | |
static constexpr const float_round_style round_style = round_to_nearest; | |
}; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) numeric_limits | |
: private __libcpp_numeric_limits<typename remove_cv<_Tp>::type> | |
{ | |
typedef __libcpp_numeric_limits<typename remove_cv<_Tp>::type> __base; | |
typedef typename __base::type type; | |
public: | |
static constexpr const bool is_specialized = __base::is_specialized; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return __base::min();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return __base::max();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return __base::lowest();} | |
static constexpr const int digits = __base::digits; | |
static constexpr const int digits10 = __base::digits10; | |
static constexpr const int max_digits10 = __base::max_digits10; | |
static constexpr const bool is_signed = __base::is_signed; | |
static constexpr const bool is_integer = __base::is_integer; | |
static constexpr const bool is_exact = __base::is_exact; | |
static constexpr const int radix = __base::radix; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return __base::epsilon();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return __base::round_error();} | |
static constexpr const int min_exponent = __base::min_exponent; | |
static constexpr const int min_exponent10 = __base::min_exponent10; | |
static constexpr const int max_exponent = __base::max_exponent; | |
static constexpr const int max_exponent10 = __base::max_exponent10; | |
static constexpr const bool has_infinity = __base::has_infinity; | |
static constexpr const bool has_quiet_NaN = __base::has_quiet_NaN; | |
static constexpr const bool has_signaling_NaN = __base::has_signaling_NaN; | |
static constexpr const float_denorm_style has_denorm = __base::has_denorm; | |
static constexpr const bool has_denorm_loss = __base::has_denorm_loss; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __base::infinity();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __base::quiet_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __base::signaling_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return __base::denorm_min();} | |
static constexpr const bool is_iec559 = __base::is_iec559; | |
static constexpr const bool is_bounded = __base::is_bounded; | |
static constexpr const bool is_modulo = __base::is_modulo; | |
static constexpr const bool traps = __base::traps; | |
static constexpr const bool tinyness_before = __base::tinyness_before; | |
static constexpr const float_round_style round_style = __base::round_style; | |
}; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_specialized; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::digits; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::digits10; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::max_digits10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_signed; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_integer; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_exact; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::radix; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::min_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::min_exponent10; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::max_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<_Tp>::max_exponent10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::has_infinity; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::has_quiet_NaN; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::has_signaling_NaN; | |
template <class _Tp> | |
constexpr const float_denorm_style numeric_limits<_Tp>::has_denorm; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::has_denorm_loss; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_iec559; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_bounded; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::is_modulo; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::traps; | |
template <class _Tp> | |
constexpr const bool numeric_limits<_Tp>::tinyness_before; | |
template <class _Tp> | |
constexpr const float_round_style numeric_limits<_Tp>::round_style; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) numeric_limits<const _Tp> | |
: private numeric_limits<_Tp> | |
{ | |
typedef numeric_limits<_Tp> __base; | |
typedef _Tp type; | |
public: | |
static constexpr const bool is_specialized = __base::is_specialized; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return __base::min();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return __base::max();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return __base::lowest();} | |
static constexpr const int digits = __base::digits; | |
static constexpr const int digits10 = __base::digits10; | |
static constexpr const int max_digits10 = __base::max_digits10; | |
static constexpr const bool is_signed = __base::is_signed; | |
static constexpr const bool is_integer = __base::is_integer; | |
static constexpr const bool is_exact = __base::is_exact; | |
static constexpr const int radix = __base::radix; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return __base::epsilon();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return __base::round_error();} | |
static constexpr const int min_exponent = __base::min_exponent; | |
static constexpr const int min_exponent10 = __base::min_exponent10; | |
static constexpr const int max_exponent = __base::max_exponent; | |
static constexpr const int max_exponent10 = __base::max_exponent10; | |
static constexpr const bool has_infinity = __base::has_infinity; | |
static constexpr const bool has_quiet_NaN = __base::has_quiet_NaN; | |
static constexpr const bool has_signaling_NaN = __base::has_signaling_NaN; | |
static constexpr const float_denorm_style has_denorm = __base::has_denorm; | |
static constexpr const bool has_denorm_loss = __base::has_denorm_loss; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __base::infinity();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __base::quiet_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __base::signaling_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return __base::denorm_min();} | |
static constexpr const bool is_iec559 = __base::is_iec559; | |
static constexpr const bool is_bounded = __base::is_bounded; | |
static constexpr const bool is_modulo = __base::is_modulo; | |
static constexpr const bool traps = __base::traps; | |
static constexpr const bool tinyness_before = __base::tinyness_before; | |
static constexpr const float_round_style round_style = __base::round_style; | |
}; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_specialized; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::digits; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::digits10; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::max_digits10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_signed; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_integer; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_exact; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::radix; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::min_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::min_exponent10; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::max_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<const _Tp>::max_exponent10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::has_infinity; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::has_quiet_NaN; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::has_signaling_NaN; | |
template <class _Tp> | |
constexpr const float_denorm_style numeric_limits<const _Tp>::has_denorm; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::has_denorm_loss; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_iec559; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_bounded; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::is_modulo; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::traps; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const _Tp>::tinyness_before; | |
template <class _Tp> | |
constexpr const float_round_style numeric_limits<const _Tp>::round_style; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) numeric_limits<volatile _Tp> | |
: private numeric_limits<_Tp> | |
{ | |
typedef numeric_limits<_Tp> __base; | |
typedef _Tp type; | |
public: | |
static constexpr const bool is_specialized = __base::is_specialized; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return __base::min();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return __base::max();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return __base::lowest();} | |
static constexpr const int digits = __base::digits; | |
static constexpr const int digits10 = __base::digits10; | |
static constexpr const int max_digits10 = __base::max_digits10; | |
static constexpr const bool is_signed = __base::is_signed; | |
static constexpr const bool is_integer = __base::is_integer; | |
static constexpr const bool is_exact = __base::is_exact; | |
static constexpr const int radix = __base::radix; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return __base::epsilon();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return __base::round_error();} | |
static constexpr const int min_exponent = __base::min_exponent; | |
static constexpr const int min_exponent10 = __base::min_exponent10; | |
static constexpr const int max_exponent = __base::max_exponent; | |
static constexpr const int max_exponent10 = __base::max_exponent10; | |
static constexpr const bool has_infinity = __base::has_infinity; | |
static constexpr const bool has_quiet_NaN = __base::has_quiet_NaN; | |
static constexpr const bool has_signaling_NaN = __base::has_signaling_NaN; | |
static constexpr const float_denorm_style has_denorm = __base::has_denorm; | |
static constexpr const bool has_denorm_loss = __base::has_denorm_loss; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __base::infinity();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __base::quiet_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __base::signaling_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return __base::denorm_min();} | |
static constexpr const bool is_iec559 = __base::is_iec559; | |
static constexpr const bool is_bounded = __base::is_bounded; | |
static constexpr const bool is_modulo = __base::is_modulo; | |
static constexpr const bool traps = __base::traps; | |
static constexpr const bool tinyness_before = __base::tinyness_before; | |
static constexpr const float_round_style round_style = __base::round_style; | |
}; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_specialized; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::digits; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::digits10; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::max_digits10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_signed; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_integer; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_exact; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::radix; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::min_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::min_exponent10; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::max_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<volatile _Tp>::max_exponent10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::has_infinity; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::has_quiet_NaN; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::has_signaling_NaN; | |
template <class _Tp> | |
constexpr const float_denorm_style numeric_limits<volatile _Tp>::has_denorm; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::has_denorm_loss; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_iec559; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_bounded; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::is_modulo; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::traps; | |
template <class _Tp> | |
constexpr const bool numeric_limits<volatile _Tp>::tinyness_before; | |
template <class _Tp> | |
constexpr const float_round_style numeric_limits<volatile _Tp>::round_style; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) numeric_limits<const volatile _Tp> | |
: private numeric_limits<_Tp> | |
{ | |
typedef numeric_limits<_Tp> __base; | |
typedef _Tp type; | |
public: | |
static constexpr const bool is_specialized = __base::is_specialized; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type min() noexcept {return __base::min();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type max() noexcept {return __base::max();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type lowest() noexcept {return __base::lowest();} | |
static constexpr const int digits = __base::digits; | |
static constexpr const int digits10 = __base::digits10; | |
static constexpr const int max_digits10 = __base::max_digits10; | |
static constexpr const bool is_signed = __base::is_signed; | |
static constexpr const bool is_integer = __base::is_integer; | |
static constexpr const bool is_exact = __base::is_exact; | |
static constexpr const int radix = __base::radix; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type epsilon() noexcept {return __base::epsilon();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type round_error() noexcept {return __base::round_error();} | |
static constexpr const int min_exponent = __base::min_exponent; | |
static constexpr const int min_exponent10 = __base::min_exponent10; | |
static constexpr const int max_exponent = __base::max_exponent; | |
static constexpr const int max_exponent10 = __base::max_exponent10; | |
static constexpr const bool has_infinity = __base::has_infinity; | |
static constexpr const bool has_quiet_NaN = __base::has_quiet_NaN; | |
static constexpr const bool has_signaling_NaN = __base::has_signaling_NaN; | |
static constexpr const float_denorm_style has_denorm = __base::has_denorm; | |
static constexpr const bool has_denorm_loss = __base::has_denorm_loss; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type infinity() noexcept {return __base::infinity();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type quiet_NaN() noexcept {return __base::quiet_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type signaling_NaN() noexcept {return __base::signaling_NaN();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) static constexpr type denorm_min() noexcept {return __base::denorm_min();} | |
static constexpr const bool is_iec559 = __base::is_iec559; | |
static constexpr const bool is_bounded = __base::is_bounded; | |
static constexpr const bool is_modulo = __base::is_modulo; | |
static constexpr const bool traps = __base::traps; | |
static constexpr const bool tinyness_before = __base::tinyness_before; | |
static constexpr const float_round_style round_style = __base::round_style; | |
}; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_specialized; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::digits; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::digits10; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::max_digits10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_signed; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_integer; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_exact; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::radix; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::min_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::min_exponent10; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::max_exponent; | |
template <class _Tp> | |
constexpr const int numeric_limits<const volatile _Tp>::max_exponent10; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::has_infinity; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::has_quiet_NaN; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::has_signaling_NaN; | |
template <class _Tp> | |
constexpr const float_denorm_style numeric_limits<const volatile _Tp>::has_denorm; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::has_denorm_loss; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_iec559; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_bounded; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::is_modulo; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::traps; | |
template <class _Tp> | |
constexpr const bool numeric_limits<const volatile _Tp>::tinyness_before; | |
template <class _Tp> | |
constexpr const float_round_style numeric_limits<const volatile _Tp>::round_style; | |
} } | |
# 606 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 1 3 | |
# 343 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 1 3 | |
# 22 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
namespace std {inline namespace __1 { | |
template <class _Arg, class _Result> | |
struct __attribute__ ((__type_visibility__("default"))) unary_function | |
{ | |
typedef _Arg argument_type; | |
typedef _Result result_type; | |
}; | |
template <class _Arg1, class _Arg2, class _Result> | |
struct __attribute__ ((__type_visibility__("default"))) binary_function | |
{ | |
typedef _Arg1 first_argument_type; | |
typedef _Arg2 second_argument_type; | |
typedef _Result result_type; | |
}; | |
template <class _Tp> struct __attribute__ ((__type_visibility__("default"))) hash; | |
template <class _Tp> | |
struct __has_result_type | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::result_type* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) less : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x < __y;} | |
}; | |
# 82 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
addressof(_Tp& __x) noexcept | |
{ | |
return (_Tp*)&reinterpret_cast<const volatile char&>(__x); | |
} | |
# 133 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
template <class _Tp> | |
struct __derives_from_unary_function | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
static __two __test(...); | |
template <class _Ap, class _Rp> | |
static unary_function<_Ap, _Rp> | |
__test(const volatile unary_function<_Ap, _Rp>*); | |
public: | |
static const bool value = !is_same<decltype(__test((_Tp*)0)), __two>::value; | |
typedef decltype(__test((_Tp*)0)) type; | |
}; | |
template <class _Tp> | |
struct __derives_from_binary_function | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
static __two __test(...); | |
template <class _A1, class _A2, class _Rp> | |
static binary_function<_A1, _A2, _Rp> | |
__test(const volatile binary_function<_A1, _A2, _Rp>*); | |
public: | |
static const bool value = !is_same<decltype(__test((_Tp*)0)), __two>::value; | |
typedef decltype(__test((_Tp*)0)) type; | |
}; | |
template <class _Tp, bool = __derives_from_unary_function<_Tp>::value> | |
struct __maybe_derive_from_unary_function | |
: public __derives_from_unary_function<_Tp>::type | |
{ | |
}; | |
template <class _Tp> | |
struct __maybe_derive_from_unary_function<_Tp, false> | |
{ | |
}; | |
template <class _Tp, bool = __derives_from_binary_function<_Tp>::value> | |
struct __maybe_derive_from_binary_function | |
: public __derives_from_binary_function<_Tp>::type | |
{ | |
}; | |
template <class _Tp> | |
struct __maybe_derive_from_binary_function<_Tp, false> | |
{ | |
}; | |
template <class _Tp, bool = __has_result_type<_Tp>::value> | |
struct __weak_result_type_imp | |
: public __maybe_derive_from_unary_function<_Tp>, | |
public __maybe_derive_from_binary_function<_Tp> | |
{ | |
typedef typename _Tp::result_type result_type; | |
}; | |
template <class _Tp> | |
struct __weak_result_type_imp<_Tp, false> | |
: public __maybe_derive_from_unary_function<_Tp>, | |
public __maybe_derive_from_binary_function<_Tp> | |
{ | |
}; | |
template <class _Tp> | |
struct __weak_result_type | |
: public __weak_result_type_imp<_Tp> | |
{ | |
}; | |
template <class _Rp> | |
struct __weak_result_type<_Rp ()> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp> | |
struct __weak_result_type<_Rp (&)()> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp> | |
struct __weak_result_type<_Rp (*)()> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _A1> | |
struct __weak_result_type<_Rp (_A1)> | |
: public unary_function<_A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _A1> | |
struct __weak_result_type<_Rp (&)(_A1)> | |
: public unary_function<_A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _A1> | |
struct __weak_result_type<_Rp (*)(_A1)> | |
: public unary_function<_A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp> | |
struct __weak_result_type<_Rp (_Cp::*)()> | |
: public unary_function<_Cp*, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp> | |
struct __weak_result_type<_Rp (_Cp::*)() const> | |
: public unary_function<const _Cp*, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp> | |
struct __weak_result_type<_Rp (_Cp::*)() volatile> | |
: public unary_function<volatile _Cp*, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp> | |
struct __weak_result_type<_Rp (_Cp::*)() const volatile> | |
: public unary_function<const volatile _Cp*, _Rp> | |
{ | |
}; | |
template <class _Rp, class _A1, class _A2> | |
struct __weak_result_type<_Rp (_A1, _A2)> | |
: public binary_function<_A1, _A2, _Rp> | |
{ | |
}; | |
template <class _Rp, class _A1, class _A2> | |
struct __weak_result_type<_Rp (*)(_A1, _A2)> | |
: public binary_function<_A1, _A2, _Rp> | |
{ | |
}; | |
template <class _Rp, class _A1, class _A2> | |
struct __weak_result_type<_Rp (&)(_A1, _A2)> | |
: public binary_function<_A1, _A2, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp, class _A1> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1)> | |
: public binary_function<_Cp*, _A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp, class _A1> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1) const> | |
: public binary_function<const _Cp*, _A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp, class _A1> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> | |
: public binary_function<volatile _Cp*, _A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _Cp, class _A1> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> | |
: public binary_function<const volatile _Cp*, _A1, _Rp> | |
{ | |
}; | |
template <class _Rp, class _A1, class _A2, class _A3, class ..._A4> | |
struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _A1, class _A2, class _A3, class ..._A4> | |
struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _A1, class _A2, class _A3, class ..._A4> | |
struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> | |
{ | |
typedef _Rp result_type; | |
}; | |
template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> | |
{ | |
typedef _Rp result_type; | |
}; | |
# 366 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
template <class _Fp, class _A0, class ..._Args, | |
class> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
-> decltype((std::__1::forward<_A0>(__a0).*__f)(std::__1::forward<_Args>(__args)...)) | |
{ | |
return (std::__1::forward<_A0>(__a0).*__f)(std::__1::forward<_Args>(__args)...); | |
} | |
template <class _Fp, class _A0, class ..._Args, | |
class> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
-> decltype(((*std::__1::forward<_A0>(__a0)).*__f)(std::__1::forward<_Args>(__args)...)) | |
{ | |
return ((*std::__1::forward<_A0>(__a0)).*__f)(std::__1::forward<_Args>(__args)...); | |
} | |
template <class _Fp, class _A0, | |
class> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0) | |
-> decltype(std::__1::forward<_A0>(__a0).*__f) | |
{ | |
return std::__1::forward<_A0>(__a0).*__f; | |
} | |
template <class _Fp, class _A0, | |
class> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _A0&& __a0) | |
-> decltype((*std::__1::forward<_A0>(__a0)).*__f) | |
{ | |
return (*std::__1::forward<_A0>(__a0)).*__f; | |
} | |
template <class _Fp, class ..._Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
__invoke(_Fp&& __f, _Args&& ...__args) | |
-> decltype(std::__1::forward<_Fp>(__f)(std::__1::forward<_Args>(__args)...)) | |
{ | |
return std::__1::forward<_Fp>(__f)(std::__1::forward<_Args>(__args)...); | |
} | |
template <class _Tp, class ..._Args> | |
struct __invoke_return | |
{ | |
typedef decltype(__invoke(std::__1::declval<_Tp>(), std::__1::declval<_Args>()...)) type; | |
}; | |
# 431 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
template <class _Ret> | |
struct __invoke_void_return_wrapper | |
{ | |
template <class ..._Args> | |
static _Ret __call(_Args&&... __args) { | |
return __invoke(std::__1::forward<_Args>(__args)...); | |
} | |
# 460 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
}; | |
template <> | |
struct __invoke_void_return_wrapper<void> | |
{ | |
template <class ..._Args> | |
static void __call(_Args&&... __args) { | |
__invoke(std::__1::forward<_Args>(__args)...); | |
} | |
# 491 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
}; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) reference_wrapper | |
: public __weak_result_type<_Tp> | |
{ | |
public: | |
typedef _Tp type; | |
private: | |
type* __f_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference_wrapper(type& __f) noexcept | |
: __f_(std::__1::addressof(__f)) {} | |
private: reference_wrapper(type&&); public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) operator type& () const noexcept {return *__f_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) type& get() const noexcept {return *__f_;} | |
template <class... _ArgTypes> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __invoke_of<type&, _ArgTypes...>::type | |
operator() (_ArgTypes&&... __args) const | |
{ | |
return __invoke(get(), std::__1::forward<_ArgTypes>(__args)...); | |
} | |
# 557 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
}; | |
template <class _Tp> struct __is_reference_wrapper_impl : public false_type {}; | |
template <class _Tp> struct __is_reference_wrapper_impl<reference_wrapper<_Tp> > : public true_type {}; | |
template <class _Tp> struct __is_reference_wrapper | |
: public __is_reference_wrapper_impl<typename remove_cv<_Tp>::type> {}; | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reference_wrapper<_Tp> | |
ref(_Tp& __t) noexcept | |
{ | |
return reference_wrapper<_Tp>(__t); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reference_wrapper<_Tp> | |
ref(reference_wrapper<_Tp> __t) noexcept | |
{ | |
return ref(__t.get()); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reference_wrapper<const _Tp> | |
cref(const _Tp& __t) noexcept | |
{ | |
return reference_wrapper<const _Tp>(__t); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reference_wrapper<const _Tp> | |
cref(reference_wrapper<_Tp> __t) noexcept | |
{ | |
return cref(__t.get()); | |
} | |
template <class _Tp> void ref(const _Tp&&) = delete; | |
template <class _Tp> void cref(const _Tp&&) = delete; | |
# 629 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base" 3 | |
struct __attribute__ ((__type_visibility__("default"))) allocator_arg_t { }; | |
constexpr allocator_arg_t allocator_arg = allocator_arg_t(); | |
template <class _Tp> | |
struct __has_allocator_type | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::allocator_type* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Tp, class _Alloc, bool = __has_allocator_type<_Tp>::value> | |
struct __uses_allocator | |
: public integral_constant<bool, | |
is_convertible<_Alloc, typename _Tp::allocator_type>::value> | |
{ | |
}; | |
template <class _Tp, class _Alloc> | |
struct __uses_allocator<_Tp, _Alloc, false> | |
: public false_type | |
{ | |
}; | |
template <class _Tp, class _Alloc> | |
struct __attribute__ ((__type_visibility__("default"))) uses_allocator | |
: public __uses_allocator<_Tp, _Alloc> | |
{ | |
}; | |
template <class _Tp, class _Alloc, class ..._Args> | |
struct __uses_alloc_ctor_imp | |
{ | |
static const bool __ua = uses_allocator<_Tp, _Alloc>::value; | |
static const bool __ic = | |
is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value; | |
static const int value = __ua ? 2 - __ic : 0; | |
}; | |
template <class _Tp, class _Alloc, class ..._Args> | |
struct __uses_alloc_ctor | |
: integral_constant<int, __uses_alloc_ctor_imp<_Tp, _Alloc, _Args...>::value> | |
{}; | |
template <class _Tp, class _Allocator, class... _Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __user_alloc_construct_impl (integral_constant<int, 0>, _Tp *__storage, const _Allocator &, _Args &&... __args ) | |
{ | |
new (__storage) _Tp (std::__1::forward<_Args>(__args)...); | |
} | |
template <class _Tp, class _Allocator, class... _Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __user_alloc_construct_impl (integral_constant<int, 1>, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) | |
{ | |
new (__storage) _Tp (allocator_arg, __a, std::__1::forward<_Args>(__args)...); | |
} | |
template <class _Tp, class _Allocator, class... _Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __user_alloc_construct_impl (integral_constant<int, 2>, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) | |
{ | |
new (__storage) _Tp (std::__1::forward<_Args>(__args)..., __a); | |
} | |
template <class _Tp, class _Allocator, class... _Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __user_alloc_construct (_Tp *__storage, const _Allocator &__a, _Args &&... __args) | |
{ | |
__user_alloc_construct_impl( | |
__uses_alloc_ctor<_Tp, _Allocator>(), | |
__storage, __a, std::__1::forward<_Args>(__args)... | |
); | |
} | |
} } | |
# 344 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd" 1 3 | |
# 90 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 1 3 4 | |
# 76 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_mbstate_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_mbstate_t.h" 3 4 | |
typedef __darwin_mbstate_t mbstate_t; | |
# 77 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ct_rune_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ct_rune_t.h" 3 4 | |
typedef __darwin_ct_rune_t ct_rune_t; | |
# 78 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_rune_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_rune_t.h" 3 4 | |
typedef __darwin_rune_t rune_t; | |
# 79 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_wchar_t.h" 1 3 4 | |
# 80 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
# 89 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdarg.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdarg.h" 3 4 | |
typedef __builtin_va_list va_list; | |
# 50 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdarg.h" 3 4 | |
typedef __builtin_va_list __gnuc_va_list; | |
# 90 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 1 3 4 | |
# 71 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_va_list.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_va_list.h" 3 4 | |
typedef __darwin_va_list va_list; | |
# 72 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/stdio.h" 1 3 4 | |
# 37 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/stdio.h" 3 4 | |
extern "C" { | |
int renameat(int, const char *, int, const char *) __attribute__((availability(macosx,introduced=10.10))); | |
int renamex_np(const char *, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); | |
int renameatx_np(int, const char *, int, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); | |
} | |
# 76 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 2 3 4 | |
typedef __darwin_off_t fpos_t; | |
# 88 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
struct __sbuf { | |
unsigned char *_base; | |
int _size; | |
}; | |
struct __sFILEX; | |
# 122 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
typedef struct __sFILE { | |
unsigned char *_p; | |
int _r; | |
int _w; | |
short _flags; | |
short _file; | |
struct __sbuf _bf; | |
int _lbfsize; | |
void *_cookie; | |
int (* _Nullable _close)(void *); | |
int (* _Nullable _read) (void *, char *, int); | |
fpos_t (* _Nullable _seek) (void *, fpos_t, int); | |
int (* _Nullable _write)(void *, const char *, int); | |
struct __sbuf _ub; | |
struct __sFILEX *_extra; | |
int _ur; | |
unsigned char _ubuf[3]; | |
unsigned char _nbuf[1]; | |
struct __sbuf _lb; | |
int _blksize; | |
fpos_t _offset; | |
} FILE; | |
extern "C" { | |
extern FILE *__stdinp; | |
extern FILE *__stdoutp; | |
extern FILE *__stderrp; | |
} | |
# 230 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
extern "C" { | |
void clearerr(FILE *); | |
int fclose(FILE *); | |
int feof(FILE *); | |
int ferror(FILE *); | |
int fflush(FILE *); | |
int fgetc(FILE *); | |
int fgetpos(FILE * , fpos_t *); | |
char *fgets(char * , int, FILE *); | |
FILE *fopen(const char * __filename, const char * __mode) __asm("_" "fopen" ); | |
int fprintf(FILE * , const char * , ...) __attribute__((__format__ (__printf__, 2, 3))); | |
int fputc(int, FILE *); | |
int fputs(const char * , FILE * ) __asm("_" "fputs" ); | |
size_t fread(void * __ptr, size_t __size, size_t __nitems, FILE * __stream); | |
FILE *freopen(const char * , const char * , | |
FILE * ) __asm("_" "freopen" ); | |
int fscanf(FILE * , const char * , ...) __attribute__((__format__ (__scanf__, 2, 3))); | |
int fseek(FILE *, long, int); | |
int fsetpos(FILE *, const fpos_t *); | |
long ftell(FILE *); | |
size_t fwrite(const void * __ptr, size_t __size, size_t __nitems, FILE * __stream) __asm("_" "fwrite" ); | |
int getc(FILE *); | |
int getchar(void); | |
char *gets(char *); | |
void perror(const char *); | |
int printf(const char * , ...) __attribute__((__format__ (__printf__, 1, 2))); | |
int putc(int, FILE *); | |
int putchar(int); | |
int puts(const char *); | |
int remove(const char *); | |
int rename (const char *__old, const char *__new); | |
void rewind(FILE *); | |
int scanf(const char * , ...) __attribute__((__format__ (__scanf__, 1, 2))); | |
void setbuf(FILE * , char * ); | |
int setvbuf(FILE * , char * , int, size_t); | |
int sprintf(char * , const char * , ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((__availability__(swift, unavailable, message="Use snprintf instead."))); | |
int sscanf(const char * , const char * , ...) __attribute__((__format__ (__scanf__, 2, 3))); | |
FILE *tmpfile(void); | |
__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead."))) | |
__attribute__((deprecated("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that you use mkstemp(3) instead."))) | |
char *tmpnam(char *); | |
int ungetc(int, FILE *); | |
int vfprintf(FILE * , const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))); | |
int vprintf(const char * , va_list) __attribute__((__format__ (__printf__, 1, 0))); | |
int vsprintf(char * , const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((__availability__(swift, unavailable, message="Use vsnprintf instead."))); | |
} | |
# 293 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
extern "C" { | |
char *ctermid(char *); | |
FILE *fdopen(int, const char *) __asm("_" "fdopen" ); | |
int fileno(FILE *); | |
} | |
# 320 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
extern "C" { | |
int pclose(FILE *) __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead."))); | |
FILE *popen(const char *, const char *) __asm("_" "popen" ) __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead."))); | |
} | |
# 341 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
extern "C" { | |
int __srget(FILE *); | |
int __svfscanf(FILE *, const char *, va_list) __attribute__((__format__ (__scanf__, 2, 0))); | |
int __swbuf(int, FILE *); | |
} | |
inline __attribute__ ((__always_inline__)) int __sputc(int _c, FILE *_p) { | |
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) | |
return (*_p->_p++ = _c); | |
else | |
return (__swbuf(_c, _p)); | |
} | |
# 378 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
extern "C" { | |
void flockfile(FILE *); | |
int ftrylockfile(FILE *); | |
void funlockfile(FILE *); | |
int getc_unlocked(FILE *); | |
int getchar_unlocked(void); | |
int putc_unlocked(int, FILE *); | |
int putchar_unlocked(int); | |
int getw(FILE *); | |
int putw(int, FILE *); | |
__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead."))) | |
__attribute__((deprecated("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead."))) | |
char *tempnam(const char *__dir, const char *__prefix) __asm("_" "tempnam" ); | |
} | |
# 417 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_off_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_off_t.h" 3 4 | |
typedef __darwin_off_t off_t; | |
# 418 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 2 3 4 | |
extern "C" { | |
int fseeko(FILE * __stream, off_t __offset, int __whence); | |
off_t ftello(FILE * __stream); | |
} | |
extern "C" { | |
int snprintf(char * __str, size_t __size, const char * __format, ...) __attribute__((__format__ (__printf__, 3, 4))); | |
int vfscanf(FILE * __stream, const char * __format, va_list) __attribute__((__format__ (__scanf__, 2, 0))); | |
int vscanf(const char * __format, va_list) __attribute__((__format__ (__scanf__, 1, 0))); | |
int vsnprintf(char * __str, size_t __size, const char * __format, va_list) __attribute__((__format__ (__printf__, 3, 0))); | |
int vsscanf(const char * __str, const char * __format, va_list) __attribute__((__format__ (__scanf__, 2, 0))); | |
} | |
# 444 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h" 3 4 | |
extern "C" { | |
int dprintf(int, const char * , ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((availability(macosx,introduced=10.7))); | |
int vdprintf(int, const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((availability(macosx,introduced=10.7))); | |
ssize_t getdelim(char ** __linep, size_t * __linecapp, int __delimiter, FILE * __stream) __attribute__((availability(macosx,introduced=10.7))); | |
ssize_t getline(char ** __linep, size_t * __linecapp, FILE * __stream) __attribute__((availability(macosx,introduced=10.7))); | |
} | |
extern "C" { | |
extern const int sys_nerr; | |
extern const char *const sys_errlist[]; | |
int asprintf(char ** , const char * , ...) __attribute__((__format__ (__printf__, 2, 3))); | |
char *ctermid_r(char *); | |
char *fgetln(FILE *, size_t *); | |
const char *fmtcheck(const char *, const char *); | |
int fpurge(FILE *); | |
void setbuffer(FILE *, char *, int); | |
int setlinebuf(FILE *); | |
int vasprintf(char ** , const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))); | |
FILE *zopen(const char *, const char *, int); | |
FILE *funopen(const void *, | |
int (* _Nullable)(void *, char *, int), | |
int (* _Nullable)(void *, const char *, int), | |
fpos_t (* _Nullable)(void *, fpos_t, int), | |
int (* _Nullable)(void *)); | |
} | |
# 91 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 1 3 4 | |
# 45 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_wint_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_wint_t.h" 3 4 | |
typedef __darwin_wint_t wint_t; | |
# 46 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_wctype_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_wctype_t.h" 3 4 | |
typedef __darwin_wctype_t wctype_t; | |
# 48 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 2 3 4 | |
# 57 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h" 1 3 4 | |
# 70 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/runetype.h" 1 3 4 | |
# 49 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/runetype.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_wchar_t.h" 1 3 4 | |
# 50 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/runetype.h" 2 3 4 | |
# 60 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/runetype.h" 3 4 | |
typedef struct { | |
__darwin_rune_t __min; | |
__darwin_rune_t __max; | |
__darwin_rune_t __map; | |
__uint32_t *__types; | |
} _RuneEntry; | |
typedef struct { | |
int __nranges; | |
_RuneEntry *__ranges; | |
} _RuneRange; | |
typedef struct { | |
char __name[14]; | |
__uint32_t __mask; | |
} _RuneCharClass; | |
typedef struct { | |
char __magic[8]; | |
char __encoding[32]; | |
__darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **); | |
int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **); | |
__darwin_rune_t __invalid_rune; | |
__uint32_t __runetype[(1 <<8 )]; | |
__darwin_rune_t __maplower[(1 <<8 )]; | |
__darwin_rune_t __mapupper[(1 <<8 )]; | |
_RuneRange __runetype_ext; | |
_RuneRange __maplower_ext; | |
_RuneRange __mapupper_ext; | |
void *__variable; | |
int __variable_len; | |
int __ncharclasses; | |
_RuneCharClass *__charclasses; | |
} _RuneLocale; | |
extern "C" { | |
extern _RuneLocale _DefaultRuneLocale; | |
extern _RuneLocale *_CurrentRuneLocale; | |
} | |
# 71 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h" 2 3 4 | |
# 128 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h" 3 4 | |
extern "C" { | |
unsigned long ___runetype(__darwin_ct_rune_t); | |
__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t); | |
__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t); | |
} | |
inline int | |
isascii(int _c) | |
{ | |
return ((_c & ~0x7F) == 0); | |
} | |
# 147 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h" 3 4 | |
extern "C" { | |
int __maskrune(__darwin_ct_rune_t, unsigned long); | |
} | |
inline int | |
__istype(__darwin_ct_rune_t _c, unsigned long _f) | |
{ | |
return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f) | |
: !!__maskrune(_c, _f)); | |
} | |
inline __darwin_ct_rune_t | |
__isctype(__darwin_ct_rune_t _c, unsigned long _f) | |
{ | |
return (_c < 0 || _c >= (1 <<8 )) ? 0 : | |
!!(_DefaultRuneLocale.__runetype[_c] & _f); | |
} | |
# 187 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ctype.h" 3 4 | |
extern "C" { | |
__darwin_ct_rune_t __toupper(__darwin_ct_rune_t); | |
__darwin_ct_rune_t __tolower(__darwin_ct_rune_t); | |
} | |
inline int | |
__wcwidth(__darwin_ct_rune_t _c) | |
{ | |
unsigned int _x; | |
if (_c == 0) | |
return (0); | |
_x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L); | |
if ((_x & 0xe0000000L) != 0) | |
return ((_x & 0xe0000000L) >> 30); | |
return ((_x & 0x00040000L) != 0 ? 1 : -1); | |
} | |
inline int | |
isalnum(int _c) | |
{ | |
return (__istype(_c, 0x00000100L|0x00000400L)); | |
} | |
inline int | |
isalpha(int _c) | |
{ | |
return (__istype(_c, 0x00000100L)); | |
} | |
inline int | |
isblank(int _c) | |
{ | |
return (__istype(_c, 0x00020000L)); | |
} | |
inline int | |
iscntrl(int _c) | |
{ | |
return (__istype(_c, 0x00000200L)); | |
} | |
inline int | |
isdigit(int _c) | |
{ | |
return (__isctype(_c, 0x00000400L)); | |
} | |
inline int | |
isgraph(int _c) | |
{ | |
return (__istype(_c, 0x00000800L)); | |
} | |
inline int | |
islower(int _c) | |
{ | |
return (__istype(_c, 0x00001000L)); | |
} | |
inline int | |
isprint(int _c) | |
{ | |
return (__istype(_c, 0x00040000L)); | |
} | |
inline int | |
ispunct(int _c) | |
{ | |
return (__istype(_c, 0x00002000L)); | |
} | |
inline int | |
isspace(int _c) | |
{ | |
return (__istype(_c, 0x00004000L)); | |
} | |
inline int | |
isupper(int _c) | |
{ | |
return (__istype(_c, 0x00008000L)); | |
} | |
inline int | |
isxdigit(int _c) | |
{ | |
return (__isctype(_c, 0x00010000L)); | |
} | |
inline int | |
toascii(int _c) | |
{ | |
return (_c & 0x7F); | |
} | |
inline int | |
tolower(int _c) | |
{ | |
return (__tolower(_c)); | |
} | |
inline int | |
toupper(int _c) | |
{ | |
return (__toupper(_c)); | |
} | |
inline int | |
digittoint(int _c) | |
{ | |
return (__maskrune(_c, 0x0F)); | |
} | |
inline int | |
ishexnumber(int _c) | |
{ | |
return (__istype(_c, 0x00010000L)); | |
} | |
inline int | |
isideogram(int _c) | |
{ | |
return (__istype(_c, 0x00080000L)); | |
} | |
inline int | |
isnumber(int _c) | |
{ | |
return (__istype(_c, 0x00000400L)); | |
} | |
inline int | |
isphonogram(int _c) | |
{ | |
return (__istype(_c, 0x00200000L)); | |
} | |
inline int | |
isrune(int _c) | |
{ | |
return (__istype(_c, 0xFFFFFFF0L)); | |
} | |
inline int | |
isspecial(int _c) | |
{ | |
return (__istype(_c, 0x00100000L)); | |
} | |
# 58 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 2 3 4 | |
inline int | |
iswalnum(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00000100L|0x00000400L)); | |
} | |
inline int | |
iswalpha(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00000100L)); | |
} | |
inline int | |
iswcntrl(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00000200L)); | |
} | |
inline int | |
iswctype(wint_t _wc, wctype_t _charclass) | |
{ | |
return (__istype(_wc, _charclass)); | |
} | |
inline int | |
iswdigit(wint_t _wc) | |
{ | |
return (__isctype(_wc, 0x00000400L)); | |
} | |
inline int | |
iswgraph(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00000800L)); | |
} | |
inline int | |
iswlower(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00001000L)); | |
} | |
inline int | |
iswprint(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00040000L)); | |
} | |
inline int | |
iswpunct(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00002000L)); | |
} | |
inline int | |
iswspace(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00004000L)); | |
} | |
inline int | |
iswupper(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00008000L)); | |
} | |
inline int | |
iswxdigit(wint_t _wc) | |
{ | |
return (__isctype(_wc, 0x00010000L)); | |
} | |
inline wint_t | |
towlower(wint_t _wc) | |
{ | |
return (__tolower(_wc)); | |
} | |
inline wint_t | |
towupper(wint_t _wc) | |
{ | |
return (__toupper(_wc)); | |
} | |
# 170 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_wctype.h" 3 4 | |
extern "C" { | |
wctype_t | |
wctype(const char *); | |
} | |
# 93 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 2 3 4 | |
extern "C" { | |
wint_t btowc(int); | |
wint_t fgetwc(FILE *); | |
wchar_t *fgetws(wchar_t * , int, FILE * ); | |
wint_t fputwc(wchar_t, FILE *); | |
int fputws(const wchar_t * , FILE * ); | |
int fwide(FILE *, int); | |
int fwprintf(FILE * , const wchar_t * , ...); | |
int fwscanf(FILE * , const wchar_t * , ...); | |
wint_t getwc(FILE *); | |
wint_t getwchar(void); | |
size_t mbrlen(const char * , size_t, mbstate_t * ); | |
size_t mbrtowc(wchar_t * , const char * , size_t, | |
mbstate_t * ); | |
int mbsinit(const mbstate_t *); | |
size_t mbsrtowcs(wchar_t * , const char ** , size_t, | |
mbstate_t * ); | |
wint_t putwc(wchar_t, FILE *); | |
wint_t putwchar(wchar_t); | |
int swprintf(wchar_t * , size_t, const wchar_t * , ...); | |
int swscanf(const wchar_t * , const wchar_t * , ...); | |
wint_t ungetwc(wint_t, FILE *); | |
int vfwprintf(FILE * , const wchar_t * , | |
__darwin_va_list); | |
int vswprintf(wchar_t * , size_t, const wchar_t * , | |
__darwin_va_list); | |
int vwprintf(const wchar_t * , __darwin_va_list); | |
size_t wcrtomb(char * , wchar_t, mbstate_t * ); | |
wchar_t *wcscat(wchar_t * , const wchar_t * ); | |
wchar_t *wcschr(const wchar_t *, wchar_t); | |
int wcscmp(const wchar_t *, const wchar_t *); | |
int wcscoll(const wchar_t *, const wchar_t *); | |
wchar_t *wcscpy(wchar_t * , const wchar_t * ); | |
size_t wcscspn(const wchar_t *, const wchar_t *); | |
size_t wcsftime(wchar_t * , size_t, const wchar_t * , | |
const struct tm * ) __asm("_" "wcsftime" ); | |
size_t wcslen(const wchar_t *); | |
wchar_t *wcsncat(wchar_t * , const wchar_t * , size_t); | |
int wcsncmp(const wchar_t *, const wchar_t *, size_t); | |
wchar_t *wcsncpy(wchar_t * , const wchar_t * , size_t); | |
wchar_t *wcspbrk(const wchar_t *, const wchar_t *); | |
wchar_t *wcsrchr(const wchar_t *, wchar_t); | |
size_t wcsrtombs(char * , const wchar_t ** , size_t, | |
mbstate_t * ); | |
size_t wcsspn(const wchar_t *, const wchar_t *); | |
wchar_t *wcsstr(const wchar_t * , const wchar_t * ); | |
size_t wcsxfrm(wchar_t * , const wchar_t * , size_t); | |
int wctob(wint_t); | |
double wcstod(const wchar_t * , wchar_t ** ); | |
wchar_t *wcstok(wchar_t * , const wchar_t * , | |
wchar_t ** ); | |
long wcstol(const wchar_t * , wchar_t ** , int); | |
unsigned long | |
wcstoul(const wchar_t * , wchar_t ** , int); | |
wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); | |
int wmemcmp(const wchar_t *, const wchar_t *, size_t); | |
wchar_t *wmemcpy(wchar_t * , const wchar_t * , size_t); | |
wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); | |
wchar_t *wmemset(wchar_t *, wchar_t, size_t); | |
int wprintf(const wchar_t * , ...); | |
int wscanf(const wchar_t * , ...); | |
int wcswidth(const wchar_t *, size_t); | |
int wcwidth(wchar_t); | |
} | |
# 169 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 3 4 | |
extern "C" { | |
int vfwscanf(FILE * , const wchar_t * , | |
__darwin_va_list); | |
int vswscanf(const wchar_t * , const wchar_t * , | |
__darwin_va_list); | |
int vwscanf(const wchar_t * , __darwin_va_list); | |
float wcstof(const wchar_t * , wchar_t ** ); | |
long double | |
wcstold(const wchar_t * , wchar_t ** ); | |
long long | |
wcstoll(const wchar_t * , wchar_t ** , int); | |
unsigned long long | |
wcstoull(const wchar_t * , wchar_t ** , int); | |
} | |
# 194 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wchar.h" 3 4 | |
extern "C" { | |
size_t mbsnrtowcs(wchar_t * , const char ** , size_t, | |
size_t, mbstate_t * ); | |
wchar_t *wcpcpy(wchar_t * , const wchar_t * ) __attribute__((availability(macosx,introduced=10.7))); | |
wchar_t *wcpncpy(wchar_t * , const wchar_t * , size_t) __attribute__((availability(macosx,introduced=10.7))); | |
wchar_t *wcsdup(const wchar_t *) __attribute__((availability(macosx,introduced=10.7))); | |
int wcscasecmp(const wchar_t *, const wchar_t *) __attribute__((availability(macosx,introduced=10.7))); | |
int wcsncasecmp(const wchar_t *, const wchar_t *, size_t n) __attribute__((availability(macosx,introduced=10.7))); | |
size_t wcsnlen(const wchar_t *, size_t) __attribute__((availability(macosx,introduced=10.7))); | |
size_t wcsnrtombs(char * , const wchar_t ** , size_t, | |
size_t, mbstate_t * ); | |
} | |
extern "C" { | |
wchar_t *fgetwln(FILE * , size_t *) __attribute__((availability(macosx,introduced=10.7))); | |
size_t wcslcat(wchar_t *, const wchar_t *, size_t); | |
size_t wcslcpy(wchar_t *, const wchar_t *, size_t); | |
} | |
# 91 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd" 2 3 | |
# 94 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd" 3 | |
namespace std {inline namespace __1 { | |
class __attribute__ ((__type_visibility__("default"))) ios_base; | |
template<class _CharT> struct __attribute__ ((__type_visibility__("default"))) char_traits; | |
template<class _Tp> class __attribute__ ((__type_visibility__("default"))) allocator; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_ios; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_streambuf; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_istream; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_ostream; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_iostream; | |
template <class _CharT, class _Traits = char_traits<_CharT>, | |
class _Allocator = allocator<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_stringbuf; | |
template <class _CharT, class _Traits = char_traits<_CharT>, | |
class _Allocator = allocator<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_istringstream; | |
template <class _CharT, class _Traits = char_traits<_CharT>, | |
class _Allocator = allocator<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_ostringstream; | |
template <class _CharT, class _Traits = char_traits<_CharT>, | |
class _Allocator = allocator<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_stringstream; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_filebuf; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_ifstream; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_ofstream; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_fstream; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) istreambuf_iterator; | |
template <class _CharT, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) ostreambuf_iterator; | |
typedef basic_ios<char> ios; | |
typedef basic_ios<wchar_t> wios; | |
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_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; | |
template <class _State> class __attribute__ ((__type_visibility__("default"))) fpos; | |
typedef fpos<mbstate_t> streampos; | |
typedef fpos<mbstate_t> wstreampos; | |
typedef fpos<mbstate_t> u16streampos; | |
typedef fpos<mbstate_t> u32streampos; | |
typedef long long streamoff; | |
template <class _CharT, | |
class _Traits = char_traits<_CharT>, | |
class _Allocator = allocator<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) basic_string; | |
typedef basic_string<char, char_traits<char>, allocator<char> > string; | |
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring; | |
} } | |
# 347 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__debug" 1 3 | |
# 18 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__debug" 3 | |
# 353 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 2 3 | |
# 356 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 3 | |
namespace std {inline namespace __1 { | |
struct __attribute__ ((__type_visibility__("default"))) input_iterator_tag {}; | |
struct __attribute__ ((__type_visibility__("default"))) output_iterator_tag {}; | |
struct __attribute__ ((__type_visibility__("default"))) forward_iterator_tag : public input_iterator_tag {}; | |
struct __attribute__ ((__type_visibility__("default"))) bidirectional_iterator_tag : public forward_iterator_tag {}; | |
struct __attribute__ ((__type_visibility__("default"))) random_access_iterator_tag : public bidirectional_iterator_tag {}; | |
template <class _Tp> | |
struct __has_iterator_category | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::iterator_category* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Iter, bool> struct __iterator_traits_impl {}; | |
template <class _Iter> | |
struct __iterator_traits_impl<_Iter, true> | |
{ | |
typedef typename _Iter::difference_type difference_type; | |
typedef typename _Iter::value_type value_type; | |
typedef typename _Iter::pointer pointer; | |
typedef typename _Iter::reference reference; | |
typedef typename _Iter::iterator_category iterator_category; | |
}; | |
template <class _Iter, bool> struct __iterator_traits {}; | |
template <class _Iter> | |
struct __iterator_traits<_Iter, true> | |
: __iterator_traits_impl | |
< | |
_Iter, | |
is_convertible<typename _Iter::iterator_category, input_iterator_tag>::value || | |
is_convertible<typename _Iter::iterator_category, output_iterator_tag>::value | |
> | |
{}; | |
template <class _Iter> | |
struct __attribute__ ((__type_visibility__("default"))) iterator_traits | |
: __iterator_traits<_Iter, __has_iterator_category<_Iter>::value> {}; | |
template<class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) iterator_traits<_Tp*> | |
{ | |
typedef ptrdiff_t difference_type; | |
typedef typename remove_const<_Tp>::type value_type; | |
typedef _Tp* pointer; | |
typedef _Tp& reference; | |
typedef random_access_iterator_tag iterator_category; | |
}; | |
template <class _Tp, class _Up, bool = __has_iterator_category<iterator_traits<_Tp> >::value> | |
struct __has_iterator_category_convertible_to | |
: public integral_constant<bool, is_convertible<typename iterator_traits<_Tp>::iterator_category, _Up>::value> | |
{}; | |
template <class _Tp, class _Up> | |
struct __has_iterator_category_convertible_to<_Tp, _Up, false> : public false_type {}; | |
template <class _Tp> | |
struct __is_input_iterator : public __has_iterator_category_convertible_to<_Tp, input_iterator_tag> {}; | |
template <class _Tp> | |
struct __is_forward_iterator : public __has_iterator_category_convertible_to<_Tp, forward_iterator_tag> {}; | |
template <class _Tp> | |
struct __is_bidirectional_iterator : public __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag> {}; | |
template <class _Tp> | |
struct __is_random_access_iterator : public __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag> {}; | |
template<class _Category, class _Tp, class _Distance = ptrdiff_t, | |
class _Pointer = _Tp*, class _Reference = _Tp&> | |
struct __attribute__ ((__type_visibility__("default"))) iterator | |
{ | |
typedef _Tp value_type; | |
typedef _Distance difference_type; | |
typedef _Pointer pointer; | |
typedef _Reference reference; | |
typedef _Category iterator_category; | |
}; | |
template <class _InputIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __advance(_InputIter& __i, | |
typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) | |
{ | |
for (; __n > 0; --__n) | |
++__i; | |
} | |
template <class _BiDirIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __advance(_BiDirIter& __i, | |
typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) | |
{ | |
if (__n >= 0) | |
for (; __n > 0; --__n) | |
++__i; | |
else | |
for (; __n < 0; ++__n) | |
--__i; | |
} | |
template <class _RandIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __advance(_RandIter& __i, | |
typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) | |
{ | |
__i += __n; | |
} | |
template <class _InputIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void advance(_InputIter& __i, | |
typename iterator_traits<_InputIter>::difference_type __n) | |
{ | |
__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category()); | |
} | |
template <class _InputIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename iterator_traits<_InputIter>::difference_type | |
__distance(_InputIter __first, _InputIter __last, input_iterator_tag) | |
{ | |
typename iterator_traits<_InputIter>::difference_type __r(0); | |
for (; __first != __last; ++__first) | |
++__r; | |
return __r; | |
} | |
template <class _RandIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename iterator_traits<_RandIter>::difference_type | |
__distance(_RandIter __first, _RandIter __last, random_access_iterator_tag) | |
{ | |
return __last - __first; | |
} | |
template <class _InputIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename iterator_traits<_InputIter>::difference_type | |
distance(_InputIter __first, _InputIter __last) | |
{ | |
return __distance(__first, __last, typename iterator_traits<_InputIter>::iterator_category()); | |
} | |
template <class _ForwardIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIter | |
next(_ForwardIter __x, | |
typename iterator_traits<_ForwardIter>::difference_type __n = 1, | |
typename enable_if<__is_forward_iterator<_ForwardIter>::value>::type* = 0) | |
{ | |
std::__1::advance(__x, __n); | |
return __x; | |
} | |
template <class _BidiretionalIter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_BidiretionalIter | |
prev(_BidiretionalIter __x, | |
typename iterator_traits<_BidiretionalIter>::difference_type __n = 1, | |
typename enable_if<__is_bidirectional_iterator<_BidiretionalIter>::value>::type* = 0) | |
{ | |
std::__1::advance(__x, -__n); | |
return __x; | |
} | |
template <class _Iter> | |
class __attribute__ ((__type_visibility__("default"))) reverse_iterator | |
: public iterator<typename iterator_traits<_Iter>::iterator_category, | |
typename iterator_traits<_Iter>::value_type, | |
typename iterator_traits<_Iter>::difference_type, | |
typename iterator_traits<_Iter>::pointer, | |
typename iterator_traits<_Iter>::reference> | |
{ | |
private: | |
mutable _Iter __t; | |
protected: | |
_Iter current; | |
public: | |
typedef _Iter iterator_type; | |
typedef typename iterator_traits<_Iter>::difference_type difference_type; | |
typedef typename iterator_traits<_Iter>::reference reference; | |
typedef typename iterator_traits<_Iter>::pointer pointer; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator() : current() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit reverse_iterator(_Iter __x) : __t(__x), current(__x) {} | |
template <class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator(const reverse_iterator<_Up>& __u) | |
: __t(__u.base()), current(__u.base()) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Iter base() const {return current;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator*() const {_Iter __tmp = current; return *--__tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer operator->() const {return std::__1::addressof(operator*());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator& operator++() {--current; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator operator++(int) | |
{reverse_iterator __tmp(*this); --current; return __tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator& operator--() {++current; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator operator--(int) | |
{reverse_iterator __tmp(*this); ++current; return __tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator operator+ (difference_type __n) const | |
{return reverse_iterator(current - __n);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator& operator+=(difference_type __n) | |
{current -= __n; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator operator- (difference_type __n) const | |
{return reverse_iterator(current + __n);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reverse_iterator& operator-=(difference_type __n) | |
{current += __n; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator[](difference_type __n) const | |
{return *(*this + __n);} | |
}; | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __x.base() == __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __x.base() > __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __x.base() != __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __x.base() < __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __x.base() <= __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __x.base() >= __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename reverse_iterator<_Iter1>::difference_type | |
operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) | |
{ | |
return __y.base() - __x.base(); | |
} | |
template <class _Iter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator<_Iter> | |
operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x) | |
{ | |
return reverse_iterator<_Iter>(__x.base() - __n); | |
} | |
# 654 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 3 | |
template <class _Container> | |
class __attribute__ ((__type_visibility__("default"))) back_insert_iterator | |
: public iterator<output_iterator_tag, | |
void, | |
void, | |
void, | |
back_insert_iterator<_Container>&> | |
{ | |
protected: | |
_Container* container; | |
public: | |
typedef _Container container_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit back_insert_iterator(_Container& __x) : container(std::__1::addressof(__x)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) back_insert_iterator& operator=(const typename _Container::value_type& __value_) | |
{container->push_back(__value_); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) back_insert_iterator& operator=(typename _Container::value_type&& __value_) | |
{container->push_back(std::__1::move(__value_)); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) back_insert_iterator& operator*() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) back_insert_iterator& operator++() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) back_insert_iterator operator++(int) {return *this;} | |
}; | |
template <class _Container> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
back_insert_iterator<_Container> | |
back_inserter(_Container& __x) | |
{ | |
return back_insert_iterator<_Container>(__x); | |
} | |
template <class _Container> | |
class __attribute__ ((__type_visibility__("default"))) front_insert_iterator | |
: public iterator<output_iterator_tag, | |
void, | |
void, | |
void, | |
front_insert_iterator<_Container>&> | |
{ | |
protected: | |
_Container* container; | |
public: | |
typedef _Container container_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit front_insert_iterator(_Container& __x) : container(std::__1::addressof(__x)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) front_insert_iterator& operator=(const typename _Container::value_type& __value_) | |
{container->push_front(__value_); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) front_insert_iterator& operator=(typename _Container::value_type&& __value_) | |
{container->push_front(std::__1::move(__value_)); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) front_insert_iterator& operator*() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) front_insert_iterator& operator++() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) front_insert_iterator operator++(int) {return *this;} | |
}; | |
template <class _Container> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
front_insert_iterator<_Container> | |
front_inserter(_Container& __x) | |
{ | |
return front_insert_iterator<_Container>(__x); | |
} | |
template <class _Container> | |
class __attribute__ ((__type_visibility__("default"))) insert_iterator | |
: public iterator<output_iterator_tag, | |
void, | |
void, | |
void, | |
insert_iterator<_Container>&> | |
{ | |
protected: | |
_Container* container; | |
typename _Container::iterator iter; | |
public: | |
typedef _Container container_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) insert_iterator(_Container& __x, typename _Container::iterator __i) | |
: container(std::__1::addressof(__x)), iter(__i) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) insert_iterator& operator=(const typename _Container::value_type& __value_) | |
{iter = container->insert(iter, __value_); ++iter; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) insert_iterator& operator=(typename _Container::value_type&& __value_) | |
{iter = container->insert(iter, std::__1::move(__value_)); ++iter; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) insert_iterator& operator*() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) insert_iterator& operator++() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) insert_iterator& operator++(int) {return *this;} | |
}; | |
template <class _Container> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
insert_iterator<_Container> | |
inserter(_Container& __x, typename _Container::iterator __i) | |
{ | |
return insert_iterator<_Container>(__x, __i); | |
} | |
template <class _Tp, class _CharT = char, | |
class _Traits = char_traits<_CharT>, class _Distance = ptrdiff_t> | |
class __attribute__ ((__type_visibility__("default"))) istream_iterator | |
: public iterator<input_iterator_tag, _Tp, _Distance, const _Tp*, const _Tp&> | |
{ | |
public: | |
typedef _CharT char_type; | |
typedef _Traits traits_type; | |
typedef basic_istream<_CharT,_Traits> istream_type; | |
private: | |
istream_type* __in_stream_; | |
_Tp __value_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr istream_iterator() : __in_stream_(0), __value_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istream_iterator(istream_type& __s) : __in_stream_(&__s) | |
{ | |
if (!(*__in_stream_ >> __value_)) | |
__in_stream_ = 0; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) const _Tp& operator*() const {return __value_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) const _Tp* operator->() const {return &(operator*());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istream_iterator& operator++() | |
{ | |
if (!(*__in_stream_ >> __value_)) | |
__in_stream_ = 0; | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istream_iterator operator++(int) | |
{istream_iterator __t(*this); ++(*this); return __t;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const istream_iterator& __x, const istream_iterator& __y) | |
{return __x.__in_stream_ == __y.__in_stream_;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const istream_iterator& __x, const istream_iterator& __y) | |
{return !(__x == __y);} | |
}; | |
template <class _Tp, class _CharT = char, class _Traits = char_traits<_CharT> > | |
class __attribute__ ((__type_visibility__("default"))) ostream_iterator | |
: public iterator<output_iterator_tag, void, void, void, void> | |
{ | |
public: | |
typedef _CharT char_type; | |
typedef _Traits traits_type; | |
typedef basic_ostream<_CharT,_Traits> ostream_type; | |
private: | |
ostream_type* __out_stream_; | |
const char_type* __delim_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostream_iterator(ostream_type& __s) | |
: __out_stream_(&__s), __delim_(0) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostream_iterator(ostream_type& __s, const _CharT* __delimiter) | |
: __out_stream_(&__s), __delim_(__delimiter) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostream_iterator& operator=(const _Tp& __value_) | |
{ | |
*__out_stream_ << __value_; | |
if (__delim_) | |
*__out_stream_ << __delim_; | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostream_iterator& operator*() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostream_iterator& operator++() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostream_iterator& operator++(int) {return *this;} | |
}; | |
template<class _CharT, class _Traits> | |
class __attribute__ ((__type_visibility__("default"))) istreambuf_iterator | |
: public iterator<input_iterator_tag, _CharT, | |
typename _Traits::off_type, _CharT*, | |
_CharT> | |
{ | |
public: | |
typedef _CharT char_type; | |
typedef _Traits traits_type; | |
typedef typename _Traits::int_type int_type; | |
typedef basic_streambuf<_CharT,_Traits> streambuf_type; | |
typedef basic_istream<_CharT,_Traits> istream_type; | |
private: | |
mutable streambuf_type* __sbuf_; | |
class __proxy | |
{ | |
char_type __keep_; | |
streambuf_type* __sbuf_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __proxy(char_type __c, streambuf_type* __s) | |
: __keep_(__c), __sbuf_(__s) {} | |
friend class istreambuf_iterator; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) char_type operator*() const {return __keep_;} | |
}; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool __test_for_eof() const | |
{ | |
if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof())) | |
__sbuf_ = 0; | |
return __sbuf_ == 0; | |
} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr istreambuf_iterator() noexcept : __sbuf_(0) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istreambuf_iterator(istream_type& __s) noexcept | |
: __sbuf_(__s.rdbuf()) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istreambuf_iterator(streambuf_type* __s) noexcept | |
: __sbuf_(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istreambuf_iterator(const __proxy& __p) noexcept | |
: __sbuf_(__p.__sbuf_) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) char_type operator*() const | |
{return static_cast<char_type>(__sbuf_->sgetc());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) char_type* operator->() const {return nullptr;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) istreambuf_iterator& operator++() | |
{ | |
__sbuf_->sbumpc(); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __proxy operator++(int) | |
{ | |
return __proxy(__sbuf_->sbumpc(), __sbuf_); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bool equal(const istreambuf_iterator& __b) const | |
{return __test_for_eof() == __b.__test_for_eof();} | |
}; | |
template <class _CharT, class _Traits> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const istreambuf_iterator<_CharT,_Traits>& __a, | |
const istreambuf_iterator<_CharT,_Traits>& __b) | |
{return __a.equal(__b);} | |
template <class _CharT, class _Traits> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a, | |
const istreambuf_iterator<_CharT,_Traits>& __b) | |
{return !__a.equal(__b);} | |
template <class _CharT, class _Traits> | |
class __attribute__ ((__type_visibility__("default"))) ostreambuf_iterator | |
: public iterator<output_iterator_tag, void, void, void, void> | |
{ | |
public: | |
typedef _CharT char_type; | |
typedef _Traits traits_type; | |
typedef basic_streambuf<_CharT,_Traits> streambuf_type; | |
typedef basic_ostream<_CharT,_Traits> ostream_type; | |
private: | |
streambuf_type* __sbuf_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostreambuf_iterator(ostream_type& __s) noexcept | |
: __sbuf_(__s.rdbuf()) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostreambuf_iterator(streambuf_type* __s) noexcept | |
: __sbuf_(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostreambuf_iterator& operator=(_CharT __c) | |
{ | |
if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sputc(__c), traits_type::eof())) | |
__sbuf_ = 0; | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostreambuf_iterator& operator*() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostreambuf_iterator& operator++() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ostreambuf_iterator& operator++(int) {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bool failed() const noexcept {return __sbuf_ == 0;} | |
template <class _Ch, class _Tr> | |
friend | |
__attribute__ ((__visibility__("hidden"))) | |
ostreambuf_iterator<_Ch, _Tr> | |
__pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s, | |
const _Ch* __ob, const _Ch* __op, const _Ch* __oe, | |
ios_base& __iob, _Ch __fl); | |
}; | |
template <class _Iter> | |
class __attribute__ ((__type_visibility__("default"))) move_iterator | |
{ | |
private: | |
_Iter __i; | |
public: | |
typedef _Iter iterator_type; | |
typedef typename iterator_traits<iterator_type>::iterator_category iterator_category; | |
typedef typename iterator_traits<iterator_type>::value_type value_type; | |
typedef typename iterator_traits<iterator_type>::difference_type difference_type; | |
typedef typename iterator_traits<iterator_type>::pointer pointer; | |
typedef value_type&& reference; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator() : __i() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit move_iterator(_Iter __x) : __i(__x) {} | |
template <class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator(const move_iterator<_Up>& __u) | |
: __i(__u.base()) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Iter base() const {return __i;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator*() const { | |
return static_cast<reference>(*__i); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer operator->() const { | |
typename iterator_traits<iterator_type>::reference __ref = *__i; | |
return &__ref; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator& operator++() {++__i; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator operator++(int) | |
{move_iterator __tmp(*this); ++__i; return __tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator& operator--() {--__i; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator operator--(int) | |
{move_iterator __tmp(*this); --__i; return __tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator operator+ (difference_type __n) const | |
{return move_iterator(__i + __n);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator& operator+=(difference_type __n) | |
{__i += __n; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator operator- (difference_type __n) const | |
{return move_iterator(__i - __n);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) move_iterator& operator-=(difference_type __n) | |
{__i -= __n; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator[](difference_type __n) const | |
{ | |
return static_cast<reference>(__i[__n]); | |
} | |
}; | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() == __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() < __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() != __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() > __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() >= __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() <= __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename move_iterator<_Iter1>::difference_type | |
operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) | |
{ | |
return __x.base() - __y.base(); | |
} | |
template <class _Iter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
move_iterator<_Iter> | |
operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterator<_Iter>& __x) | |
{ | |
return move_iterator<_Iter>(__x.base() + __n); | |
} | |
template <class _Iter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
move_iterator<_Iter> | |
make_move_iterator(_Iter __i) | |
{ | |
return move_iterator<_Iter>(__i); | |
} | |
template <class _Iter> class __wrap_iter; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __wrap_iter<_Iter1>::difference_type | |
operator-(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__wrap_iter<_Iter> | |
operator+(typename __wrap_iter<_Iter>::difference_type, __wrap_iter<_Iter>) noexcept; | |
template <class _Ip, class _Op> _Op __attribute__ ((__visibility__("hidden"), __always_inline__)) copy(_Ip, _Ip, _Op); | |
template <class _B1, class _B2> _B2 __attribute__ ((__visibility__("hidden"), __always_inline__)) copy_backward(_B1, _B1, _B2); | |
template <class _Ip, class _Op> _Op __attribute__ ((__visibility__("hidden"), __always_inline__)) move(_Ip, _Ip, _Op); | |
template <class _B1, class _B2> _B2 __attribute__ ((__visibility__("hidden"), __always_inline__)) move_backward(_B1, _B1, _B2); | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_trivially_copy_assignable<_Tp>::value, | |
_Tp* | |
>::type | |
__unwrap_iter(__wrap_iter<_Tp*>); | |
template <class _Iter> | |
class __wrap_iter | |
{ | |
public: | |
typedef _Iter iterator_type; | |
typedef typename iterator_traits<iterator_type>::iterator_category iterator_category; | |
typedef typename iterator_traits<iterator_type>::value_type value_type; | |
typedef typename iterator_traits<iterator_type>::difference_type difference_type; | |
typedef typename iterator_traits<iterator_type>::pointer pointer; | |
typedef typename iterator_traits<iterator_type>::reference reference; | |
private: | |
iterator_type __i; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter() noexcept | |
{ | |
} | |
template <class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter(const __wrap_iter<_Up>& __u, | |
typename enable_if<is_convertible<_Up, iterator_type>::value>::type* = 0) noexcept | |
: __i(__u.base()) | |
{ | |
} | |
# 1168 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator*() const noexcept | |
{ | |
return *__i; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer operator->() const noexcept | |
{ | |
return (pointer)&reinterpret_cast<const volatile char&>(*__i); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter& operator++() noexcept | |
{ | |
++__i; | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter operator++(int) noexcept | |
{__wrap_iter __tmp(*this); ++(*this); return __tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter& operator--() noexcept | |
{ | |
--__i; | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter operator--(int) noexcept | |
{__wrap_iter __tmp(*this); --(*this); return __tmp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter operator+ (difference_type __n) const noexcept | |
{__wrap_iter __w(*this); __w += __n; return __w;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter& operator+=(difference_type __n) noexcept | |
{ | |
__i += __n; | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter operator- (difference_type __n) const noexcept | |
{return *this + (-__n);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter& operator-=(difference_type __n) noexcept | |
{*this += -__n; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator[](difference_type __n) const noexcept | |
{ | |
return __i[__n]; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) iterator_type base() const noexcept {return __i;} | |
private: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __wrap_iter(iterator_type __x) noexcept : __i(__x) {} | |
template <class _Up> friend class __wrap_iter; | |
template <class _CharT, class _Traits, class _Alloc> friend class basic_string; | |
template <class _Tp, class _Alloc> friend class __attribute__ ((__type_visibility__("default"))) vector; | |
template <class _Iter1, class _Iter2> | |
friend | |
bool | |
operator==(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
friend | |
bool | |
operator<(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
friend | |
bool | |
operator!=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
friend | |
bool | |
operator>(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
friend | |
bool | |
operator>=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
friend | |
bool | |
operator<=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1, class _Iter2> | |
friend | |
typename __wrap_iter<_Iter1>::difference_type | |
operator-(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) noexcept; | |
template <class _Iter1> | |
friend | |
__wrap_iter<_Iter1> | |
operator+(typename __wrap_iter<_Iter1>::difference_type, __wrap_iter<_Iter1>) noexcept; | |
template <class _Ip, class _Op> friend _Op copy(_Ip, _Ip, _Op); | |
template <class _B1, class _B2> friend _B2 copy_backward(_B1, _B1, _B2); | |
template <class _Ip, class _Op> friend _Op move(_Ip, _Ip, _Op); | |
template <class _B1, class _B2> friend _B2 move_backward(_B1, _B1, _B2); | |
template <class _Tp> | |
friend | |
typename enable_if | |
< | |
is_trivially_copy_assignable<_Tp>::value, | |
_Tp* | |
>::type | |
__unwrap_iter(__wrap_iter<_Tp*>); | |
}; | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return __x.base() == __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return __x.base() < __y.base(); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return !(__x == __y); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return __y < __x; | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return !(__x < __y); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return !(__y < __x); | |
} | |
template <class _Iter1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) noexcept | |
{ | |
return !(__x == __y); | |
} | |
template <class _Iter1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) noexcept | |
{ | |
return __y < __x; | |
} | |
template <class _Iter1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) noexcept | |
{ | |
return !(__x < __y); | |
} | |
template <class _Iter1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) noexcept | |
{ | |
return !(__y < __x); | |
} | |
template <class _Iter1, class _Iter2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __wrap_iter<_Iter1>::difference_type | |
operator-(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) noexcept | |
{ | |
return __x.base() - __y.base(); | |
} | |
template <class _Iter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__wrap_iter<_Iter> | |
operator+(typename __wrap_iter<_Iter>::difference_type __n, | |
__wrap_iter<_Iter> __x) noexcept | |
{ | |
__x += __n; | |
return __x; | |
} | |
template <class _Tp, size_t _Np> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
begin(_Tp (&__array)[_Np]) | |
{ | |
return __array; | |
} | |
template <class _Tp, size_t _Np> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
end(_Tp (&__array)[_Np]) | |
{ | |
return __array + _Np; | |
} | |
template <class _Cp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
begin(_Cp& __c) -> decltype(__c.begin()) | |
{ | |
return __c.begin(); | |
} | |
template <class _Cp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
begin(const _Cp& __c) -> decltype(__c.begin()) | |
{ | |
return __c.begin(); | |
} | |
template <class _Cp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
end(_Cp& __c) -> decltype(__c.end()) | |
{ | |
return __c.end(); | |
} | |
template <class _Cp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
auto | |
end(const _Cp& __c) -> decltype(__c.end()) | |
{ | |
return __c.end(); | |
} | |
# 1612 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iterator" 3 | |
} } | |
# 607 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/tuple" 1 3 | |
# 134 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/tuple" 3 | |
namespace std {inline namespace __1 { | |
template <class ..._Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_size<tuple<_Tp...> > | |
: public integral_constant<size_t, sizeof...(_Tp)> | |
{ | |
}; | |
template <size_t _Ip, class ..._Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple_element<_Ip, tuple<_Tp...> > | |
{ | |
public: | |
typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type; | |
}; | |
# 164 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/tuple" 3 | |
template <size_t _Ip, class _Hp, | |
bool=is_empty<_Hp>::value && !__libcpp_is_final<_Hp>::value | |
> | |
class __tuple_leaf; | |
template <size_t _Ip, class _Hp, bool _Ep> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(__tuple_leaf<_Ip, _Hp, _Ep>& __x, __tuple_leaf<_Ip, _Hp, _Ep>& __y) | |
noexcept(__is_nothrow_swappable<_Hp>::value) | |
{ | |
swap(__x.get(), __y.get()); | |
} | |
template <size_t _Ip, class _Hp, bool> | |
class __tuple_leaf | |
{ | |
_Hp value; | |
__tuple_leaf& operator=(const __tuple_leaf&); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr __tuple_leaf() | |
noexcept(is_nothrow_default_constructible<_Hp>::value) : value() | |
{static_assert(!is_reference<_Hp>::value, | |
"Attempted to default construct a reference element in a tuple");} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf(integral_constant<int, 0>, const _Alloc&) | |
: value() | |
{static_assert(!is_reference<_Hp>::value, | |
"Attempted to default construct a reference element in a tuple");} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf(integral_constant<int, 1>, const _Alloc& __a) | |
: value(allocator_arg_t(), __a) | |
{static_assert(!is_reference<_Hp>::value, | |
"Attempted to default construct a reference element in a tuple");} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf(integral_constant<int, 2>, const _Alloc& __a) | |
: value(__a) | |
{static_assert(!is_reference<_Hp>::value, | |
"Attempted to default construct a reference element in a tuple");} | |
template <class _Tp, | |
class = typename enable_if< | |
__lazy_and< | |
__lazy_not<is_same<typename decay<_Tp>::type, __tuple_leaf>> | |
, is_constructible<_Hp, _Tp> | |
>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(_Tp&& __t) noexcept((is_nothrow_constructible<_Hp, _Tp>::value)) | |
: value(std::__1::forward<_Tp>(__t)) | |
{static_assert(!is_reference<_Hp>::value || | |
(is_lvalue_reference<_Hp>::value && | |
(is_lvalue_reference<_Tp>::value || | |
is_same<typename remove_reference<_Tp>::type, | |
reference_wrapper< | |
typename remove_reference<_Hp>::type | |
> | |
>::value)) || | |
(is_rvalue_reference<_Hp>::value && | |
!is_lvalue_reference<_Tp>::value), | |
"Attempted to construct a reference element in a tuple with an rvalue");} | |
template <class _Tp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(integral_constant<int, 0>, const _Alloc&, _Tp&& __t) | |
: value(std::__1::forward<_Tp>(__t)) | |
{static_assert(!is_lvalue_reference<_Hp>::value || | |
(is_lvalue_reference<_Hp>::value && | |
(is_lvalue_reference<_Tp>::value || | |
is_same<typename remove_reference<_Tp>::type, | |
reference_wrapper< | |
typename remove_reference<_Hp>::type | |
> | |
>::value)), | |
"Attempted to construct a reference element in a tuple with an rvalue");} | |
template <class _Tp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(integral_constant<int, 1>, const _Alloc& __a, _Tp&& __t) | |
: value(allocator_arg_t(), __a, std::__1::forward<_Tp>(__t)) | |
{static_assert(!is_lvalue_reference<_Hp>::value || | |
(is_lvalue_reference<_Hp>::value && | |
(is_lvalue_reference<_Tp>::value || | |
is_same<typename remove_reference<_Tp>::type, | |
reference_wrapper< | |
typename remove_reference<_Hp>::type | |
> | |
>::value)), | |
"Attempted to construct a reference element in a tuple with an rvalue");} | |
template <class _Tp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a, _Tp&& __t) | |
: value(std::__1::forward<_Tp>(__t), __a) | |
{static_assert(!is_lvalue_reference<_Hp>::value || | |
(is_lvalue_reference<_Hp>::value && | |
(is_lvalue_reference<_Tp>::value || | |
is_same<typename remove_reference<_Tp>::type, | |
reference_wrapper< | |
typename remove_reference<_Hp>::type | |
> | |
>::value)), | |
"Attempted to construct a reference element in a tuple with an rvalue");} | |
__tuple_leaf(const __tuple_leaf& __t) = default; | |
__tuple_leaf(__tuple_leaf&& __t) = default; | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf& | |
operator=(_Tp&& __t) noexcept((is_nothrow_assignable<_Hp&, _Tp>::value)) | |
{ | |
value = std::__1::forward<_Tp>(__t); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
int swap(__tuple_leaf& __t) noexcept(__is_nothrow_swappable<__tuple_leaf>::value) | |
{ | |
std::__1::swap(*this, __t); | |
return 0; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Hp& get() noexcept {return value;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) const _Hp& get() const noexcept {return value;} | |
}; | |
template <size_t _Ip, class _Hp> | |
class __tuple_leaf<_Ip, _Hp, true> | |
: private _Hp | |
{ | |
__tuple_leaf& operator=(const __tuple_leaf&); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr __tuple_leaf() | |
noexcept(is_nothrow_default_constructible<_Hp>::value) {} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf(integral_constant<int, 0>, const _Alloc&) {} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf(integral_constant<int, 1>, const _Alloc& __a) | |
: _Hp(allocator_arg_t(), __a) {} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf(integral_constant<int, 2>, const _Alloc& __a) | |
: _Hp(__a) {} | |
template <class _Tp, | |
class = typename enable_if< | |
__lazy_and< | |
__lazy_not<is_same<typename decay<_Tp>::type, __tuple_leaf>> | |
, is_constructible<_Hp, _Tp> | |
>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(_Tp&& __t) noexcept((is_nothrow_constructible<_Hp, _Tp>::value)) | |
: _Hp(std::__1::forward<_Tp>(__t)) {} | |
template <class _Tp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(integral_constant<int, 0>, const _Alloc&, _Tp&& __t) | |
: _Hp(std::__1::forward<_Tp>(__t)) {} | |
template <class _Tp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(integral_constant<int, 1>, const _Alloc& __a, _Tp&& __t) | |
: _Hp(allocator_arg_t(), __a, std::__1::forward<_Tp>(__t)) {} | |
template <class _Tp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tuple_leaf(integral_constant<int, 2>, const _Alloc& __a, _Tp&& __t) | |
: _Hp(std::__1::forward<_Tp>(__t), __a) {} | |
__tuple_leaf(__tuple_leaf const &) = default; | |
__tuple_leaf(__tuple_leaf &&) = default; | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_leaf& | |
operator=(_Tp&& __t) noexcept((is_nothrow_assignable<_Hp&, _Tp>::value)) | |
{ | |
_Hp::operator=(std::__1::forward<_Tp>(__t)); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
int | |
swap(__tuple_leaf& __t) noexcept(__is_nothrow_swappable<__tuple_leaf>::value) | |
{ | |
std::__1::swap(*this, __t); | |
return 0; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Hp& get() noexcept {return static_cast<_Hp&>(*this);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) const _Hp& get() const noexcept {return static_cast<const _Hp&>(*this);} | |
}; | |
template <class ..._Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __swallow(_Tp&&...) noexcept {} | |
template <bool ..._Pred> | |
struct __all | |
: is_same<__all<_Pred...>, __all<(_Pred, true)...>> | |
{ }; | |
template <class _Tp> | |
struct __all_default_constructible; | |
template <class ..._Tp> | |
struct __all_default_constructible<__tuple_types<_Tp...>> | |
: __all<is_default_constructible<_Tp>::value...> | |
{ }; | |
template<class _Indx, class ..._Tp> struct __tuple_impl; | |
template<size_t ..._Indx, class ..._Tp> | |
struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...> | |
: public __tuple_leaf<_Indx, _Tp>... | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr __tuple_impl() | |
noexcept(__all<is_nothrow_default_constructible<_Tp>::value...>::value) {} | |
template <size_t ..._Uf, class ..._Tf, | |
size_t ..._Ul, class ..._Tl, class ..._Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit | |
__tuple_impl(__tuple_indices<_Uf...>, __tuple_types<_Tf...>, | |
__tuple_indices<_Ul...>, __tuple_types<_Tl...>, | |
_Up&&... __u) | |
noexcept((__all<is_nothrow_constructible<_Tf, _Up>::value...>::value && __all<is_nothrow_default_constructible<_Tl>::value...>::value)) : | |
__tuple_leaf<_Uf, _Tf>(std::__1::forward<_Up>(__u))..., | |
__tuple_leaf<_Ul, _Tl>()... | |
{} | |
template <class _Alloc, size_t ..._Uf, class ..._Tf, | |
size_t ..._Ul, class ..._Tl, class ..._Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit | |
__tuple_impl(allocator_arg_t, const _Alloc& __a, | |
__tuple_indices<_Uf...>, __tuple_types<_Tf...>, | |
__tuple_indices<_Ul...>, __tuple_types<_Tl...>, | |
_Up&&... __u) : | |
__tuple_leaf<_Uf, _Tf>(__uses_alloc_ctor<_Tf, _Alloc, _Up>(), __a, | |
std::__1::forward<_Up>(__u))..., | |
__tuple_leaf<_Ul, _Tl>(__uses_alloc_ctor<_Tl, _Alloc>(), __a)... | |
{} | |
template <class _Tuple, | |
class = typename enable_if | |
< | |
__tuple_constructible<_Tuple, tuple<_Tp...> >::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_impl(_Tuple&& __t) noexcept((__all<is_nothrow_constructible<_Tp, typename tuple_element<_Indx, typename __make_tuple_types<_Tuple>::type>::type>::value...>::value)) | |
: __tuple_leaf<_Indx, _Tp>(std::__1::forward<typename tuple_element<_Indx, | |
typename __make_tuple_types<_Tuple>::type>::type>(std::__1::get<_Indx>(__t)))... | |
{} | |
template <class _Alloc, class _Tuple, | |
class = typename enable_if | |
< | |
__tuple_convertible<_Tuple, tuple<_Tp...> >::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_impl(allocator_arg_t, const _Alloc& __a, _Tuple&& __t) | |
: __tuple_leaf<_Indx, _Tp>(__uses_alloc_ctor<_Tp, _Alloc, typename tuple_element<_Indx, | |
typename __make_tuple_types<_Tuple>::type>::type>(), __a, | |
std::__1::forward<typename tuple_element<_Indx, | |
typename __make_tuple_types<_Tuple>::type>::type>(std::__1::get<_Indx>(__t)))... | |
{} | |
template <class _Tuple> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
__tuple_assignable<_Tuple, tuple<_Tp...> >::value, | |
__tuple_impl& | |
>::type | |
operator=(_Tuple&& __t) noexcept((__all<is_nothrow_assignable<_Tp&, typename tuple_element<_Indx, typename __make_tuple_types<_Tuple>::type>::type>::value...>::value)) | |
{ | |
__swallow(__tuple_leaf<_Indx, _Tp>::operator=(std::__1::forward<typename tuple_element<_Indx, | |
typename __make_tuple_types<_Tuple>::type>::type>(std::__1::get<_Indx>(__t)))...); | |
return *this; | |
} | |
__tuple_impl(const __tuple_impl&) = default; | |
__tuple_impl(__tuple_impl&&) = default; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_impl& | |
operator=(const __tuple_impl& __t) noexcept((__all<is_nothrow_copy_assignable<_Tp>::value...>::value)) | |
{ | |
__swallow(__tuple_leaf<_Indx, _Tp>::operator=(static_cast<const __tuple_leaf<_Indx, _Tp>&>(__t).get())...); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tuple_impl& | |
operator=(__tuple_impl&& __t) noexcept((__all<is_nothrow_move_assignable<_Tp>::value...>::value)) | |
{ | |
__swallow(__tuple_leaf<_Indx, _Tp>::operator=(std::__1::forward<_Tp>(static_cast<__tuple_leaf<_Indx, _Tp>&>(__t).get()))...); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(__tuple_impl& __t) | |
noexcept(__all<__is_nothrow_swappable<_Tp>::value...>::value) | |
{ | |
__swallow(__tuple_leaf<_Indx, _Tp>::swap(static_cast<__tuple_leaf<_Indx, _Tp>&>(__t))...); | |
} | |
}; | |
template <class ..._Tp> | |
class __attribute__ ((__type_visibility__("default"))) tuple | |
{ | |
typedef __tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...> base; | |
base base_; | |
template <size_t _Jp, class ..._Up> friend | |
typename tuple_element<_Jp, tuple<_Up...> >::type& get(tuple<_Up...>&) noexcept; | |
template <size_t _Jp, class ..._Up> friend | |
const typename tuple_element<_Jp, tuple<_Up...> >::type& get(const tuple<_Up...>&) noexcept; | |
template <size_t _Jp, class ..._Up> friend | |
typename tuple_element<_Jp, tuple<_Up...> >::type&& get(tuple<_Up...>&&) noexcept; | |
public: | |
template <bool _Dummy = true, class = typename enable_if< | |
__all<__dependent_type<is_default_constructible<_Tp>, _Dummy>::value...>::value | |
>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr tuple() | |
noexcept(__all<is_nothrow_default_constructible<_Tp>::value...>::value) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit tuple(const _Tp& ... __t) noexcept((__all<is_nothrow_copy_constructible<_Tp>::value...>::value)) | |
: base_(typename __make_tuple_indices<sizeof...(_Tp)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(), | |
typename __make_tuple_indices<0>::type(), | |
typename __make_tuple_types<tuple, 0>::type(), | |
__t... | |
) {} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(allocator_arg_t, const _Alloc& __a, const _Tp& ... __t) | |
: base_(allocator_arg_t(), __a, | |
typename __make_tuple_indices<sizeof...(_Tp)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Tp)>::type(), | |
typename __make_tuple_indices<0>::type(), | |
typename __make_tuple_types<tuple, 0>::type(), | |
__t... | |
) {} | |
template <class ..._Up, | |
typename enable_if | |
< | |
sizeof...(_Up) <= sizeof...(_Tp) && | |
__tuple_convertible | |
< | |
tuple<_Up...>, | |
typename __make_tuple_types<tuple, | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value && | |
__all_default_constructible< | |
typename __make_tuple_types<tuple, sizeof...(_Tp), | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value, | |
bool | |
>::type = false | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(_Up&&... __u) | |
noexcept(( is_nothrow_constructible<base, typename __make_tuple_indices<sizeof...(_Up)>::type, typename __make_tuple_types<tuple, sizeof...(_Up)>::type, typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type, typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type, _Up... >::value )) | |
# 571 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/tuple" 3 | |
: base_(typename __make_tuple_indices<sizeof...(_Up)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Up)>::type(), | |
typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(), | |
std::__1::forward<_Up>(__u)...) {} | |
template <class ..._Up, | |
typename enable_if | |
< | |
sizeof...(_Up) <= sizeof...(_Tp) && | |
__tuple_constructible | |
< | |
tuple<_Up...>, | |
typename __make_tuple_types<tuple, | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value && | |
!__tuple_convertible | |
< | |
tuple<_Up...>, | |
typename __make_tuple_types<tuple, | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value && | |
__all_default_constructible< | |
typename __make_tuple_types<tuple, sizeof...(_Tp), | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value, | |
bool | |
>::type =false | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit | |
tuple(_Up&&... __u) | |
noexcept(( is_nothrow_constructible<base, typename __make_tuple_indices<sizeof...(_Up)>::type, typename __make_tuple_types<tuple, sizeof...(_Up)>::type, typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type, typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type, _Up... >::value )) | |
# 618 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/tuple" 3 | |
: base_(typename __make_tuple_indices<sizeof...(_Up)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Up)>::type(), | |
typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(), | |
std::__1::forward<_Up>(__u)...) {} | |
template <class _Alloc, class ..._Up, | |
class = typename enable_if | |
< | |
sizeof...(_Up) <= sizeof...(_Tp) && | |
__tuple_convertible | |
< | |
tuple<_Up...>, | |
typename __make_tuple_types<tuple, | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value && | |
__all_default_constructible< | |
typename __make_tuple_types<tuple, sizeof...(_Tp), | |
sizeof...(_Up) < sizeof...(_Tp) ? | |
sizeof...(_Up) : | |
sizeof...(_Tp)>::type | |
>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(allocator_arg_t, const _Alloc& __a, _Up&&... __u) | |
: base_(allocator_arg_t(), __a, | |
typename __make_tuple_indices<sizeof...(_Up)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Up)>::type(), | |
typename __make_tuple_indices<sizeof...(_Tp), sizeof...(_Up)>::type(), | |
typename __make_tuple_types<tuple, sizeof...(_Tp), sizeof...(_Up)>::type(), | |
std::__1::forward<_Up>(__u)...) {} | |
template <class _Tuple, | |
typename enable_if | |
< | |
__tuple_convertible<_Tuple, tuple>::value, | |
bool | |
>::type = false | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(_Tuple&& __t) noexcept((is_nothrow_constructible<base, _Tuple>::value)) | |
: base_(std::__1::forward<_Tuple>(__t)) {} | |
template <class _Tuple, | |
typename enable_if | |
< | |
__tuple_constructible<_Tuple, tuple>::value && | |
!__tuple_convertible<_Tuple, tuple>::value, | |
bool | |
>::type = false | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit | |
tuple(_Tuple&& __t) noexcept((is_nothrow_constructible<base, _Tuple>::value)) | |
: base_(std::__1::forward<_Tuple>(__t)) {} | |
template <class _Alloc, class _Tuple, | |
class = typename enable_if | |
< | |
__tuple_convertible<_Tuple, tuple>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(allocator_arg_t, const _Alloc& __a, _Tuple&& __t) | |
: base_(allocator_arg_t(), __a, std::__1::forward<_Tuple>(__t)) {} | |
template <class _Tuple, | |
class = typename enable_if | |
< | |
__tuple_assignable<_Tuple, tuple>::value | |
>::type | |
> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple& | |
operator=(_Tuple&& __t) noexcept((is_nothrow_assignable<base&, _Tuple>::value)) | |
{ | |
base_.operator=(std::__1::forward<_Tuple>(__t)); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(tuple& __t) noexcept(__all<__is_nothrow_swappable<_Tp>::value...>::value) | |
{base_.swap(__t.base_);} | |
}; | |
template <> | |
class __attribute__ ((__type_visibility__("default"))) tuple<> | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr tuple() noexcept {} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(allocator_arg_t, const _Alloc&) noexcept {} | |
template <class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept {} | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(array<_Up, 0>) noexcept {} | |
template <class _Alloc, class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple(allocator_arg_t, const _Alloc&, array<_Up, 0>) noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(tuple&) noexcept {} | |
}; | |
template <class ..._Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
__all<__is_swappable<_Tp>::value...>::value, | |
void | |
>::type | |
swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u) | |
noexcept(__all<__is_nothrow_swappable<_Tp>::value...>::value) | |
{__t.swap(__u);} | |
template <size_t _Ip, class ..._Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, tuple<_Tp...> >::type& | |
get(tuple<_Tp...>& __t) noexcept | |
{ | |
typedef typename tuple_element<_Ip, tuple<_Tp...> >::type type; | |
return static_cast<__tuple_leaf<_Ip, type>&>(__t.base_).get(); | |
} | |
template <size_t _Ip, class ..._Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const typename tuple_element<_Ip, tuple<_Tp...> >::type& | |
get(const tuple<_Tp...>& __t) noexcept | |
{ | |
typedef typename tuple_element<_Ip, tuple<_Tp...> >::type type; | |
return static_cast<const __tuple_leaf<_Ip, type>&>(__t.base_).get(); | |
} | |
template <size_t _Ip, class ..._Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename tuple_element<_Ip, tuple<_Tp...> >::type&& | |
get(tuple<_Tp...>&& __t) noexcept | |
{ | |
typedef typename tuple_element<_Ip, tuple<_Tp...> >::type type; | |
return static_cast<type&&>( | |
static_cast<__tuple_leaf<_Ip, type>&&>(__t.base_).get()); | |
} | |
# 829 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/tuple" 3 | |
template <class ..._Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple<_Tp&...> | |
tie(_Tp&... __t) noexcept | |
{ | |
return tuple<_Tp&...>(__t...); | |
} | |
template <class _Up> | |
struct __ignore_t | |
{ | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const __ignore_t& operator=(_Tp&&) const {return *this;} | |
}; | |
namespace { const __ignore_t<unsigned char> ignore = __ignore_t<unsigned char>(); } | |
template <class _Tp> | |
struct __make_tuple_return_impl | |
{ | |
typedef _Tp type; | |
}; | |
template <class _Tp> | |
struct __make_tuple_return_impl<reference_wrapper<_Tp> > | |
{ | |
typedef _Tp& type; | |
}; | |
template <class _Tp> | |
struct __make_tuple_return | |
{ | |
typedef typename __make_tuple_return_impl<typename decay<_Tp>::type>::type type; | |
}; | |
template <class... _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple<typename __make_tuple_return<_Tp>::type...> | |
make_tuple(_Tp&&... __t) | |
{ | |
return tuple<typename __make_tuple_return<_Tp>::type...>(std::__1::forward<_Tp>(__t)...); | |
} | |
template <class... _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple<_Tp&&...> | |
forward_as_tuple(_Tp&&... __t) noexcept | |
{ | |
return tuple<_Tp&&...>(std::__1::forward<_Tp>(__t)...); | |
} | |
template <size_t _Ip> | |
struct __tuple_equal | |
{ | |
template <class _Tp, class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Up& __y) | |
{ | |
return __tuple_equal<_Ip - 1>()(__x, __y) && std::__1::get<_Ip-1>(__x) == std::__1::get<_Ip-1>(__y); | |
} | |
}; | |
template <> | |
struct __tuple_equal<0> | |
{ | |
template <class _Tp, class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp&, const _Up&) | |
{ | |
return true; | |
} | |
}; | |
template <class ..._Tp, class ..._Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) | |
{ | |
return __tuple_equal<sizeof...(_Tp)>()(__x, __y); | |
} | |
template <class ..._Tp, class ..._Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) | |
{ | |
return !(__x == __y); | |
} | |
template <size_t _Ip> | |
struct __tuple_less | |
{ | |
template <class _Tp, class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Up& __y) | |
{ | |
const size_t __idx = tuple_size<_Tp>::value - _Ip; | |
if (std::__1::get<__idx>(__x) < std::__1::get<__idx>(__y)) | |
return true; | |
if (std::__1::get<__idx>(__y) < std::__1::get<__idx>(__x)) | |
return false; | |
return __tuple_less<_Ip-1>()(__x, __y); | |
} | |
}; | |
template <> | |
struct __tuple_less<0> | |
{ | |
template <class _Tp, class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp&, const _Up&) | |
{ | |
return false; | |
} | |
}; | |
template <class ..._Tp, class ..._Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) | |
{ | |
return __tuple_less<sizeof...(_Tp)>()(__x, __y); | |
} | |
template <class ..._Tp, class ..._Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) | |
{ | |
return __y < __x; | |
} | |
template <class ..._Tp, class ..._Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) | |
{ | |
return !(__x < __y); | |
} | |
template <class ..._Tp, class ..._Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) | |
{ | |
return !(__y < __x); | |
} | |
template <class _Tp, class _Up> struct __tuple_cat_type; | |
template <class ..._Ttypes, class ..._Utypes> | |
struct __tuple_cat_type<tuple<_Ttypes...>, __tuple_types<_Utypes...> > | |
{ | |
typedef tuple<_Ttypes..., _Utypes...> type; | |
}; | |
template <class _ResultTuple, bool _Is_Tuple0TupleLike, class ..._Tuples> | |
struct __tuple_cat_return_1 | |
{ | |
}; | |
template <class ..._Types, class _Tuple0> | |
struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0> | |
{ | |
typedef typename __tuple_cat_type<tuple<_Types...>, | |
typename __make_tuple_types<typename remove_reference<_Tuple0>::type>::type>::type | |
type; | |
}; | |
template <class ..._Types, class _Tuple0, class _Tuple1, class ..._Tuples> | |
struct __tuple_cat_return_1<tuple<_Types...>, true, _Tuple0, _Tuple1, _Tuples...> | |
: public __tuple_cat_return_1< | |
typename __tuple_cat_type< | |
tuple<_Types...>, | |
typename __make_tuple_types<typename remove_reference<_Tuple0>::type>::type | |
>::type, | |
__tuple_like<typename remove_reference<_Tuple1>::type>::value, | |
_Tuple1, _Tuples...> | |
{ | |
}; | |
template <class ..._Tuples> struct __tuple_cat_return; | |
template <class _Tuple0, class ..._Tuples> | |
struct __tuple_cat_return<_Tuple0, _Tuples...> | |
: public __tuple_cat_return_1<tuple<>, | |
__tuple_like<typename remove_reference<_Tuple0>::type>::value, _Tuple0, | |
_Tuples...> | |
{ | |
}; | |
template <> | |
struct __tuple_cat_return<> | |
{ | |
typedef tuple<> type; | |
}; | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
tuple<> | |
tuple_cat() | |
{ | |
return tuple<>(); | |
} | |
template <class _Rp, class _Indices, class _Tuple0, class ..._Tuples> | |
struct __tuple_cat_return_ref_imp; | |
template <class ..._Types, size_t ..._I0, class _Tuple0> | |
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0> | |
{ | |
typedef typename remove_reference<_Tuple0>::type _T0; | |
typedef tuple<_Types..., typename __apply_cv<_Tuple0, | |
typename tuple_element<_I0, _T0>::type>::type&&...> type; | |
}; | |
template <class ..._Types, size_t ..._I0, class _Tuple0, class _Tuple1, class ..._Tuples> | |
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, | |
_Tuple0, _Tuple1, _Tuples...> | |
: public __tuple_cat_return_ref_imp< | |
tuple<_Types..., typename __apply_cv<_Tuple0, | |
typename tuple_element<_I0, | |
typename remove_reference<_Tuple0>::type>::type>::type&&...>, | |
typename __make_tuple_indices<tuple_size<typename | |
remove_reference<_Tuple1>::type>::value>::type, | |
_Tuple1, _Tuples...> | |
{ | |
}; | |
template <class _Tuple0, class ..._Tuples> | |
struct __tuple_cat_return_ref | |
: public __tuple_cat_return_ref_imp<tuple<>, | |
typename __make_tuple_indices< | |
tuple_size<typename remove_reference<_Tuple0>::type>::value | |
>::type, _Tuple0, _Tuples...> | |
{ | |
}; | |
template <class _Types, class _I0, class _J0> | |
struct __tuple_cat; | |
template <class ..._Types, size_t ..._I0, size_t ..._J0> | |
struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J0...> > | |
{ | |
template <class _Tuple0> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&>::type | |
operator()(tuple<_Types...> __t, _Tuple0&& __t0) | |
{ | |
return forward_as_tuple(std::__1::forward<_Types>(std::__1::get<_I0>(__t))..., | |
std::__1::get<_J0>(std::__1::forward<_Tuple0>(__t0))...); | |
} | |
template <class _Tuple0, class _Tuple1, class ..._Tuples> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __tuple_cat_return_ref<tuple<_Types...>&&, _Tuple0&&, _Tuple1&&, _Tuples&&...>::type | |
operator()(tuple<_Types...> __t, _Tuple0&& __t0, _Tuple1&& __t1, _Tuples&& ...__tpls) | |
{ | |
typedef typename remove_reference<_Tuple0>::type _T0; | |
typedef typename remove_reference<_Tuple1>::type _T1; | |
return __tuple_cat< | |
tuple<_Types..., typename __apply_cv<_Tuple0, typename tuple_element<_J0, _T0>::type>::type&&...>, | |
typename __make_tuple_indices<sizeof ...(_Types) + tuple_size<_T0>::value>::type, | |
typename __make_tuple_indices<tuple_size<_T1>::value>::type>() | |
(forward_as_tuple( | |
std::__1::forward<_Types>(std::__1::get<_I0>(__t))..., | |
std::__1::get<_J0>(std::__1::forward<_Tuple0>(__t0))... | |
), | |
std::__1::forward<_Tuple1>(__t1), | |
std::__1::forward<_Tuples>(__tpls)...); | |
} | |
}; | |
template <class _Tuple0, class... _Tuples> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __tuple_cat_return<_Tuple0, _Tuples...>::type | |
tuple_cat(_Tuple0&& __t0, _Tuples&&... __tpls) | |
{ | |
typedef typename remove_reference<_Tuple0>::type _T0; | |
return __tuple_cat<tuple<>, __tuple_indices<>, | |
typename __make_tuple_indices<tuple_size<_T0>::value>::type>() | |
(tuple<>(), std::__1::forward<_Tuple0>(__t0), | |
std::__1::forward<_Tuples>(__tpls)...); | |
} | |
template <class ..._Tp, class _Alloc> | |
struct __attribute__ ((__type_visibility__("default"))) uses_allocator<tuple<_Tp...>, _Alloc> | |
: true_type {}; | |
template <class _T1, class _T2> | |
template <class... _Args1, class... _Args2, size_t ..._I1, size_t ..._I2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_T1, _T2>::pair(piecewise_construct_t, | |
tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args, | |
__tuple_indices<_I1...>, __tuple_indices<_I2...>) | |
: first(std::__1::forward<_Args1>(std::__1::get<_I1>( __first_args))...), | |
second(std::__1::forward<_Args2>(std::__1::get<_I2>(__second_args))...) | |
{ | |
} | |
} } | |
# 610 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 1 3 | |
# 21 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/assert.h" 1 3 4 | |
# 44 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/assert.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 1 3 4 | |
# 65 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 1 3 4 | |
# 79 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 3 4 | |
typedef enum { | |
P_ALL, | |
P_PID, | |
P_PGID | |
} idtype_t; | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_pid_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_pid_t.h" 3 4 | |
typedef __darwin_pid_t pid_t; | |
# 90 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_id_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_id_t.h" 3 4 | |
typedef __darwin_id_t id_t; | |
# 91 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 2 3 4 | |
# 109 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 1 3 4 | |
# 73 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/appleapiopts.h" 1 3 4 | |
# 74 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/signal.h" 1 3 4 | |
# 32 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/signal.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/signal.h" 1 3 4 | |
# 39 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/signal.h" 3 4 | |
typedef int sig_atomic_t; | |
# 33 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/signal.h" 2 3 4 | |
# 83 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 2 3 4 | |
# 146 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/_mcontext.h" 1 3 4 | |
# 29 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/_mcontext.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_mcontext.h" 1 3 4 | |
# 33 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_mcontext.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 1 3 4 | |
# 43 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_i386_thread_state | |
{ | |
unsigned int __eax; | |
unsigned int __ebx; | |
unsigned int __ecx; | |
unsigned int __edx; | |
unsigned int __edi; | |
unsigned int __esi; | |
unsigned int __ebp; | |
unsigned int __esp; | |
unsigned int __ss; | |
unsigned int __eflags; | |
unsigned int __eip; | |
unsigned int __cs; | |
unsigned int __ds; | |
unsigned int __es; | |
unsigned int __fs; | |
unsigned int __gs; | |
}; | |
# 89 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_fp_control | |
{ | |
unsigned short __invalid :1, | |
__denorm :1, | |
__zdiv :1, | |
__ovrfl :1, | |
__undfl :1, | |
__precis :1, | |
:2, | |
__pc :2, | |
__rc :2, | |
:1, | |
:3; | |
}; | |
typedef struct __darwin_fp_control __darwin_fp_control_t; | |
# 147 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_fp_status | |
{ | |
unsigned short __invalid :1, | |
__denorm :1, | |
__zdiv :1, | |
__ovrfl :1, | |
__undfl :1, | |
__precis :1, | |
__stkflt :1, | |
__errsumm :1, | |
__c0 :1, | |
__c1 :1, | |
__c2 :1, | |
__tos :3, | |
__c3 :1, | |
__busy :1; | |
}; | |
typedef struct __darwin_fp_status __darwin_fp_status_t; | |
# 191 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_mmst_reg | |
{ | |
char __mmst_reg[10]; | |
char __mmst_rsrv[6]; | |
}; | |
# 210 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_xmm_reg | |
{ | |
char __xmm_reg[16]; | |
}; | |
# 232 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_i386_float_state | |
{ | |
int __fpu_reserved[2]; | |
struct __darwin_fp_control __fpu_fcw; | |
struct __darwin_fp_status __fpu_fsw; | |
__uint8_t __fpu_ftw; | |
__uint8_t __fpu_rsrv1; | |
__uint16_t __fpu_fop; | |
__uint32_t __fpu_ip; | |
__uint16_t __fpu_cs; | |
__uint16_t __fpu_rsrv2; | |
__uint32_t __fpu_dp; | |
__uint16_t __fpu_ds; | |
__uint16_t __fpu_rsrv3; | |
__uint32_t __fpu_mxcsr; | |
__uint32_t __fpu_mxcsrmask; | |
struct __darwin_mmst_reg __fpu_stmm0; | |
struct __darwin_mmst_reg __fpu_stmm1; | |
struct __darwin_mmst_reg __fpu_stmm2; | |
struct __darwin_mmst_reg __fpu_stmm3; | |
struct __darwin_mmst_reg __fpu_stmm4; | |
struct __darwin_mmst_reg __fpu_stmm5; | |
struct __darwin_mmst_reg __fpu_stmm6; | |
struct __darwin_mmst_reg __fpu_stmm7; | |
struct __darwin_xmm_reg __fpu_xmm0; | |
struct __darwin_xmm_reg __fpu_xmm1; | |
struct __darwin_xmm_reg __fpu_xmm2; | |
struct __darwin_xmm_reg __fpu_xmm3; | |
struct __darwin_xmm_reg __fpu_xmm4; | |
struct __darwin_xmm_reg __fpu_xmm5; | |
struct __darwin_xmm_reg __fpu_xmm6; | |
struct __darwin_xmm_reg __fpu_xmm7; | |
char __fpu_rsrv4[14*16]; | |
int __fpu_reserved1; | |
}; | |
struct __darwin_i386_avx_state | |
{ | |
int __fpu_reserved[2]; | |
struct __darwin_fp_control __fpu_fcw; | |
struct __darwin_fp_status __fpu_fsw; | |
__uint8_t __fpu_ftw; | |
__uint8_t __fpu_rsrv1; | |
__uint16_t __fpu_fop; | |
__uint32_t __fpu_ip; | |
__uint16_t __fpu_cs; | |
__uint16_t __fpu_rsrv2; | |
__uint32_t __fpu_dp; | |
__uint16_t __fpu_ds; | |
__uint16_t __fpu_rsrv3; | |
__uint32_t __fpu_mxcsr; | |
__uint32_t __fpu_mxcsrmask; | |
struct __darwin_mmst_reg __fpu_stmm0; | |
struct __darwin_mmst_reg __fpu_stmm1; | |
struct __darwin_mmst_reg __fpu_stmm2; | |
struct __darwin_mmst_reg __fpu_stmm3; | |
struct __darwin_mmst_reg __fpu_stmm4; | |
struct __darwin_mmst_reg __fpu_stmm5; | |
struct __darwin_mmst_reg __fpu_stmm6; | |
struct __darwin_mmst_reg __fpu_stmm7; | |
struct __darwin_xmm_reg __fpu_xmm0; | |
struct __darwin_xmm_reg __fpu_xmm1; | |
struct __darwin_xmm_reg __fpu_xmm2; | |
struct __darwin_xmm_reg __fpu_xmm3; | |
struct __darwin_xmm_reg __fpu_xmm4; | |
struct __darwin_xmm_reg __fpu_xmm5; | |
struct __darwin_xmm_reg __fpu_xmm6; | |
struct __darwin_xmm_reg __fpu_xmm7; | |
char __fpu_rsrv4[14*16]; | |
int __fpu_reserved1; | |
char __avx_reserved1[64]; | |
struct __darwin_xmm_reg __fpu_ymmh0; | |
struct __darwin_xmm_reg __fpu_ymmh1; | |
struct __darwin_xmm_reg __fpu_ymmh2; | |
struct __darwin_xmm_reg __fpu_ymmh3; | |
struct __darwin_xmm_reg __fpu_ymmh4; | |
struct __darwin_xmm_reg __fpu_ymmh5; | |
struct __darwin_xmm_reg __fpu_ymmh6; | |
struct __darwin_xmm_reg __fpu_ymmh7; | |
}; | |
# 402 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_i386_exception_state | |
{ | |
__uint16_t __trapno; | |
__uint16_t __cpu; | |
__uint32_t __err; | |
__uint32_t __faultvaddr; | |
}; | |
# 422 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_x86_debug_state32 | |
{ | |
unsigned int __dr0; | |
unsigned int __dr1; | |
unsigned int __dr2; | |
unsigned int __dr3; | |
unsigned int __dr4; | |
unsigned int __dr5; | |
unsigned int __dr6; | |
unsigned int __dr7; | |
}; | |
# 454 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_x86_thread_state64 | |
{ | |
__uint64_t __rax; | |
__uint64_t __rbx; | |
__uint64_t __rcx; | |
__uint64_t __rdx; | |
__uint64_t __rdi; | |
__uint64_t __rsi; | |
__uint64_t __rbp; | |
__uint64_t __rsp; | |
__uint64_t __r8; | |
__uint64_t __r9; | |
__uint64_t __r10; | |
__uint64_t __r11; | |
__uint64_t __r12; | |
__uint64_t __r13; | |
__uint64_t __r14; | |
__uint64_t __r15; | |
__uint64_t __rip; | |
__uint64_t __rflags; | |
__uint64_t __cs; | |
__uint64_t __fs; | |
__uint64_t __gs; | |
}; | |
# 509 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_x86_float_state64 | |
{ | |
int __fpu_reserved[2]; | |
struct __darwin_fp_control __fpu_fcw; | |
struct __darwin_fp_status __fpu_fsw; | |
__uint8_t __fpu_ftw; | |
__uint8_t __fpu_rsrv1; | |
__uint16_t __fpu_fop; | |
__uint32_t __fpu_ip; | |
__uint16_t __fpu_cs; | |
__uint16_t __fpu_rsrv2; | |
__uint32_t __fpu_dp; | |
__uint16_t __fpu_ds; | |
__uint16_t __fpu_rsrv3; | |
__uint32_t __fpu_mxcsr; | |
__uint32_t __fpu_mxcsrmask; | |
struct __darwin_mmst_reg __fpu_stmm0; | |
struct __darwin_mmst_reg __fpu_stmm1; | |
struct __darwin_mmst_reg __fpu_stmm2; | |
struct __darwin_mmst_reg __fpu_stmm3; | |
struct __darwin_mmst_reg __fpu_stmm4; | |
struct __darwin_mmst_reg __fpu_stmm5; | |
struct __darwin_mmst_reg __fpu_stmm6; | |
struct __darwin_mmst_reg __fpu_stmm7; | |
struct __darwin_xmm_reg __fpu_xmm0; | |
struct __darwin_xmm_reg __fpu_xmm1; | |
struct __darwin_xmm_reg __fpu_xmm2; | |
struct __darwin_xmm_reg __fpu_xmm3; | |
struct __darwin_xmm_reg __fpu_xmm4; | |
struct __darwin_xmm_reg __fpu_xmm5; | |
struct __darwin_xmm_reg __fpu_xmm6; | |
struct __darwin_xmm_reg __fpu_xmm7; | |
struct __darwin_xmm_reg __fpu_xmm8; | |
struct __darwin_xmm_reg __fpu_xmm9; | |
struct __darwin_xmm_reg __fpu_xmm10; | |
struct __darwin_xmm_reg __fpu_xmm11; | |
struct __darwin_xmm_reg __fpu_xmm12; | |
struct __darwin_xmm_reg __fpu_xmm13; | |
struct __darwin_xmm_reg __fpu_xmm14; | |
struct __darwin_xmm_reg __fpu_xmm15; | |
char __fpu_rsrv4[6*16]; | |
int __fpu_reserved1; | |
}; | |
struct __darwin_x86_avx_state64 | |
{ | |
int __fpu_reserved[2]; | |
struct __darwin_fp_control __fpu_fcw; | |
struct __darwin_fp_status __fpu_fsw; | |
__uint8_t __fpu_ftw; | |
__uint8_t __fpu_rsrv1; | |
__uint16_t __fpu_fop; | |
__uint32_t __fpu_ip; | |
__uint16_t __fpu_cs; | |
__uint16_t __fpu_rsrv2; | |
__uint32_t __fpu_dp; | |
__uint16_t __fpu_ds; | |
__uint16_t __fpu_rsrv3; | |
__uint32_t __fpu_mxcsr; | |
__uint32_t __fpu_mxcsrmask; | |
struct __darwin_mmst_reg __fpu_stmm0; | |
struct __darwin_mmst_reg __fpu_stmm1; | |
struct __darwin_mmst_reg __fpu_stmm2; | |
struct __darwin_mmst_reg __fpu_stmm3; | |
struct __darwin_mmst_reg __fpu_stmm4; | |
struct __darwin_mmst_reg __fpu_stmm5; | |
struct __darwin_mmst_reg __fpu_stmm6; | |
struct __darwin_mmst_reg __fpu_stmm7; | |
struct __darwin_xmm_reg __fpu_xmm0; | |
struct __darwin_xmm_reg __fpu_xmm1; | |
struct __darwin_xmm_reg __fpu_xmm2; | |
struct __darwin_xmm_reg __fpu_xmm3; | |
struct __darwin_xmm_reg __fpu_xmm4; | |
struct __darwin_xmm_reg __fpu_xmm5; | |
struct __darwin_xmm_reg __fpu_xmm6; | |
struct __darwin_xmm_reg __fpu_xmm7; | |
struct __darwin_xmm_reg __fpu_xmm8; | |
struct __darwin_xmm_reg __fpu_xmm9; | |
struct __darwin_xmm_reg __fpu_xmm10; | |
struct __darwin_xmm_reg __fpu_xmm11; | |
struct __darwin_xmm_reg __fpu_xmm12; | |
struct __darwin_xmm_reg __fpu_xmm13; | |
struct __darwin_xmm_reg __fpu_xmm14; | |
struct __darwin_xmm_reg __fpu_xmm15; | |
char __fpu_rsrv4[6*16]; | |
int __fpu_reserved1; | |
char __avx_reserved1[64]; | |
struct __darwin_xmm_reg __fpu_ymmh0; | |
struct __darwin_xmm_reg __fpu_ymmh1; | |
struct __darwin_xmm_reg __fpu_ymmh2; | |
struct __darwin_xmm_reg __fpu_ymmh3; | |
struct __darwin_xmm_reg __fpu_ymmh4; | |
struct __darwin_xmm_reg __fpu_ymmh5; | |
struct __darwin_xmm_reg __fpu_ymmh6; | |
struct __darwin_xmm_reg __fpu_ymmh7; | |
struct __darwin_xmm_reg __fpu_ymmh8; | |
struct __darwin_xmm_reg __fpu_ymmh9; | |
struct __darwin_xmm_reg __fpu_ymmh10; | |
struct __darwin_xmm_reg __fpu_ymmh11; | |
struct __darwin_xmm_reg __fpu_ymmh12; | |
struct __darwin_xmm_reg __fpu_ymmh13; | |
struct __darwin_xmm_reg __fpu_ymmh14; | |
struct __darwin_xmm_reg __fpu_ymmh15; | |
}; | |
# 751 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_x86_exception_state64 | |
{ | |
__uint16_t __trapno; | |
__uint16_t __cpu; | |
__uint32_t __err; | |
__uint64_t __faultvaddr; | |
}; | |
# 771 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/i386/_structs.h" 3 4 | |
struct __darwin_x86_debug_state64 | |
{ | |
__uint64_t __dr0; | |
__uint64_t __dr1; | |
__uint64_t __dr2; | |
__uint64_t __dr3; | |
__uint64_t __dr4; | |
__uint64_t __dr5; | |
__uint64_t __dr6; | |
__uint64_t __dr7; | |
}; | |
# 34 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_mcontext.h" 2 3 4 | |
struct __darwin_mcontext32 | |
{ | |
struct __darwin_i386_exception_state __es; | |
struct __darwin_i386_thread_state __ss; | |
struct __darwin_i386_float_state __fs; | |
}; | |
struct __darwin_mcontext_avx32 | |
{ | |
struct __darwin_i386_exception_state __es; | |
struct __darwin_i386_thread_state __ss; | |
struct __darwin_i386_avx_state __fs; | |
}; | |
# 76 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_mcontext.h" 3 4 | |
struct __darwin_mcontext64 | |
{ | |
struct __darwin_x86_exception_state64 __es; | |
struct __darwin_x86_thread_state64 __ss; | |
struct __darwin_x86_float_state64 __fs; | |
}; | |
struct __darwin_mcontext_avx64 | |
{ | |
struct __darwin_x86_exception_state64 __es; | |
struct __darwin_x86_thread_state64 __ss; | |
struct __darwin_x86_avx_state64 __fs; | |
}; | |
# 115 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/_mcontext.h" 3 4 | |
typedef struct __darwin_mcontext64 *mcontext_t; | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/_mcontext.h" 2 3 4 | |
# 147 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_sigaltstack.h" 1 3 4 | |
# 36 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_sigaltstack.h" 3 4 | |
struct __darwin_sigaltstack | |
{ | |
void *ss_sp; | |
__darwin_size_t ss_size; | |
int ss_flags; | |
}; | |
typedef struct __darwin_sigaltstack stack_t; | |
# 151 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ucontext.h" 1 3 4 | |
# 34 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_ucontext.h" 3 4 | |
struct __darwin_ucontext | |
{ | |
int uc_onstack; | |
__darwin_sigset_t uc_sigmask; | |
struct __darwin_sigaltstack uc_stack; | |
struct __darwin_ucontext *uc_link; | |
__darwin_size_t uc_mcsize; | |
struct __darwin_mcontext64 *uc_mcontext; | |
}; | |
typedef struct __darwin_ucontext ucontext_t; | |
# 152 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_uid_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_uid_t.h" 3 4 | |
typedef __darwin_uid_t uid_t; | |
# 157 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 2 3 4 | |
union sigval { | |
int sival_int; | |
void *sival_ptr; | |
}; | |
struct sigevent { | |
int sigev_notify; | |
int sigev_signo; | |
union sigval sigev_value; | |
void (*sigev_notify_function)(union sigval); | |
pthread_attr_t *sigev_notify_attributes; | |
}; | |
typedef struct __siginfo { | |
int si_signo; | |
int si_errno; | |
int si_code; | |
pid_t si_pid; | |
uid_t si_uid; | |
int si_status; | |
void *si_addr; | |
union sigval si_value; | |
long si_band; | |
unsigned long __pad[7]; | |
} siginfo_t; | |
# 269 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
union __sigaction_u { | |
void (*__sa_handler)(int); | |
void (*__sa_sigaction)(int, struct __siginfo *, | |
void *); | |
}; | |
struct __sigaction { | |
union __sigaction_u __sigaction_u; | |
void (*sa_tramp)(void *, int, int, siginfo_t *, void *); | |
sigset_t sa_mask; | |
int sa_flags; | |
}; | |
struct sigaction { | |
union __sigaction_u __sigaction_u; | |
sigset_t sa_mask; | |
int sa_flags; | |
}; | |
# 331 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
typedef void (*sig_t)(int); | |
# 348 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
struct sigvec { | |
void (*sv_handler)(int); | |
int sv_mask; | |
int sv_flags; | |
}; | |
# 367 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
struct sigstack { | |
char *ss_sp; | |
int ss_onstack; | |
}; | |
# 389 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/signal.h" 3 4 | |
extern "C" { | |
void (*signal(int, void (*)(int)))(int); | |
} | |
# 110 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 1 3 4 | |
# 80 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_timeval.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_timeval.h" 3 4 | |
struct timeval | |
{ | |
__darwin_time_t tv_sec; | |
__darwin_suseconds_t tv_usec; | |
}; | |
# 81 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 2 3 4 | |
typedef __uint64_t rlim_t; | |
# 152 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
struct rusage { | |
struct timeval ru_utime; | |
struct timeval ru_stime; | |
# 163 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
long ru_maxrss; | |
long ru_ixrss; | |
long ru_idrss; | |
long ru_isrss; | |
long ru_minflt; | |
long ru_majflt; | |
long ru_nswap; | |
long ru_inblock; | |
long ru_oublock; | |
long ru_msgsnd; | |
long ru_msgrcv; | |
long ru_nsignals; | |
long ru_nvcsw; | |
long ru_nivcsw; | |
}; | |
# 192 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
typedef void *rusage_info_t; | |
struct rusage_info_v0 { | |
uint8_t ri_uuid[16]; | |
uint64_t ri_user_time; | |
uint64_t ri_system_time; | |
uint64_t ri_pkg_idle_wkups; | |
uint64_t ri_interrupt_wkups; | |
uint64_t ri_pageins; | |
uint64_t ri_wired_size; | |
uint64_t ri_resident_size; | |
uint64_t ri_phys_footprint; | |
uint64_t ri_proc_start_abstime; | |
uint64_t ri_proc_exit_abstime; | |
}; | |
struct rusage_info_v1 { | |
uint8_t ri_uuid[16]; | |
uint64_t ri_user_time; | |
uint64_t ri_system_time; | |
uint64_t ri_pkg_idle_wkups; | |
uint64_t ri_interrupt_wkups; | |
uint64_t ri_pageins; | |
uint64_t ri_wired_size; | |
uint64_t ri_resident_size; | |
uint64_t ri_phys_footprint; | |
uint64_t ri_proc_start_abstime; | |
uint64_t ri_proc_exit_abstime; | |
uint64_t ri_child_user_time; | |
uint64_t ri_child_system_time; | |
uint64_t ri_child_pkg_idle_wkups; | |
uint64_t ri_child_interrupt_wkups; | |
uint64_t ri_child_pageins; | |
uint64_t ri_child_elapsed_abstime; | |
}; | |
struct rusage_info_v2 { | |
uint8_t ri_uuid[16]; | |
uint64_t ri_user_time; | |
uint64_t ri_system_time; | |
uint64_t ri_pkg_idle_wkups; | |
uint64_t ri_interrupt_wkups; | |
uint64_t ri_pageins; | |
uint64_t ri_wired_size; | |
uint64_t ri_resident_size; | |
uint64_t ri_phys_footprint; | |
uint64_t ri_proc_start_abstime; | |
uint64_t ri_proc_exit_abstime; | |
uint64_t ri_child_user_time; | |
uint64_t ri_child_system_time; | |
uint64_t ri_child_pkg_idle_wkups; | |
uint64_t ri_child_interrupt_wkups; | |
uint64_t ri_child_pageins; | |
uint64_t ri_child_elapsed_abstime; | |
uint64_t ri_diskio_bytesread; | |
uint64_t ri_diskio_byteswritten; | |
}; | |
struct rusage_info_v3 { | |
uint8_t ri_uuid[16]; | |
uint64_t ri_user_time; | |
uint64_t ri_system_time; | |
uint64_t ri_pkg_idle_wkups; | |
uint64_t ri_interrupt_wkups; | |
uint64_t ri_pageins; | |
uint64_t ri_wired_size; | |
uint64_t ri_resident_size; | |
uint64_t ri_phys_footprint; | |
uint64_t ri_proc_start_abstime; | |
uint64_t ri_proc_exit_abstime; | |
uint64_t ri_child_user_time; | |
uint64_t ri_child_system_time; | |
uint64_t ri_child_pkg_idle_wkups; | |
uint64_t ri_child_interrupt_wkups; | |
uint64_t ri_child_pageins; | |
uint64_t ri_child_elapsed_abstime; | |
uint64_t ri_diskio_bytesread; | |
uint64_t ri_diskio_byteswritten; | |
uint64_t ri_cpu_time_qos_default; | |
uint64_t ri_cpu_time_qos_maintenance; | |
uint64_t ri_cpu_time_qos_background; | |
uint64_t ri_cpu_time_qos_utility; | |
uint64_t ri_cpu_time_qos_legacy; | |
uint64_t ri_cpu_time_qos_user_initiated; | |
uint64_t ri_cpu_time_qos_user_interactive; | |
uint64_t ri_billed_system_time; | |
uint64_t ri_serviced_system_time; | |
}; | |
typedef struct rusage_info_v3 rusage_info_current; | |
# 325 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
struct rlimit { | |
rlim_t rlim_cur; | |
rlim_t rlim_max; | |
}; | |
# 353 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
struct proc_rlimit_control_wakeupmon { | |
uint32_t wm_flags; | |
int32_t wm_rate; | |
}; | |
# 384 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/resource.h" 3 4 | |
extern "C" { | |
int getpriority(int, id_t); | |
int getiopolicy_np(int, int) __attribute__((availability(macosx,introduced=10.5))); | |
int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" ); | |
int getrusage(int, struct rusage *); | |
int setpriority(int, id_t, int); | |
int setiopolicy_np(int, int, int) __attribute__((availability(macosx,introduced=10.5))); | |
int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" ); | |
} | |
# 111 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 2 3 4 | |
# 186 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/endian.h" 1 3 4 | |
# 35 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/endian.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/endian.h" 1 3 4 | |
# 99 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/endian.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_endian.h" 1 3 4 | |
# 130 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_endian.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libkern/_OSByteOrder.h" 1 3 4 | |
# 66 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libkern/_OSByteOrder.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libkern/i386/_OSByteOrder.h" 1 3 4 | |
# 44 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libkern/i386/_OSByteOrder.h" 3 4 | |
static inline | |
__uint16_t | |
_OSSwapInt16( | |
__uint16_t _data | |
) | |
{ | |
return ((__uint16_t)((_data << 8) | (_data >> 8))); | |
} | |
static inline | |
__uint32_t | |
_OSSwapInt32( | |
__uint32_t _data | |
) | |
{ | |
return __builtin_bswap32(_data); | |
} | |
static inline | |
__uint64_t | |
_OSSwapInt64( | |
__uint64_t _data | |
) | |
{ | |
return __builtin_bswap64(_data); | |
} | |
# 67 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libkern/_OSByteOrder.h" 2 3 4 | |
# 131 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_endian.h" 2 3 4 | |
# 100 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/endian.h" 2 3 4 | |
# 36 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/endian.h" 2 3 4 | |
# 187 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 2 3 4 | |
union wait { | |
int w_status; | |
struct { | |
unsigned int w_Termsig:7, | |
w_Coredump:1, | |
w_Retcode:8, | |
w_Filler:16; | |
} w_T; | |
struct { | |
unsigned int w_Stopval:8, | |
w_Stopsig:8, | |
w_Filler:16; | |
} w_S; | |
}; | |
# 247 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/wait.h" 3 4 | |
extern "C" { | |
pid_t wait(int *) __asm("_" "wait" ); | |
pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" ); | |
int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" ); | |
pid_t wait3(int *, int, struct rusage *); | |
pid_t wait4(pid_t, int *, int, struct rusage *); | |
} | |
# 66 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/alloca.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/alloca.h" 3 4 | |
extern "C" { | |
void *alloca(size_t); | |
} | |
# 68 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 2 3 4 | |
# 80 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_wchar_t.h" 1 3 4 | |
# 81 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 2 3 4 | |
typedef struct { | |
int quot; | |
int rem; | |
} div_t; | |
typedef struct { | |
long quot; | |
long rem; | |
} ldiv_t; | |
typedef struct { | |
long long quot; | |
long long rem; | |
} lldiv_t; | |
# 117 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 3 4 | |
extern int __mb_cur_max; | |
# 127 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 3 4 | |
extern "C" { | |
void abort(void) __attribute__((noreturn)); | |
int abs(int) __attribute__((const)); | |
int atexit(void (* _Nonnull)(void)); | |
double atof(const char *); | |
int atoi(const char *); | |
long atol(const char *); | |
long long | |
atoll(const char *); | |
void *bsearch(const void *__key, const void *__base, size_t __nel, | |
size_t __width, int (* _Nonnull __compar)(const void *, const void *)); | |
void *calloc(size_t __count, size_t __size) __attribute__((__warn_unused_result__)); | |
div_t div(int, int) __attribute__((const)); | |
void exit(int) __attribute__((noreturn)); | |
void free(void *); | |
char *getenv(const char *); | |
long labs(long) __attribute__((const)); | |
ldiv_t ldiv(long, long) __attribute__((const)); | |
long long | |
llabs(long long); | |
lldiv_t lldiv(long long, long long); | |
void *malloc(size_t __size) __attribute__((__warn_unused_result__)); | |
int mblen(const char *__s, size_t __n); | |
size_t mbstowcs(wchar_t * , const char * , size_t); | |
int mbtowc(wchar_t * , const char * , size_t); | |
int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __attribute__((availability(macosx,introduced=10.6))); | |
void qsort(void *__base, size_t __nel, size_t __width, | |
int (* _Nonnull __compar)(const void *, const void *)); | |
int rand(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
void *realloc(void *__ptr, size_t __size) __attribute__((__warn_unused_result__)); | |
void srand(unsigned) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
double strtod(const char *, char **) __asm("_" "strtod" ); | |
float strtof(const char *, char **) __asm("_" "strtof" ); | |
long strtol(const char *__str, char **__endptr, int __base); | |
long double | |
strtold(const char *, char **); | |
long long | |
strtoll(const char *__str, char **__endptr, int __base); | |
unsigned long | |
strtoul(const char *__str, char **__endptr, int __base); | |
unsigned long long | |
strtoull(const char *__str, char **__endptr, int __base); | |
# 184 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 3 4 | |
__attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead."))) | |
__attribute__((availability(macosx,introduced=10.0))) | |
__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) | |
int system(const char *) __asm("_" "system" ); | |
size_t wcstombs(char * , const wchar_t * , size_t); | |
int wctomb(char *, wchar_t); | |
void _Exit(int) __attribute__((noreturn)); | |
long a64l(const char *); | |
double drand48(void); | |
char *ecvt(double, int, int *, int *); | |
double erand48(unsigned short[3]); | |
char *fcvt(double, int, int *, int *); | |
char *gcvt(double, int, char *); | |
int getsubopt(char **, char * const *, char **); | |
int grantpt(int); | |
char *initstate(unsigned, char *, size_t); | |
long jrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
char *l64a(long); | |
void lcong48(unsigned short[7]); | |
long lrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
char *mktemp(char *); | |
int mkstemp(char *); | |
long mrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
long nrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
int posix_openpt(int); | |
char *ptsname(int); | |
int putenv(char *) __asm("_" "putenv" ); | |
long random(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
int rand_r(unsigned *) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); | |
char *realpath(const char * , char * ) __asm("_" "realpath" "$DARWIN_EXTSN"); | |
unsigned short | |
*seed48(unsigned short[3]); | |
int setenv(const char * __name, const char * __value, int __overwrite) __asm("_" "setenv" ); | |
void setkey(const char *) __asm("_" "setkey" ); | |
char *setstate(const char *); | |
void srand48(long); | |
void srandom(unsigned); | |
int unlockpt(int); | |
int unsetenv(const char *) __asm("_" "unsetenv" ); | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/types.h" 1 3 4 | |
# 35 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/types.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 1 3 4 | |
# 81 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int8_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int8_t.h" 3 4 | |
typedef unsigned char u_int8_t; | |
# 82 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int16_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int16_t.h" 3 4 | |
typedef unsigned short u_int16_t; | |
# 83 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int32_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int32_t.h" 3 4 | |
typedef unsigned int u_int32_t; | |
# 84 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int64_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_u_int64_t.h" 3 4 | |
typedef unsigned long long u_int64_t; | |
# 85 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 2 3 4 | |
typedef int64_t register_t; | |
# 97 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/i386/types.h" 3 4 | |
typedef u_int64_t user_addr_t; | |
typedef u_int64_t user_size_t; | |
typedef int64_t user_ssize_t; | |
typedef int64_t user_long_t; | |
typedef u_int64_t user_ulong_t; | |
typedef int64_t user_time_t; | |
typedef int64_t user_off_t; | |
typedef u_int64_t syscall_arg_t; | |
# 36 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/machine/types.h" 2 3 4 | |
# 252 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_dev_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_dev_t.h" 3 4 | |
typedef __darwin_dev_t dev_t; | |
# 254 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 2 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_mode_t.h" 1 3 4 | |
# 30 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sys/_types/_mode_t.h" 3 4 | |
typedef __darwin_mode_t mode_t; | |
# 255 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdlib.h" 2 3 4 | |
uint32_t arc4random(void); | |
void arc4random_addrandom(unsigned char * , int ) | |
__attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(macosx,deprecated=10.12,message="use arc4random_stir"))) | |
__attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=10.0,message="use arc4random_stir"))) | |
__attribute__((availability(tvos,introduced=2.0))) __attribute__((availability(tvos,deprecated=10.0,message="use arc4random_stir"))) | |
__attribute__((availability(watchos,introduced=1.0))) __attribute__((availability(watchos,deprecated=3.0,message="use arc4random_stir"))); | |
void arc4random_buf(void * __buf, size_t __nbytes) __attribute__((availability(macosx,introduced=10.7))); | |
void arc4random_stir(void); | |
uint32_t | |
arc4random_uniform(uint32_t __upper_bound) __attribute__((availability(macosx,introduced=10.7))); | |
int atexit_b(void (^ _Nonnull)(void)) __attribute__((availability(macosx,introduced=10.6))); | |
void *bsearch_b(const void *__key, const void *__base, size_t __nel, | |
size_t __width, int (^ _Nonnull __compar)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
char *cgetcap(char *, const char *, int); | |
int cgetclose(void); | |
int cgetent(char **, char **, const char *); | |
int cgetfirst(char **, char **); | |
int cgetmatch(const char *, const char *); | |
int cgetnext(char **, char **); | |
int cgetnum(char *, const char *, long *); | |
int cgetset(const char *); | |
int cgetstr(char *, const char *, char **); | |
int cgetustr(char *, const char *, char **); | |
int daemon(int, int) __asm("_" "daemon" "$1050") __attribute__((availability(macosx,introduced=10.0,deprecated=10.5,message="Use posix_spawn APIs instead."))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); | |
char *devname(dev_t, mode_t); | |
char *devname_r(dev_t, mode_t, char *buf, int len); | |
char *getbsize(int *, long *); | |
int getloadavg(double [], int); | |
const char | |
*getprogname(void); | |
int heapsort(void *__base, size_t __nel, size_t __width, | |
int (* _Nonnull __compar)(const void *, const void *)); | |
int heapsort_b(void *__base, size_t __nel, size_t __width, | |
int (^ _Nonnull __compar)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
int mergesort(void *__base, size_t __nel, size_t __width, | |
int (* _Nonnull __compar)(const void *, const void *)); | |
int mergesort_b(void *__base, size_t __nel, size_t __width, | |
int (^ _Nonnull __compar)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
void psort(void *__base, size_t __nel, size_t __width, | |
int (* _Nonnull __compar)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
void psort_b(void *__base, size_t __nel, size_t __width, | |
int (^ _Nonnull __compar)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
void psort_r(void *__base, size_t __nel, size_t __width, void *, | |
int (* _Nonnull __compar)(void *, const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
void qsort_b(void *__base, size_t __nel, size_t __width, | |
int (^ _Nonnull __compar)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6))); | |
void qsort_r(void *__base, size_t __nel, size_t __width, void *, | |
int (* _Nonnull __compar)(void *, const void *, const void *)); | |
int radixsort(const unsigned char **__base, int __nel, const unsigned char *__table, | |
unsigned __endbyte); | |
void setprogname(const char *); | |
int sradixsort(const unsigned char **__base, int __nel, const unsigned char *__table, | |
unsigned __endbyte); | |
void sranddev(void); | |
void srandomdev(void); | |
void *reallocf(void *__ptr, size_t __size); | |
long long | |
strtoq(const char *__str, char **__endptr, int __base); | |
unsigned long long | |
strtouq(const char *__str, char **__endptr, int __base); | |
extern char *suboptarg; | |
void *valloc(size_t); | |
} | |
# 45 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/assert.h" 2 3 4 | |
# 75 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/assert.h" 3 4 | |
extern "C" { | |
void __assert_rtn(const char *, const char *, int, const char *) __attribute__((noreturn)); | |
} | |
# 22 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 2 3 | |
# 25 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 3 | |
# 613 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic" 1 3 | |
# 534 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic" 3 | |
namespace std {inline namespace __1 { | |
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; | |
# 810 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic" 3 | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
kill_dependency(_Tp __y) noexcept | |
{ | |
return __y; | |
} | |
template <class _Tp, bool = is_integral<_Tp>::value && !is_same<_Tp, bool>::value> | |
struct __atomic_base | |
{ | |
mutable _Atomic(_Tp) __a_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool is_lock_free() const volatile noexcept | |
{ | |
return __c11_atomic_is_lock_free(sizeof(_Tp)); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool is_lock_free() const noexcept | |
{return static_cast<__atomic_base const volatile*>(this)->is_lock_free();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void store(_Tp __d, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{__c11_atomic_store(&__a_, __d, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void store(_Tp __d, memory_order __m = memory_order_seq_cst) noexcept | |
{__c11_atomic_store(&__a_, __d, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp load(memory_order __m = memory_order_seq_cst) const volatile noexcept | |
{return __c11_atomic_load(&__a_, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp load(memory_order __m = memory_order_seq_cst) const noexcept | |
{return __c11_atomic_load(&__a_, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator _Tp() const volatile noexcept {return load();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator _Tp() const noexcept {return load();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_exchange(&__a_, __d, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_exchange(&__a_, __d, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_weak(_Tp& __e, _Tp __d, | |
memory_order __s, memory_order __f) volatile noexcept | |
{return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_weak(_Tp& __e, _Tp __d, | |
memory_order __s, memory_order __f) noexcept | |
{return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_strong(_Tp& __e, _Tp __d, | |
memory_order __s, memory_order __f) volatile noexcept | |
{return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __f);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_strong(_Tp& __e, _Tp __d, | |
memory_order __s, memory_order __f) noexcept | |
{return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __f);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_weak(_Tp& __e, _Tp __d, | |
memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_weak(_Tp& __e, _Tp __d, | |
memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_strong(_Tp& __e, _Tp __d, | |
memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool compare_exchange_strong(_Tp& __e, _Tp __d, | |
memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__atomic_base() noexcept = default; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr __atomic_base(_Tp __d) noexcept : __a_(__d) {} | |
__atomic_base(const __atomic_base&) = delete; | |
__atomic_base& operator=(const __atomic_base&) = delete; | |
__atomic_base& operator=(const __atomic_base&) volatile = delete; | |
}; | |
template <class _Tp> | |
struct __atomic_base<_Tp, true> | |
: public __atomic_base<_Tp, false> | |
{ | |
typedef __atomic_base<_Tp, false> __base; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__atomic_base() noexcept = default; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr __atomic_base(_Tp __d) noexcept : __base(__d) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_fetch_add(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_add(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_fetch_and(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_and(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_fetch_or(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_or(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_fetch_xor(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_xor(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator++(int) volatile noexcept {return fetch_add(_Tp(1));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator++(int) noexcept {return fetch_add(_Tp(1));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator--(int) volatile noexcept {return fetch_sub(_Tp(1));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator--(int) noexcept {return fetch_sub(_Tp(1));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator++() volatile noexcept {return fetch_add(_Tp(1)) + _Tp(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator++() noexcept {return fetch_add(_Tp(1)) + _Tp(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator--() volatile noexcept {return fetch_sub(_Tp(1)) - _Tp(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator--() noexcept {return fetch_sub(_Tp(1)) - _Tp(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator+=(_Tp __op) volatile noexcept {return fetch_add(__op) + __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator+=(_Tp __op) noexcept {return fetch_add(__op) + __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator-=(_Tp __op) volatile noexcept {return fetch_sub(__op) - __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator-=(_Tp __op) noexcept {return fetch_sub(__op) - __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator&=(_Tp __op) volatile noexcept {return fetch_and(__op) & __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator&=(_Tp __op) noexcept {return fetch_and(__op) & __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator|=(_Tp __op) volatile noexcept {return fetch_or(__op) | __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator|=(_Tp __op) noexcept {return fetch_or(__op) | __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator^=(_Tp __op) volatile noexcept {return fetch_xor(__op) ^ __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator^=(_Tp __op) noexcept {return fetch_xor(__op) ^ __op;} | |
}; | |
template <class _Tp> | |
struct atomic | |
: public __atomic_base<_Tp> | |
{ | |
typedef __atomic_base<_Tp> __base; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
atomic() noexcept = default; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr atomic(_Tp __d) noexcept : __base(__d) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator=(_Tp __d) volatile noexcept | |
{__base::store(__d); return __d;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator=(_Tp __d) noexcept | |
{__base::store(__d); return __d;} | |
}; | |
template <class _Tp> | |
struct atomic<_Tp*> | |
: public __atomic_base<_Tp*> | |
{ | |
typedef __atomic_base<_Tp*> __base; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
atomic() noexcept = default; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr atomic(_Tp* __d) noexcept : __base(__d) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator=(_Tp* __d) volatile noexcept | |
{__base::store(__d); return __d;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator=(_Tp* __d) noexcept | |
{__base::store(__d); return __d;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) | |
volatile noexcept | |
{return __c11_atomic_fetch_add(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_add(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) | |
volatile noexcept | |
{return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator++(int) volatile noexcept {return fetch_add(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator++(int) noexcept {return fetch_add(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator--(int) volatile noexcept {return fetch_sub(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator--(int) noexcept {return fetch_sub(1);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator++() volatile noexcept {return fetch_add(1) + 1;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator++() noexcept {return fetch_add(1) + 1;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator--() volatile noexcept {return fetch_sub(1) - 1;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator--() noexcept {return fetch_sub(1) - 1;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator+=(ptrdiff_t __op) volatile noexcept {return fetch_add(__op) + __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator+=(ptrdiff_t __op) noexcept {return fetch_add(__op) + __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator-=(ptrdiff_t __op) volatile noexcept {return fetch_sub(__op) - __op;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* operator-=(ptrdiff_t __op) noexcept {return fetch_sub(__op) - __op;} | |
}; | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_is_lock_free(const volatile atomic<_Tp>* __o) noexcept | |
{ | |
return __o->is_lock_free(); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_is_lock_free(const atomic<_Tp>* __o) noexcept | |
{ | |
return __o->is_lock_free(); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_init(volatile atomic<_Tp>* __o, _Tp __d) noexcept | |
{ | |
__c11_atomic_init(&__o->__a_, __d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_init(atomic<_Tp>* __o, _Tp __d) noexcept | |
{ | |
__c11_atomic_init(&__o->__a_, __d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_store(volatile atomic<_Tp>* __o, _Tp __d) noexcept | |
{ | |
__o->store(__d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_store(atomic<_Tp>* __o, _Tp __d) noexcept | |
{ | |
__o->store(__d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_store_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order __m) noexcept | |
{ | |
__o->store(__d, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_store_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m) noexcept | |
{ | |
__o->store(__d, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_load(const volatile atomic<_Tp>* __o) noexcept | |
{ | |
return __o->load(); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_load(const atomic<_Tp>* __o) noexcept | |
{ | |
return __o->load(); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_load_explicit(const volatile atomic<_Tp>* __o, memory_order __m) noexcept | |
{ | |
return __o->load(__m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_load_explicit(const atomic<_Tp>* __o, memory_order __m) noexcept | |
{ | |
return __o->load(__m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_exchange(volatile atomic<_Tp>* __o, _Tp __d) noexcept | |
{ | |
return __o->exchange(__d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_exchange(atomic<_Tp>* __o, _Tp __d) noexcept | |
{ | |
return __o->exchange(__d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_exchange_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order __m) noexcept | |
{ | |
return __o->exchange(__d, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
atomic_exchange_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m) noexcept | |
{ | |
return __o->exchange(__d, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d) noexcept | |
{ | |
return __o->compare_exchange_weak(*__e, __d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_weak(atomic<_Tp>* __o, _Tp* __e, _Tp __d) noexcept | |
{ | |
return __o->compare_exchange_weak(*__e, __d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_strong(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d) noexcept | |
{ | |
return __o->compare_exchange_strong(*__e, __d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_strong(atomic<_Tp>* __o, _Tp* __e, _Tp __d) noexcept | |
{ | |
return __o->compare_exchange_strong(*__e, __d); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_weak_explicit(volatile atomic<_Tp>* __o, _Tp* __e, | |
_Tp __d, | |
memory_order __s, memory_order __f) noexcept | |
{ | |
return __o->compare_exchange_weak(*__e, __d, __s, __f); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_weak_explicit(atomic<_Tp>* __o, _Tp* __e, _Tp __d, | |
memory_order __s, memory_order __f) noexcept | |
{ | |
return __o->compare_exchange_weak(*__e, __d, __s, __f); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_strong_explicit(volatile atomic<_Tp>* __o, | |
_Tp* __e, _Tp __d, | |
memory_order __s, memory_order __f) noexcept | |
{ | |
return __o->compare_exchange_strong(*__e, __d, __s, __f); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_compare_exchange_strong_explicit(atomic<_Tp>* __o, _Tp* __e, | |
_Tp __d, | |
memory_order __s, memory_order __f) noexcept | |
{ | |
return __o->compare_exchange_strong(*__e, __d, __s, __f); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_add(volatile atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_add(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_add(atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_add(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_add(volatile atomic<_Tp*>* __o, ptrdiff_t __op) noexcept | |
{ | |
return __o->fetch_add(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_add(atomic<_Tp*>* __o, ptrdiff_t __op) noexcept | |
{ | |
return __o->fetch_add(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_add_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_add(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_add_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_add(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_add_explicit(volatile atomic<_Tp*>* __o, ptrdiff_t __op, | |
memory_order __m) noexcept | |
{ | |
return __o->fetch_add(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_add_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_add(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_sub(volatile atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_sub(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_sub(atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_sub(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_sub(volatile atomic<_Tp*>* __o, ptrdiff_t __op) noexcept | |
{ | |
return __o->fetch_sub(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_sub(atomic<_Tp*>* __o, ptrdiff_t __op) noexcept | |
{ | |
return __o->fetch_sub(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_sub_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_sub(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_sub_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_sub(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_sub_explicit(volatile atomic<_Tp*>* __o, ptrdiff_t __op, | |
memory_order __m) noexcept | |
{ | |
return __o->fetch_sub(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
atomic_fetch_sub_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_sub(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_and(volatile atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_and(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_and(atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_and(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_and_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_and(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_and_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_and(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_or(volatile atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_or(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_or(atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_or(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_or_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_or(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_or_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_or(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_xor(volatile atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_xor(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_xor(atomic<_Tp>* __o, _Tp __op) noexcept | |
{ | |
return __o->fetch_xor(__op); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_xor_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_xor(__op, __m); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && !is_same<_Tp, bool>::value, | |
_Tp | |
>::type | |
atomic_fetch_xor_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) noexcept | |
{ | |
return __o->fetch_xor(__op, __m); | |
} | |
typedef struct atomic_flag | |
{ | |
_Atomic(bool) __a_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept | |
{return __c11_atomic_exchange(&__a_, true, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool test_and_set(memory_order __m = memory_order_seq_cst) noexcept | |
{return __c11_atomic_exchange(&__a_, true, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void clear(memory_order __m = memory_order_seq_cst) volatile noexcept | |
{__c11_atomic_store(&__a_, false, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void clear(memory_order __m = memory_order_seq_cst) noexcept | |
{__c11_atomic_store(&__a_, false, __m);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
atomic_flag() noexcept = default; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
atomic_flag(bool __b) noexcept : __a_(__b) {} | |
atomic_flag(const atomic_flag&) = delete; | |
atomic_flag& operator=(const atomic_flag&) = delete; | |
atomic_flag& operator=(const atomic_flag&) volatile = delete; | |
} atomic_flag; | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_flag_test_and_set(volatile atomic_flag* __o) noexcept | |
{ | |
return __o->test_and_set(); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_flag_test_and_set(atomic_flag* __o) noexcept | |
{ | |
return __o->test_and_set(); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_flag_test_and_set_explicit(volatile atomic_flag* __o, memory_order __m) noexcept | |
{ | |
return __o->test_and_set(__m); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_flag_test_and_set_explicit(atomic_flag* __o, memory_order __m) noexcept | |
{ | |
return __o->test_and_set(__m); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_flag_clear(volatile atomic_flag* __o) noexcept | |
{ | |
__o->clear(); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_flag_clear(atomic_flag* __o) noexcept | |
{ | |
__o->clear(); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_flag_clear_explicit(volatile atomic_flag* __o, memory_order __m) noexcept | |
{ | |
__o->clear(__m); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_flag_clear_explicit(atomic_flag* __o, memory_order __m) noexcept | |
{ | |
__o->clear(__m); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_thread_fence(memory_order __m) noexcept | |
{ | |
__c11_atomic_thread_fence(__m); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
atomic_signal_fence(memory_order __m) noexcept | |
{ | |
__c11_atomic_signal_fence(__m); | |
} | |
typedef atomic<bool> atomic_bool; | |
typedef atomic<char> atomic_char; | |
typedef atomic<signed char> atomic_schar; | |
typedef atomic<unsigned char> atomic_uchar; | |
typedef atomic<short> atomic_short; | |
typedef atomic<unsigned short> atomic_ushort; | |
typedef atomic<int> atomic_int; | |
typedef atomic<unsigned int> atomic_uint; | |
typedef atomic<long> atomic_long; | |
typedef atomic<unsigned long> atomic_ulong; | |
typedef atomic<long long> atomic_llong; | |
typedef atomic<unsigned long long> atomic_ullong; | |
typedef atomic<char16_t> atomic_char16_t; | |
typedef atomic<char32_t> atomic_char32_t; | |
typedef atomic<wchar_t> atomic_wchar_t; | |
typedef atomic<int_least8_t> atomic_int_least8_t; | |
typedef atomic<uint_least8_t> atomic_uint_least8_t; | |
typedef atomic<int_least16_t> atomic_int_least16_t; | |
typedef atomic<uint_least16_t> atomic_uint_least16_t; | |
typedef atomic<int_least32_t> atomic_int_least32_t; | |
typedef atomic<uint_least32_t> atomic_uint_least32_t; | |
typedef atomic<int_least64_t> atomic_int_least64_t; | |
typedef atomic<uint_least64_t> atomic_uint_least64_t; | |
typedef atomic<int_fast8_t> atomic_int_fast8_t; | |
typedef atomic<uint_fast8_t> atomic_uint_fast8_t; | |
typedef atomic<int_fast16_t> atomic_int_fast16_t; | |
typedef atomic<uint_fast16_t> atomic_uint_fast16_t; | |
typedef atomic<int_fast32_t> atomic_int_fast32_t; | |
typedef atomic<uint_fast32_t> atomic_uint_fast32_t; | |
typedef atomic<int_fast64_t> atomic_int_fast64_t; | |
typedef atomic<uint_fast64_t> atomic_uint_fast64_t; | |
typedef atomic<intptr_t> atomic_intptr_t; | |
typedef atomic<uintptr_t> atomic_uintptr_t; | |
typedef atomic<size_t> atomic_size_t; | |
typedef atomic<ptrdiff_t> atomic_ptrdiff_t; | |
typedef atomic<intmax_t> atomic_intmax_t; | |
typedef atomic<uintmax_t> atomic_uintmax_t; | |
# 1797 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/atomic" 3 | |
} } | |
# 617 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__undef_min_max" 1 3 | |
# 620 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__undef___deallocate" 1 3 | |
# 621 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 2 3 | |
# 624 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
namespace std {inline namespace __1 { | |
template <class _ValueType> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ValueType __libcpp_relaxed_load(_ValueType const* __value) { | |
return __atomic_load_n(__value, 0); | |
} | |
template <class _Tp> class allocator; | |
template <> | |
class __attribute__ ((__type_visibility__("default"))) allocator<void> | |
{ | |
public: | |
typedef void* pointer; | |
typedef const void* const_pointer; | |
typedef void value_type; | |
template <class _Up> struct rebind {typedef allocator<_Up> other;}; | |
}; | |
template <> | |
class __attribute__ ((__type_visibility__("default"))) allocator<const void> | |
{ | |
public: | |
typedef const void* pointer; | |
typedef const void* const_pointer; | |
typedef const void value_type; | |
template <class _Up> struct rebind {typedef allocator<_Up> other;}; | |
}; | |
template <class _Tp> | |
struct __has_element_type | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::element_type* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Ptr, bool = __has_element_type<_Ptr>::value> | |
struct __pointer_traits_element_type; | |
template <class _Ptr> | |
struct __pointer_traits_element_type<_Ptr, true> | |
{ | |
typedef typename _Ptr::element_type type; | |
}; | |
template <template <class, class...> class _Sp, class _Tp, class ..._Args> | |
struct __pointer_traits_element_type<_Sp<_Tp, _Args...>, true> | |
{ | |
typedef typename _Sp<_Tp, _Args...>::element_type type; | |
}; | |
template <template <class, class...> class _Sp, class _Tp, class ..._Args> | |
struct __pointer_traits_element_type<_Sp<_Tp, _Args...>, false> | |
{ | |
typedef _Tp type; | |
}; | |
# 756 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Tp> | |
struct __has_difference_type | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::difference_type* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Ptr, bool = __has_difference_type<_Ptr>::value> | |
struct __pointer_traits_difference_type | |
{ | |
typedef ptrdiff_t type; | |
}; | |
template <class _Ptr> | |
struct __pointer_traits_difference_type<_Ptr, true> | |
{ | |
typedef typename _Ptr::difference_type type; | |
}; | |
template <class _Tp, class _Up> | |
struct __has_rebind | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Xp> static __two __test(...); | |
template <class _Xp> static char __test(typename _Xp::template rebind<_Up>* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Tp, class _Up, bool = __has_rebind<_Tp, _Up>::value> | |
struct __pointer_traits_rebind | |
{ | |
typedef typename _Tp::template rebind<_Up> type; | |
}; | |
template <template <class, class...> class _Sp, class _Tp, class ..._Args, class _Up> | |
struct __pointer_traits_rebind<_Sp<_Tp, _Args...>, _Up, true> | |
{ | |
typedef typename _Sp<_Tp, _Args...>::template rebind<_Up> type; | |
}; | |
template <template <class, class...> class _Sp, class _Tp, class ..._Args, class _Up> | |
struct __pointer_traits_rebind<_Sp<_Tp, _Args...>, _Up, false> | |
{ | |
typedef _Sp<_Up, _Args...> type; | |
}; | |
# 890 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Ptr> | |
struct __attribute__ ((__type_visibility__("default"))) pointer_traits | |
{ | |
typedef _Ptr pointer; | |
typedef typename __pointer_traits_element_type<pointer>::type element_type; | |
typedef typename __pointer_traits_difference_type<pointer>::type difference_type; | |
template <class _Up> using rebind = typename __pointer_traits_rebind<pointer, _Up>::type; | |
private: | |
struct __nat {}; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static pointer pointer_to(typename conditional<is_void<element_type>::value, | |
__nat, element_type>::type& __r) | |
{return pointer::pointer_to(__r);} | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) pointer_traits<_Tp*> | |
{ | |
typedef _Tp* pointer; | |
typedef _Tp element_type; | |
typedef ptrdiff_t difference_type; | |
template <class _Up> using rebind = _Up*; | |
private: | |
struct __nat {}; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static pointer pointer_to(typename conditional<is_void<element_type>::value, | |
__nat, element_type>::type& __r) noexcept | |
{return std::__1::addressof(__r);} | |
}; | |
template <class _From, class _To> | |
struct __rebind_pointer { | |
typedef typename pointer_traits<_From>::template rebind<_To> type; | |
}; | |
namespace __has_pointer_type_imp | |
{ | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::pointer* = 0); | |
} | |
template <class _Tp> | |
struct __has_pointer_type | |
: public integral_constant<bool, sizeof(__has_pointer_type_imp::__test<_Tp>(0)) == 1> | |
{ | |
}; | |
namespace __pointer_type_imp | |
{ | |
template <class _Tp, class _Dp, bool = __has_pointer_type<_Dp>::value> | |
struct __pointer_type | |
{ | |
typedef typename _Dp::pointer type; | |
}; | |
template <class _Tp, class _Dp> | |
struct __pointer_type<_Tp, _Dp, false> | |
{ | |
typedef _Tp* type; | |
}; | |
} | |
template <class _Tp, class _Dp> | |
struct __pointer_type | |
{ | |
typedef typename __pointer_type_imp::__pointer_type<_Tp, typename remove_reference<_Dp>::type>::type type; | |
}; | |
template <class _Tp> | |
struct __has_const_pointer | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::const_pointer* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Tp, class _Ptr, class _Alloc, bool = __has_const_pointer<_Alloc>::value> | |
struct __const_pointer | |
{ | |
typedef typename _Alloc::const_pointer type; | |
}; | |
template <class _Tp, class _Ptr, class _Alloc> | |
struct __const_pointer<_Tp, _Ptr, _Alloc, false> | |
{ | |
typedef typename pointer_traits<_Ptr>::template rebind<const _Tp> type; | |
}; | |
template <class _Tp> | |
struct __has_void_pointer | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::void_pointer* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Ptr, class _Alloc, bool = __has_void_pointer<_Alloc>::value> | |
struct __void_pointer | |
{ | |
typedef typename _Alloc::void_pointer type; | |
}; | |
template <class _Ptr, class _Alloc> | |
struct __void_pointer<_Ptr, _Alloc, false> | |
{ | |
typedef typename pointer_traits<_Ptr>::template rebind<void> type; | |
}; | |
template <class _Tp> | |
struct __has_const_void_pointer | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::const_void_pointer* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Ptr, class _Alloc, bool = __has_const_void_pointer<_Alloc>::value> | |
struct __const_void_pointer | |
{ | |
typedef typename _Alloc::const_void_pointer type; | |
}; | |
template <class _Ptr, class _Alloc> | |
struct __const_void_pointer<_Ptr, _Alloc, false> | |
{ | |
typedef typename pointer_traits<_Ptr>::template rebind<const void> type; | |
}; | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
__to_raw_pointer(_Tp* __p) noexcept | |
{ | |
return __p; | |
} | |
template <class _Pointer> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename pointer_traits<_Pointer>::element_type* | |
__to_raw_pointer(_Pointer __p) noexcept | |
{ | |
return std::__1::__to_raw_pointer(__p.operator->()); | |
} | |
template <class _Tp> | |
struct __has_size_type | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::size_type* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Alloc, class _DiffType, bool = __has_size_type<_Alloc>::value> | |
struct __size_type | |
{ | |
typedef typename make_unsigned<_DiffType>::type type; | |
}; | |
template <class _Alloc, class _DiffType> | |
struct __size_type<_Alloc, _DiffType, true> | |
{ | |
typedef typename _Alloc::size_type type; | |
}; | |
template <class _Tp> | |
struct __has_propagate_on_container_copy_assignment | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::propagate_on_container_copy_assignment* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Alloc, bool = __has_propagate_on_container_copy_assignment<_Alloc>::value> | |
struct __propagate_on_container_copy_assignment | |
{ | |
typedef false_type type; | |
}; | |
template <class _Alloc> | |
struct __propagate_on_container_copy_assignment<_Alloc, true> | |
{ | |
typedef typename _Alloc::propagate_on_container_copy_assignment type; | |
}; | |
template <class _Tp> | |
struct __has_propagate_on_container_move_assignment | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::propagate_on_container_move_assignment* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Alloc, bool = __has_propagate_on_container_move_assignment<_Alloc>::value> | |
struct __propagate_on_container_move_assignment | |
{ | |
typedef false_type type; | |
}; | |
template <class _Alloc> | |
struct __propagate_on_container_move_assignment<_Alloc, true> | |
{ | |
typedef typename _Alloc::propagate_on_container_move_assignment type; | |
}; | |
template <class _Tp> | |
struct __has_propagate_on_container_swap | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::propagate_on_container_swap* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Alloc, bool = __has_propagate_on_container_swap<_Alloc>::value> | |
struct __propagate_on_container_swap | |
{ | |
typedef false_type type; | |
}; | |
template <class _Alloc> | |
struct __propagate_on_container_swap<_Alloc, true> | |
{ | |
typedef typename _Alloc::propagate_on_container_swap type; | |
}; | |
template <class _Tp> | |
struct __has_is_always_equal | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Up> static __two __test(...); | |
template <class _Up> static char __test(typename _Up::is_always_equal* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Alloc, bool = __has_is_always_equal<_Alloc>::value> | |
struct __is_always_equal | |
{ | |
typedef typename std::__1::is_empty<_Alloc>::type type; | |
}; | |
template <class _Alloc> | |
struct __is_always_equal<_Alloc, true> | |
{ | |
typedef typename _Alloc::is_always_equal type; | |
}; | |
template <class _Tp, class _Up, bool = __has_rebind<_Tp, _Up>::value> | |
struct __has_rebind_other | |
{ | |
private: | |
struct __two {char __lx; char __lxx;}; | |
template <class _Xp> static __two __test(...); | |
template <class _Xp> static char __test(typename _Xp::template rebind<_Up>::other* = 0); | |
public: | |
static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
}; | |
template <class _Tp, class _Up> | |
struct __has_rebind_other<_Tp, _Up, false> | |
{ | |
static const bool value = false; | |
}; | |
template <class _Tp, class _Up, bool = __has_rebind_other<_Tp, _Up>::value> | |
struct __allocator_traits_rebind | |
{ | |
typedef typename _Tp::template rebind<_Up>::other type; | |
}; | |
template <template <class, class...> class _Alloc, class _Tp, class ..._Args, class _Up> | |
struct __allocator_traits_rebind<_Alloc<_Tp, _Args...>, _Up, true> | |
{ | |
typedef typename _Alloc<_Tp, _Args...>::template rebind<_Up>::other type; | |
}; | |
template <template <class, class...> class _Alloc, class _Tp, class ..._Args, class _Up> | |
struct __allocator_traits_rebind<_Alloc<_Tp, _Args...>, _Up, false> | |
{ | |
typedef _Alloc<_Up, _Args...> type; | |
}; | |
# 1288 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Alloc, class _SizeType, class _ConstVoidPtr> | |
auto | |
__has_allocate_hint_test(_Alloc&& __a, _SizeType&& __sz, _ConstVoidPtr&& __p) | |
-> decltype(__a.allocate(__sz, __p), true_type()); | |
template <class _Alloc, class _SizeType, class _ConstVoidPtr> | |
auto | |
__has_allocate_hint_test(const _Alloc& __a, _SizeType&& __sz, _ConstVoidPtr&& __p) | |
-> false_type; | |
template <class _Alloc, class _SizeType, class _ConstVoidPtr> | |
struct __has_allocate_hint | |
: integral_constant<bool, | |
is_same< | |
decltype(__has_allocate_hint_test(declval<_Alloc>(), | |
declval<_SizeType>(), | |
declval<_ConstVoidPtr>())), | |
true_type>::value> | |
{ | |
}; | |
# 1321 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Alloc, class _Tp, class ..._Args> | |
decltype(std::__1::declval<_Alloc>().construct(std::__1::declval<_Tp*>(), | |
std::__1::declval<_Args>()...), | |
true_type()) | |
__has_construct_test(_Alloc&& __a, _Tp* __p, _Args&& ...__args); | |
template <class _Alloc, class _Pointer, class ..._Args> | |
false_type | |
__has_construct_test(const _Alloc& __a, _Pointer&& __p, _Args&& ...__args); | |
template <class _Alloc, class _Pointer, class ..._Args> | |
struct __has_construct | |
: integral_constant<bool, | |
is_same< | |
decltype(__has_construct_test(declval<_Alloc>(), | |
declval<_Pointer>(), | |
declval<_Args>()...)), | |
true_type>::value> | |
{ | |
}; | |
template <class _Alloc, class _Pointer> | |
auto | |
__has_destroy_test(_Alloc&& __a, _Pointer&& __p) | |
-> decltype(__a.destroy(__p), true_type()); | |
template <class _Alloc, class _Pointer> | |
auto | |
__has_destroy_test(const _Alloc& __a, _Pointer&& __p) | |
-> false_type; | |
template <class _Alloc, class _Pointer> | |
struct __has_destroy | |
: integral_constant<bool, | |
is_same< | |
decltype(__has_destroy_test(declval<_Alloc>(), | |
declval<_Pointer>())), | |
true_type>::value> | |
{ | |
}; | |
template <class _Alloc> | |
auto | |
__has_max_size_test(_Alloc&& __a) | |
-> decltype(__a.max_size(), true_type()); | |
template <class _Alloc> | |
auto | |
__has_max_size_test(const volatile _Alloc& __a) | |
-> false_type; | |
template <class _Alloc> | |
struct __has_max_size | |
: integral_constant<bool, | |
is_same< | |
decltype(__has_max_size_test(declval<_Alloc&>())), | |
true_type>::value> | |
{ | |
}; | |
template <class _Alloc> | |
auto | |
__has_select_on_container_copy_construction_test(_Alloc&& __a) | |
-> decltype(__a.select_on_container_copy_construction(), true_type()); | |
template <class _Alloc> | |
auto | |
__has_select_on_container_copy_construction_test(const volatile _Alloc& __a) | |
-> false_type; | |
template <class _Alloc> | |
struct __has_select_on_container_copy_construction | |
: integral_constant<bool, | |
is_same< | |
decltype(__has_select_on_container_copy_construction_test(declval<_Alloc&>())), | |
true_type>::value> | |
{ | |
}; | |
# 1440 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Alloc, class _Ptr, bool = __has_difference_type<_Alloc>::value> | |
struct __alloc_traits_difference_type | |
{ | |
typedef typename pointer_traits<_Ptr>::difference_type type; | |
}; | |
template <class _Alloc, class _Ptr> | |
struct __alloc_traits_difference_type<_Alloc, _Ptr, true> | |
{ | |
typedef typename _Alloc::difference_type type; | |
}; | |
template <class _Alloc> | |
struct __attribute__ ((__type_visibility__("default"))) allocator_traits | |
{ | |
typedef _Alloc allocator_type; | |
typedef typename allocator_type::value_type value_type; | |
typedef typename __pointer_type<value_type, allocator_type>::type pointer; | |
typedef typename __const_pointer<value_type, pointer, allocator_type>::type const_pointer; | |
typedef typename __void_pointer<pointer, allocator_type>::type void_pointer; | |
typedef typename __const_void_pointer<pointer, allocator_type>::type const_void_pointer; | |
typedef typename __alloc_traits_difference_type<allocator_type, pointer>::type difference_type; | |
typedef typename __size_type<allocator_type, difference_type>::type size_type; | |
typedef typename __propagate_on_container_copy_assignment<allocator_type>::type | |
propagate_on_container_copy_assignment; | |
typedef typename __propagate_on_container_move_assignment<allocator_type>::type | |
propagate_on_container_move_assignment; | |
typedef typename __propagate_on_container_swap<allocator_type>::type | |
propagate_on_container_swap; | |
typedef typename __is_always_equal<allocator_type>::type | |
is_always_equal; | |
template <class _Tp> using rebind_alloc = | |
typename __allocator_traits_rebind<allocator_type, _Tp>::type; | |
template <class _Tp> using rebind_traits = allocator_traits<rebind_alloc<_Tp>>; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static pointer allocate(allocator_type& __a, size_type __n) | |
{return __a.allocate(__n);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static pointer allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) | |
{return allocate(__a, __n, __hint, | |
__has_allocate_hint<allocator_type, size_type, const_void_pointer>());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void deallocate(allocator_type& __a, pointer __p, size_type __n) noexcept | |
{__a.deallocate(__p, __n);} | |
template <class _Tp, class... _Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void construct(allocator_type& __a, _Tp* __p, _Args&&... __args) | |
{__construct(__has_construct<allocator_type, _Tp*, _Args...>(), | |
__a, __p, std::__1::forward<_Args>(__args)...);} | |
# 1533 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void destroy(allocator_type& __a, _Tp* __p) | |
{__destroy(__has_destroy<allocator_type, _Tp*>(), __a, __p);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static size_type max_size(const allocator_type& __a) noexcept | |
{return __max_size(__has_max_size<const allocator_type>(), __a);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static allocator_type | |
select_on_container_copy_construction(const allocator_type& __a) | |
{return select_on_container_copy_construction( | |
__has_select_on_container_copy_construction<const allocator_type>(), | |
__a);} | |
template <class _Ptr> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static | |
void | |
__construct_forward(allocator_type& __a, _Ptr __begin1, _Ptr __end1, _Ptr& __begin2) | |
{ | |
for (; __begin1 != __end1; ++__begin1, ++__begin2) | |
construct(__a, std::__1::__to_raw_pointer(__begin2), std::__1::move_if_noexcept(*__begin1)); | |
} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static | |
typename enable_if | |
< | |
(is_same<allocator_type, allocator<_Tp> >::value | |
|| !__has_construct<allocator_type, _Tp*, _Tp>::value) && | |
is_trivially_move_constructible<_Tp>::value, | |
void | |
>::type | |
__construct_forward(allocator_type& __a, _Tp* __begin1, _Tp* __end1, _Tp*& __begin2) | |
{ | |
ptrdiff_t _Np = __end1 - __begin1; | |
if (_Np > 0) | |
{ | |
std::__1::memcpy(__begin2, __begin1, _Np * sizeof(_Tp)); | |
__begin2 += _Np; | |
} | |
} | |
template <class _Iter, class _Ptr> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static | |
void | |
__construct_range_forward(allocator_type& __a, _Iter __begin1, _Iter __end1, _Ptr& __begin2) | |
{ | |
for (; __begin1 != __end1; ++__begin1, (void) ++__begin2) | |
construct(__a, std::__1::__to_raw_pointer(__begin2), *__begin1); | |
} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static | |
typename enable_if | |
< | |
(is_same<allocator_type, allocator<_Tp> >::value | |
|| !__has_construct<allocator_type, _Tp*, _Tp>::value) && | |
is_trivially_move_constructible<_Tp>::value, | |
void | |
>::type | |
__construct_range_forward(allocator_type& __a, _Tp* __begin1, _Tp* __end1, _Tp*& __begin2) | |
{ | |
typedef typename remove_const<_Tp>::type _Vp; | |
ptrdiff_t _Np = __end1 - __begin1; | |
if (_Np > 0) | |
{ | |
std::__1::memcpy(const_cast<_Vp*>(__begin2), __begin1, _Np * sizeof(_Tp)); | |
__begin2 += _Np; | |
} | |
} | |
template <class _Ptr> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static | |
void | |
__construct_backward(allocator_type& __a, _Ptr __begin1, _Ptr __end1, _Ptr& __end2) | |
{ | |
while (__end1 != __begin1) | |
{ | |
construct(__a, std::__1::__to_raw_pointer(__end2-1), std::__1::move_if_noexcept(*--__end1)); | |
--__end2; | |
} | |
} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static | |
typename enable_if | |
< | |
(is_same<allocator_type, allocator<_Tp> >::value | |
|| !__has_construct<allocator_type, _Tp*, _Tp>::value) && | |
is_trivially_move_constructible<_Tp>::value, | |
void | |
>::type | |
__construct_backward(allocator_type& __a, _Tp* __begin1, _Tp* __end1, _Tp*& __end2) | |
{ | |
ptrdiff_t _Np = __end1 - __begin1; | |
__end2 -= _Np; | |
if (_Np > 0) | |
std::__1::memcpy(__end2, __begin1, _Np * sizeof(_Tp)); | |
} | |
private: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static pointer allocate(allocator_type& __a, size_type __n, | |
const_void_pointer __hint, true_type) | |
{return __a.allocate(__n, __hint);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static pointer allocate(allocator_type& __a, size_type __n, | |
const_void_pointer, false_type) | |
{return __a.allocate(__n);} | |
template <class _Tp, class... _Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void __construct(true_type, allocator_type& __a, _Tp* __p, _Args&&... __args) | |
{__a.construct(__p, std::__1::forward<_Args>(__args)...);} | |
template <class _Tp, class... _Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void __construct(false_type, allocator_type&, _Tp* __p, _Args&&... __args) | |
{ | |
::new ((void*)__p) _Tp(std::__1::forward<_Args>(__args)...); | |
} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void __destroy(true_type, allocator_type& __a, _Tp* __p) | |
{__a.destroy(__p);} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static void __destroy(false_type, allocator_type&, _Tp* __p) | |
{ | |
__p->~_Tp(); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static size_type __max_size(true_type, const allocator_type& __a) | |
{return __a.max_size();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static size_type __max_size(false_type, const allocator_type&) | |
{return numeric_limits<size_type>::max();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static allocator_type | |
select_on_container_copy_construction(true_type, const allocator_type& __a) | |
{return __a.select_on_container_copy_construction();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static allocator_type | |
select_on_container_copy_construction(false_type, const allocator_type& __a) | |
{return __a;} | |
}; | |
template <class _Traits, class _Tp> | |
struct __rebind_alloc_helper | |
{ | |
typedef typename _Traits::template rebind_alloc<_Tp> type; | |
}; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) 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; | |
typedef true_type propagate_on_container_move_assignment; | |
typedef true_type is_always_equal; | |
template <class _Up> struct rebind {typedef allocator<_Up> other;}; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) allocator() noexcept {} | |
template <class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) allocator(const allocator<_Up>&) noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer address(reference __x) const noexcept | |
{return std::__1::addressof(__x);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) const_pointer address(const_reference __x) const noexcept | |
{return std::__1::addressof(__x);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer allocate(size_type __n, allocator<void>::const_pointer = 0) | |
{return static_cast<pointer>(std::__1::__allocate(__n * sizeof(_Tp)));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void deallocate(pointer __p, size_type) noexcept | |
{std::__1::__deallocate((void*)__p);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) size_type max_size() const noexcept | |
{return size_type(~0) / sizeof(_Tp);} | |
template <class _Up, class... _Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
construct(_Up* __p, _Args&&... __args) | |
{ | |
::new((void*)__p) _Up(std::__1::forward<_Args>(__args)...); | |
} | |
# 1795 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void destroy(pointer __p) {__p->~_Tp();} | |
}; | |
template <class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) allocator<const _Tp> | |
{ | |
public: | |
typedef size_t size_type; | |
typedef ptrdiff_t difference_type; | |
typedef const _Tp* pointer; | |
typedef const _Tp* const_pointer; | |
typedef const _Tp& reference; | |
typedef const _Tp& const_reference; | |
typedef const _Tp value_type; | |
typedef true_type propagate_on_container_move_assignment; | |
typedef true_type is_always_equal; | |
template <class _Up> struct rebind {typedef allocator<_Up> other;}; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) allocator() noexcept {} | |
template <class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) allocator(const allocator<_Up>&) noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) const_pointer address(const_reference __x) const noexcept | |
{return std::__1::addressof(__x);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer allocate(size_type __n, allocator<void>::const_pointer = 0) | |
{return static_cast<pointer>(std::__1::__allocate(__n * sizeof(_Tp)));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void deallocate(pointer __p, size_type) noexcept | |
{std::__1::__deallocate((void*)__p);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) size_type max_size() const noexcept | |
{return size_type(~0) / sizeof(_Tp);} | |
template <class _Up, class... _Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
construct(_Up* __p, _Args&&... __args) | |
{ | |
::new((void*)__p) _Up(std::__1::forward<_Args>(__args)...); | |
} | |
# 1886 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void destroy(pointer __p) {__p->~_Tp();} | |
}; | |
template <class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const allocator<_Tp>&, const allocator<_Up>&) noexcept {return true;} | |
template <class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const allocator<_Tp>&, const allocator<_Up>&) noexcept {return false;} | |
template <class _OutputIterator, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) raw_storage_iterator | |
: public iterator<output_iterator_tag, | |
_Tp, | |
ptrdiff_t, | |
_Tp*, | |
raw_storage_iterator<_OutputIterator, _Tp>&> | |
{ | |
private: | |
_OutputIterator __x_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit raw_storage_iterator(_OutputIterator __x) : __x_(__x) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) raw_storage_iterator& operator*() {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) raw_storage_iterator& operator=(const _Tp& __element) | |
{::new(&*__x_) _Tp(__element); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) raw_storage_iterator& operator++() {++__x_; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) raw_storage_iterator operator++(int) | |
{raw_storage_iterator __t(*this); ++__x_; return __t;} | |
}; | |
template <class _Tp> | |
pair<_Tp*, ptrdiff_t> | |
get_temporary_buffer(ptrdiff_t __n) noexcept | |
{ | |
pair<_Tp*, ptrdiff_t> __r(0, 0); | |
const ptrdiff_t __m = (~ptrdiff_t(0) ^ | |
ptrdiff_t(ptrdiff_t(1) << (sizeof(ptrdiff_t) * 8 - 1))) | |
/ sizeof(_Tp); | |
if (__n > __m) | |
__n = __m; | |
while (__n > 0) | |
{ | |
__r.first = static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), nothrow)); | |
if (__r.first) | |
{ | |
__r.second = __n; | |
break; | |
} | |
__n /= 2; | |
} | |
return __r; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void return_temporary_buffer(_Tp* __p) noexcept {::operator delete(__p);} | |
template <class _Tp> | |
struct auto_ptr_ref | |
{ | |
_Tp* __ptr_; | |
}; | |
template<class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) auto_ptr | |
{ | |
private: | |
_Tp* __ptr_; | |
public: | |
typedef _Tp element_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit auto_ptr(_Tp* __p = 0) throw() : __ptr_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) auto_ptr(auto_ptr& __p) throw() : __ptr_(__p.release()) {} | |
template<class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) auto_ptr(auto_ptr<_Up>& __p) throw() | |
: __ptr_(__p.release()) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) auto_ptr& operator=(auto_ptr& __p) throw() | |
{reset(__p.release()); return *this;} | |
template<class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) auto_ptr& operator=(auto_ptr<_Up>& __p) throw() | |
{reset(__p.release()); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) auto_ptr& operator=(auto_ptr_ref<_Tp> __p) throw() | |
{reset(__p.__ptr_); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ~auto_ptr() throw() {delete __ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Tp& operator*() const throw() | |
{return *__ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Tp* operator->() const throw() {return __ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Tp* get() const throw() {return __ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Tp* release() throw() | |
{ | |
_Tp* __t = __ptr_; | |
__ptr_ = 0; | |
return __t; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void reset(_Tp* __p = 0) throw() | |
{ | |
if (__ptr_ != __p) | |
delete __ptr_; | |
__ptr_ = __p; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) auto_ptr(auto_ptr_ref<_Tp> __p) throw() : __ptr_(__p.__ptr_) {} | |
template<class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) operator auto_ptr_ref<_Up>() throw() | |
{auto_ptr_ref<_Up> __t; __t.__ptr_ = release(); return __t;} | |
template<class _Up> __attribute__ ((__visibility__("hidden"), __always_inline__)) operator auto_ptr<_Up>() throw() | |
{return auto_ptr<_Up>(release());} | |
}; | |
template <> | |
class __attribute__ ((__type_visibility__("default"))) auto_ptr<void> | |
{ | |
public: | |
typedef void element_type; | |
}; | |
template <class _T1, class _T2, bool = is_same<typename remove_cv<_T1>::type, | |
typename remove_cv<_T2>::type>::value, | |
bool = is_empty<_T1>::value | |
&& !__libcpp_is_final<_T1>::value, | |
bool = is_empty<_T2>::value | |
&& !__libcpp_is_final<_T2>::value | |
> | |
struct __libcpp_compressed_pair_switch; | |
template <class _T1, class _T2, bool IsSame> | |
struct __libcpp_compressed_pair_switch<_T1, _T2, IsSame, false, false> {enum {value = 0};}; | |
template <class _T1, class _T2, bool IsSame> | |
struct __libcpp_compressed_pair_switch<_T1, _T2, IsSame, true, false> {enum {value = 1};}; | |
template <class _T1, class _T2, bool IsSame> | |
struct __libcpp_compressed_pair_switch<_T1, _T2, IsSame, false, true> {enum {value = 2};}; | |
template <class _T1, class _T2> | |
struct __libcpp_compressed_pair_switch<_T1, _T2, false, true, true> {enum {value = 3};}; | |
template <class _T1, class _T2> | |
struct __libcpp_compressed_pair_switch<_T1, _T2, true, true, true> {enum {value = 1};}; | |
template <class _T1, class _T2, unsigned = __libcpp_compressed_pair_switch<_T1, _T2>::value> | |
class __libcpp_compressed_pair_imp; | |
template <class _T1, class _T2> | |
class __libcpp_compressed_pair_imp<_T1, _T2, 0> | |
{ | |
private: | |
_T1 __first_; | |
_T2 __second_; | |
public: | |
typedef _T1 _T1_param; | |
typedef _T2 _T2_param; | |
typedef typename remove_reference<_T1>::type& _T1_reference; | |
typedef typename remove_reference<_T2>::type& _T2_reference; | |
typedef const typename remove_reference<_T1>::type& _T1_const_reference; | |
typedef const typename remove_reference<_T2>::type& _T2_const_reference; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp() : __first_(), __second_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T1_param __t1) | |
: __first_(std::__1::forward<_T1_param>(__t1)), __second_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T2_param __t2) | |
: __first_(), __second_(std::__1::forward<_T2_param>(__t2)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp(_T1_param __t1, _T2_param __t2) | |
: __first_(std::__1::forward<_T1_param>(__t1)), __second_(std::__1::forward<_T2_param>(__t2)) {} | |
# 2095 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__libcpp_compressed_pair_imp(piecewise_construct_t __pc, | |
tuple<_Args1...> __first_args, | |
tuple<_Args2...> __second_args, | |
__tuple_indices<_I1...>, | |
__tuple_indices<_I2...>) | |
: __first_(std::__1::forward<_Args1>(std::__1::get<_I1>(__first_args))...), | |
__second_(std::__1::forward<_Args2>(std::__1::get<_I2>(__second_args))...) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_reference first() noexcept {return __first_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_const_reference first() const noexcept {return __first_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_reference second() noexcept {return __second_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_const_reference second() const noexcept {return __second_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(__libcpp_compressed_pair_imp& __x) | |
noexcept(__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value) | |
{ | |
using std::__1::swap; | |
swap(__first_, __x.__first_); | |
swap(__second_, __x.__second_); | |
} | |
}; | |
template <class _T1, class _T2> | |
class __libcpp_compressed_pair_imp<_T1, _T2, 1> | |
: private _T1 | |
{ | |
private: | |
_T2 __second_; | |
public: | |
typedef _T1 _T1_param; | |
typedef _T2 _T2_param; | |
typedef _T1& _T1_reference; | |
typedef typename remove_reference<_T2>::type& _T2_reference; | |
typedef const _T1& _T1_const_reference; | |
typedef const typename remove_reference<_T2>::type& _T2_const_reference; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp() : __second_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T1_param __t1) | |
: _T1(std::__1::forward<_T1_param>(__t1)), __second_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T2_param __t2) | |
: __second_(std::__1::forward<_T2_param>(__t2)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp(_T1_param __t1, _T2_param __t2) | |
: _T1(std::__1::forward<_T1_param>(__t1)), __second_(std::__1::forward<_T2_param>(__t2)) {} | |
# 2186 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__libcpp_compressed_pair_imp(piecewise_construct_t __pc, | |
tuple<_Args1...> __first_args, | |
tuple<_Args2...> __second_args, | |
__tuple_indices<_I1...>, | |
__tuple_indices<_I2...>) | |
: _T1(std::__1::forward<_Args1>(std::__1::get<_I1>(__first_args))...), | |
__second_(std::__1::forward<_Args2>(std::__1::get<_I2>(__second_args))...) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_reference first() noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_const_reference first() const noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_reference second() noexcept {return __second_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_const_reference second() const noexcept {return __second_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(__libcpp_compressed_pair_imp& __x) | |
noexcept(__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value) | |
{ | |
using std::__1::swap; | |
swap(__second_, __x.__second_); | |
} | |
}; | |
template <class _T1, class _T2> | |
class __libcpp_compressed_pair_imp<_T1, _T2, 2> | |
: private _T2 | |
{ | |
private: | |
_T1 __first_; | |
public: | |
typedef _T1 _T1_param; | |
typedef _T2 _T2_param; | |
typedef typename remove_reference<_T1>::type& _T1_reference; | |
typedef _T2& _T2_reference; | |
typedef const typename remove_reference<_T1>::type& _T1_const_reference; | |
typedef const _T2& _T2_const_reference; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp() : __first_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T1_param __t1) | |
: __first_(std::__1::forward<_T1_param>(__t1)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T2_param __t2) | |
: _T2(std::__1::forward<_T2_param>(__t2)), __first_() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp(_T1_param __t1, _T2_param __t2) | |
noexcept(is_nothrow_move_constructible<_T1>::value && is_nothrow_move_constructible<_T2>::value) | |
: _T2(std::__1::forward<_T2_param>(__t2)), __first_(std::__1::forward<_T1_param>(__t1)) {} | |
# 2278 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__libcpp_compressed_pair_imp(piecewise_construct_t __pc, | |
tuple<_Args1...> __first_args, | |
tuple<_Args2...> __second_args, | |
__tuple_indices<_I1...>, | |
__tuple_indices<_I2...>) | |
: _T2(std::__1::forward<_Args2>(std::__1::get<_I2>(__second_args))...), | |
__first_(std::__1::forward<_Args1>(std::__1::get<_I1>(__first_args))...) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_reference first() noexcept {return __first_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_const_reference first() const noexcept {return __first_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_reference second() noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_const_reference second() const noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(__libcpp_compressed_pair_imp& __x) | |
noexcept(__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value) | |
{ | |
using std::__1::swap; | |
swap(__first_, __x.__first_); | |
} | |
}; | |
template <class _T1, class _T2> | |
class __libcpp_compressed_pair_imp<_T1, _T2, 3> | |
: private _T1, | |
private _T2 | |
{ | |
public: | |
typedef _T1 _T1_param; | |
typedef _T2 _T2_param; | |
typedef _T1& _T1_reference; | |
typedef _T2& _T2_reference; | |
typedef const _T1& _T1_const_reference; | |
typedef const _T2& _T2_const_reference; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T1_param __t1) | |
: _T1(std::__1::forward<_T1_param>(__t1)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __libcpp_compressed_pair_imp(_T2_param __t2) | |
: _T2(std::__1::forward<_T2_param>(__t2)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __libcpp_compressed_pair_imp(_T1_param __t1, _T2_param __t2) | |
: _T1(std::__1::forward<_T1_param>(__t1)), _T2(std::__1::forward<_T2_param>(__t2)) {} | |
# 2368 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__libcpp_compressed_pair_imp(piecewise_construct_t __pc, | |
tuple<_Args1...> __first_args, | |
tuple<_Args2...> __second_args, | |
__tuple_indices<_I1...>, | |
__tuple_indices<_I2...>) | |
: _T1(std::__1::forward<_Args1>(std::__1::get<_I1>(__first_args))...), | |
_T2(std::__1::forward<_Args2>(std::__1::get<_I2>(__second_args))...) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_reference first() noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_const_reference first() const noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_reference second() noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_const_reference second() const noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(__libcpp_compressed_pair_imp&) | |
noexcept(__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value) | |
{ | |
} | |
}; | |
template <class _T1, class _T2> | |
class __compressed_pair | |
: private __libcpp_compressed_pair_imp<_T1, _T2> | |
{ | |
typedef __libcpp_compressed_pair_imp<_T1, _T2> base; | |
public: | |
typedef typename base::_T1_param _T1_param; | |
typedef typename base::_T2_param _T2_param; | |
typedef typename base::_T1_reference _T1_reference; | |
typedef typename base::_T2_reference _T2_reference; | |
typedef typename base::_T1_const_reference _T1_const_reference; | |
typedef typename base::_T2_const_reference _T2_const_reference; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __compressed_pair() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __compressed_pair(_T1_param __t1) | |
: base(std::__1::forward<_T1_param>(__t1)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __compressed_pair(_T2_param __t2) | |
: base(std::__1::forward<_T2_param>(__t2)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __compressed_pair(_T1_param __t1, _T2_param __t2) | |
: base(std::__1::forward<_T1_param>(__t1), std::__1::forward<_T2_param>(__t2)) {} | |
# 2453 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class... _Args1, class... _Args2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__compressed_pair(piecewise_construct_t __pc, tuple<_Args1...> __first_args, | |
tuple<_Args2...> __second_args) | |
: base(__pc, std::__1::move(__first_args), std::__1::move(__second_args), | |
typename __make_tuple_indices<sizeof...(_Args1)>::type(), | |
typename __make_tuple_indices<sizeof...(_Args2) >::type()) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_reference first() noexcept {return base::first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T1_const_reference first() const noexcept {return base::first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_reference second() noexcept {return base::second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _T2_const_reference second() const noexcept {return base::second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(__compressed_pair& __x) | |
noexcept(__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value) | |
{base::swap(__x);} | |
}; | |
template <class _T1, class _T2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(__compressed_pair<_T1, _T2>& __x, __compressed_pair<_T1, _T2>& __y) | |
noexcept(__is_nothrow_swappable<_T1>::value && __is_nothrow_swappable<_T2>::value) | |
{__x.swap(__y);} | |
template <class _Ptr1, class _Ptr2, | |
bool = is_same<typename remove_cv<typename pointer_traits<_Ptr1>::element_type>::type, | |
typename remove_cv<typename pointer_traits<_Ptr2>::element_type>::type | |
>::value | |
> | |
struct __same_or_less_cv_qualified_imp | |
: is_convertible<_Ptr1, _Ptr2> {}; | |
template <class _Ptr1, class _Ptr2> | |
struct __same_or_less_cv_qualified_imp<_Ptr1, _Ptr2, false> | |
: false_type {}; | |
template <class _Ptr1, class _Ptr2, bool = is_pointer<_Ptr1>::value || | |
is_same<_Ptr1, _Ptr2>::value || | |
__has_element_type<_Ptr1>::value> | |
struct __same_or_less_cv_qualified | |
: __same_or_less_cv_qualified_imp<_Ptr1, _Ptr2> {}; | |
template <class _Ptr1, class _Ptr2> | |
struct __same_or_less_cv_qualified<_Ptr1, _Ptr2, false> | |
: false_type {}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) default_delete | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr default_delete() noexcept = default; | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) default_delete(const default_delete<_Up>&, | |
typename enable_if<is_convertible<_Up*, _Tp*>::value>::type* = 0) noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void operator() (_Tp* __ptr) const noexcept | |
{ | |
static_assert(sizeof(_Tp) > 0, "default_delete can not delete incomplete type"); | |
static_assert(!is_void<_Tp>::value, "default_delete can not delete incomplete type"); | |
delete __ptr; | |
} | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) default_delete<_Tp[]> | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr default_delete() noexcept = default; | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) default_delete(const default_delete<_Up[]>&, | |
typename enable_if<__same_or_less_cv_qualified<_Up*, _Tp*>::value>::type* = 0) noexcept {} | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void operator() (_Up* __ptr, | |
typename enable_if<__same_or_less_cv_qualified<_Up*, _Tp*>::value>::type* = 0) const noexcept | |
{ | |
static_assert(sizeof(_Tp) > 0, "default_delete can not delete incomplete type"); | |
static_assert(!is_void<_Tp>::value, "default_delete can not delete incomplete type"); | |
delete [] __ptr; | |
} | |
}; | |
template <class _Tp, class _Dp = default_delete<_Tp> > | |
class __attribute__ ((__type_visibility__("default"))) unique_ptr | |
{ | |
public: | |
typedef _Tp element_type; | |
typedef _Dp deleter_type; | |
typedef typename __pointer_type<_Tp, deleter_type>::type pointer; | |
private: | |
__compressed_pair<pointer, deleter_type> __ptr_; | |
# 2571 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
struct __nat {int __for_bool_;}; | |
typedef typename remove_reference<deleter_type>::type& _Dp_reference; | |
typedef const typename remove_reference<deleter_type>::type& _Dp_const_reference; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr unique_ptr() noexcept | |
: __ptr_(pointer()) | |
{ | |
static_assert(!is_pointer<deleter_type>::value, | |
"unique_ptr constructed with null function pointer deleter"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr unique_ptr(nullptr_t) noexcept | |
: __ptr_(pointer()) | |
{ | |
static_assert(!is_pointer<deleter_type>::value, | |
"unique_ptr constructed with null function pointer deleter"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit unique_ptr(pointer __p) noexcept | |
: __ptr_(std::__1::move(__p)) | |
{ | |
static_assert(!is_pointer<deleter_type>::value, | |
"unique_ptr constructed with null function pointer deleter"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(pointer __p, typename conditional< | |
is_reference<deleter_type>::value, | |
deleter_type, | |
typename add_lvalue_reference<const deleter_type>::type>::type __d) | |
noexcept | |
: __ptr_(__p, __d) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(pointer __p, typename remove_reference<deleter_type>::type&& __d) | |
noexcept | |
: __ptr_(__p, std::__1::move(__d)) | |
{ | |
static_assert(!is_reference<deleter_type>::value, "rvalue deleter bound to reference"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(unique_ptr&& __u) noexcept | |
: __ptr_(__u.release(), std::__1::forward<deleter_type>(__u.get_deleter())) {} | |
template <class _Up, class _Ep> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unique_ptr(unique_ptr<_Up, _Ep>&& __u, | |
typename enable_if | |
< | |
!is_array<_Up>::value && | |
is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>::value && | |
is_convertible<_Ep, deleter_type>::value && | |
( | |
!is_reference<deleter_type>::value || | |
is_same<deleter_type, _Ep>::value | |
), | |
__nat | |
>::type = __nat()) noexcept | |
: __ptr_(__u.release(), std::__1::forward<_Ep>(__u.get_deleter())) {} | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(auto_ptr<_Up>&& __p, | |
typename enable_if< | |
is_convertible<_Up*, _Tp*>::value && | |
is_same<_Dp, default_delete<_Tp> >::value, | |
__nat | |
>::type = __nat()) noexcept | |
: __ptr_(__p.release()) | |
{ | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr& operator=(unique_ptr&& __u) noexcept | |
{ | |
reset(__u.release()); | |
__ptr_.second() = std::__1::forward<deleter_type>(__u.get_deleter()); | |
return *this; | |
} | |
template <class _Up, class _Ep> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
!is_array<_Up>::value && | |
is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>::value && | |
is_assignable<deleter_type&, _Ep&&>::value, | |
unique_ptr& | |
>::type | |
operator=(unique_ptr<_Up, _Ep>&& __u) noexcept | |
{ | |
reset(__u.release()); | |
__ptr_.second() = std::__1::forward<_Ep>(__u.get_deleter()); | |
return *this; | |
} | |
# 2692 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ~unique_ptr() {reset();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr& operator=(nullptr_t) noexcept | |
{ | |
reset(); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) typename add_lvalue_reference<_Tp>::type operator*() const | |
{return *__ptr_.first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer operator->() const noexcept {return __ptr_.first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer get() const noexcept {return __ptr_.first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Dp_reference get_deleter() noexcept | |
{return __ptr_.second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Dp_const_reference get_deleter() const noexcept | |
{return __ptr_.second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit operator bool() const noexcept | |
{return __ptr_.first() != nullptr;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer release() noexcept | |
{ | |
pointer __t = __ptr_.first(); | |
__ptr_.first() = pointer(); | |
return __t; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void reset(pointer __p = pointer()) noexcept | |
{ | |
pointer __tmp = __ptr_.first(); | |
__ptr_.first() = __p; | |
if (__tmp) | |
__ptr_.second()(__tmp); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(unique_ptr& __u) noexcept | |
{__ptr_.swap(__u.__ptr_);} | |
}; | |
template <class _Tp, class _Dp> | |
class __attribute__ ((__type_visibility__("default"))) unique_ptr<_Tp[], _Dp> | |
{ | |
public: | |
typedef _Tp element_type; | |
typedef _Dp deleter_type; | |
typedef typename __pointer_type<_Tp, deleter_type>::type pointer; | |
private: | |
__compressed_pair<pointer, deleter_type> __ptr_; | |
# 2750 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
struct __nat {int __for_bool_;}; | |
typedef typename remove_reference<deleter_type>::type& _Dp_reference; | |
typedef const typename remove_reference<deleter_type>::type& _Dp_const_reference; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr unique_ptr() noexcept | |
: __ptr_(pointer()) | |
{ | |
static_assert(!is_pointer<deleter_type>::value, | |
"unique_ptr constructed with null function pointer deleter"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr unique_ptr(nullptr_t) noexcept | |
: __ptr_(pointer()) | |
{ | |
static_assert(!is_pointer<deleter_type>::value, | |
"unique_ptr constructed with null function pointer deleter"); | |
} | |
template <class _Pp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit unique_ptr(_Pp __p, | |
typename enable_if<__same_or_less_cv_qualified<_Pp, pointer>::value, __nat>::type = __nat()) noexcept | |
: __ptr_(__p) | |
{ | |
static_assert(!is_pointer<deleter_type>::value, | |
"unique_ptr constructed with null function pointer deleter"); | |
} | |
template <class _Pp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(_Pp __p, typename conditional< | |
is_reference<deleter_type>::value, | |
deleter_type, | |
typename add_lvalue_reference<const deleter_type>::type>::type __d, | |
typename enable_if<__same_or_less_cv_qualified<_Pp, pointer>::value, __nat>::type = __nat()) | |
noexcept | |
: __ptr_(__p, __d) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(nullptr_t, typename conditional< | |
is_reference<deleter_type>::value, | |
deleter_type, | |
typename add_lvalue_reference<const deleter_type>::type>::type __d) | |
noexcept | |
: __ptr_(pointer(), __d) {} | |
template <class _Pp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(_Pp __p, | |
typename remove_reference<deleter_type>::type&& __d, | |
typename enable_if<__same_or_less_cv_qualified<_Pp, pointer>::value, __nat>::type = __nat()) | |
noexcept | |
: __ptr_(__p, std::__1::move(__d)) | |
{ | |
static_assert(!is_reference<deleter_type>::value, "rvalue deleter bound to reference"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(nullptr_t, typename remove_reference<deleter_type>::type&& __d) | |
noexcept | |
: __ptr_(pointer(), std::__1::move(__d)) | |
{ | |
static_assert(!is_reference<deleter_type>::value, "rvalue deleter bound to reference"); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr(unique_ptr&& __u) noexcept | |
: __ptr_(__u.release(), std::__1::forward<deleter_type>(__u.get_deleter())) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr& operator=(unique_ptr&& __u) noexcept | |
{ | |
reset(__u.release()); | |
__ptr_.second() = std::__1::forward<deleter_type>(__u.get_deleter()); | |
return *this; | |
} | |
template <class _Up, class _Ep> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unique_ptr(unique_ptr<_Up, _Ep>&& __u, | |
typename enable_if | |
< | |
is_array<_Up>::value && | |
__same_or_less_cv_qualified<typename unique_ptr<_Up, _Ep>::pointer, pointer>::value | |
&& is_convertible<_Ep, deleter_type>::value && | |
( | |
!is_reference<deleter_type>::value || | |
is_same<deleter_type, _Ep>::value | |
), | |
__nat | |
>::type = __nat() | |
) noexcept | |
: __ptr_(__u.release(), std::__1::forward<deleter_type>(__u.get_deleter())) {} | |
template <class _Up, class _Ep> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_array<_Up>::value && | |
__same_or_less_cv_qualified<typename unique_ptr<_Up, _Ep>::pointer, pointer>::value && | |
is_assignable<deleter_type&, _Ep&&>::value, | |
unique_ptr& | |
>::type | |
operator=(unique_ptr<_Up, _Ep>&& __u) noexcept | |
{ | |
reset(__u.release()); | |
__ptr_.second() = std::__1::forward<_Ep>(__u.get_deleter()); | |
return *this; | |
} | |
# 2884 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) ~unique_ptr() {reset();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) unique_ptr& operator=(nullptr_t) noexcept | |
{ | |
reset(); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) typename add_lvalue_reference<_Tp>::type operator[](size_t __i) const | |
{return __ptr_.first()[__i];} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer get() const noexcept {return __ptr_.first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Dp_reference get_deleter() noexcept | |
{return __ptr_.second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Dp_const_reference get_deleter() const noexcept | |
{return __ptr_.second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit operator bool() const noexcept | |
{return __ptr_.first() != nullptr;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer release() noexcept | |
{ | |
pointer __t = __ptr_.first(); | |
__ptr_.first() = pointer(); | |
return __t; | |
} | |
template <class _Pp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if<__same_or_less_cv_qualified<_Pp, pointer>::value, void>::type | |
reset(_Pp __p) noexcept | |
{ | |
pointer __tmp = __ptr_.first(); | |
__ptr_.first() = __p; | |
if (__tmp) | |
__ptr_.second()(__tmp); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void reset(nullptr_t) noexcept | |
{ | |
pointer __tmp = __ptr_.first(); | |
__ptr_.first() = nullptr; | |
if (__tmp) | |
__ptr_.second()(__tmp); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void reset() noexcept | |
{ | |
pointer __tmp = __ptr_.first(); | |
__ptr_.first() = nullptr; | |
if (__tmp) | |
__ptr_.second()(__tmp); | |
} | |
# 2945 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void swap(unique_ptr& __u) {__ptr_.swap(__u.__ptr_);} | |
private: | |
# 2963 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
}; | |
template <class _Tp, class _Dp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(unique_ptr<_Tp, _Dp>& __x, unique_ptr<_Tp, _Dp>& __y) noexcept {__x.swap(__y);} | |
template <class _T1, class _D1, class _T2, class _D2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return __x.get() == __y.get();} | |
template <class _T1, class _D1, class _T2, class _D2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__x == __y);} | |
template <class _T1, class _D1, class _T2, class _D2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator< (const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) | |
{ | |
typedef typename unique_ptr<_T1, _D1>::pointer _P1; | |
typedef typename unique_ptr<_T2, _D2>::pointer _P2; | |
typedef typename common_type<_P1, _P2>::type _Vp; | |
return less<_Vp>()(__x.get(), __y.get()); | |
} | |
template <class _T1, class _D1, class _T2, class _D2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator> (const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return __y < __x;} | |
template <class _T1, class _D1, class _T2, class _D2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__y < __x);} | |
template <class _T1, class _D1, class _T2, class _D2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__x < __y);} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const unique_ptr<_T1, _D1>& __x, nullptr_t) noexcept | |
{ | |
return !__x; | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(nullptr_t, const unique_ptr<_T1, _D1>& __x) noexcept | |
{ | |
return !__x; | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const unique_ptr<_T1, _D1>& __x, nullptr_t) noexcept | |
{ | |
return static_cast<bool>(__x); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(nullptr_t, const unique_ptr<_T1, _D1>& __x) noexcept | |
{ | |
return static_cast<bool>(__x); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const unique_ptr<_T1, _D1>& __x, nullptr_t) | |
{ | |
typedef typename unique_ptr<_T1, _D1>::pointer _P1; | |
return less<_P1>()(__x.get(), nullptr); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(nullptr_t, const unique_ptr<_T1, _D1>& __x) | |
{ | |
typedef typename unique_ptr<_T1, _D1>::pointer _P1; | |
return less<_P1>()(nullptr, __x.get()); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const unique_ptr<_T1, _D1>& __x, nullptr_t) | |
{ | |
return nullptr < __x; | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(nullptr_t, const unique_ptr<_T1, _D1>& __x) | |
{ | |
return __x < nullptr; | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const unique_ptr<_T1, _D1>& __x, nullptr_t) | |
{ | |
return !(nullptr < __x); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(nullptr_t, const unique_ptr<_T1, _D1>& __x) | |
{ | |
return !(__x < nullptr); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const unique_ptr<_T1, _D1>& __x, nullptr_t) | |
{ | |
return !(__x < nullptr); | |
} | |
template <class _T1, class _D1> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(nullptr_t, const unique_ptr<_T1, _D1>& __x) | |
{ | |
return !(nullptr < __x); | |
} | |
# 3159 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Tp> struct hash; | |
template <class _Size> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Size | |
__loadword(const void* __p) | |
{ | |
_Size __r; | |
std::memcpy(&__r, __p, sizeof(__r)); | |
return __r; | |
} | |
template <class _Size, size_t = sizeof(_Size)*8> | |
struct __murmur2_or_cityhash; | |
template <class _Size> | |
struct __murmur2_or_cityhash<_Size, 32> | |
{ | |
_Size operator()(const void* __key, _Size __len); | |
}; | |
template <class _Size> | |
_Size | |
__murmur2_or_cityhash<_Size, 32>::operator()(const void* __key, _Size __len) | |
{ | |
const _Size __m = 0x5bd1e995; | |
const _Size __r = 24; | |
_Size __h = __len; | |
const unsigned char* __data = static_cast<const unsigned char*>(__key); | |
for (; __len >= 4; __data += 4, __len -= 4) | |
{ | |
_Size __k = __loadword<_Size>(__data); | |
__k *= __m; | |
__k ^= __k >> __r; | |
__k *= __m; | |
__h *= __m; | |
__h ^= __k; | |
} | |
switch (__len) | |
{ | |
case 3: | |
__h ^= __data[2] << 16; | |
case 2: | |
__h ^= __data[1] << 8; | |
case 1: | |
__h ^= __data[0]; | |
__h *= __m; | |
} | |
__h ^= __h >> 13; | |
__h *= __m; | |
__h ^= __h >> 15; | |
return __h; | |
} | |
template <class _Size> | |
struct __murmur2_or_cityhash<_Size, 64> | |
{ | |
_Size operator()(const void* __key, _Size __len); | |
private: | |
static const _Size __k0 = 0xc3a5c85c97cb3127ULL; | |
static const _Size __k1 = 0xb492b66fbe98f273ULL; | |
static const _Size __k2 = 0x9ae16a3b2f90404fULL; | |
static const _Size __k3 = 0xc949d7c7509e6557ULL; | |
static _Size __rotate(_Size __val, int __shift) { | |
return __shift == 0 ? __val : ((__val >> __shift) | (__val << (64 - __shift))); | |
} | |
static _Size __rotate_by_at_least_1(_Size __val, int __shift) { | |
return (__val >> __shift) | (__val << (64 - __shift)); | |
} | |
static _Size __shift_mix(_Size __val) { | |
return __val ^ (__val >> 47); | |
} | |
static _Size __hash_len_16(_Size __u, _Size __v) { | |
const _Size __mul = 0x9ddfea08eb382d69ULL; | |
_Size __a = (__u ^ __v) * __mul; | |
__a ^= (__a >> 47); | |
_Size __b = (__v ^ __a) * __mul; | |
__b ^= (__b >> 47); | |
__b *= __mul; | |
return __b; | |
} | |
static _Size __hash_len_0_to_16(const char* __s, _Size __len) { | |
if (__len > 8) { | |
const _Size __a = __loadword<_Size>(__s); | |
const _Size __b = __loadword<_Size>(__s + __len - 8); | |
return __hash_len_16(__a, __rotate_by_at_least_1(__b + __len, __len)) ^ __b; | |
} | |
if (__len >= 4) { | |
const uint32_t __a = __loadword<uint32_t>(__s); | |
const uint32_t __b = __loadword<uint32_t>(__s + __len - 4); | |
return __hash_len_16(__len + (__a << 3), __b); | |
} | |
if (__len > 0) { | |
const unsigned char __a = __s[0]; | |
const unsigned char __b = __s[__len >> 1]; | |
const unsigned char __c = __s[__len - 1]; | |
const uint32_t __y = static_cast<uint32_t>(__a) + | |
(static_cast<uint32_t>(__b) << 8); | |
const uint32_t __z = __len + (static_cast<uint32_t>(__c) << 2); | |
return __shift_mix(__y * __k2 ^ __z * __k3) * __k2; | |
} | |
return __k2; | |
} | |
static _Size __hash_len_17_to_32(const char *__s, _Size __len) { | |
const _Size __a = __loadword<_Size>(__s) * __k1; | |
const _Size __b = __loadword<_Size>(__s + 8); | |
const _Size __c = __loadword<_Size>(__s + __len - 8) * __k2; | |
const _Size __d = __loadword<_Size>(__s + __len - 16) * __k0; | |
return __hash_len_16(__rotate(__a - __b, 43) + __rotate(__c, 30) + __d, | |
__a + __rotate(__b ^ __k3, 20) - __c + __len); | |
} | |
static pair<_Size, _Size> __weak_hash_len_32_with_seeds( | |
_Size __w, _Size __x, _Size __y, _Size __z, _Size __a, _Size __b) { | |
__a += __w; | |
__b = __rotate(__b + __a + __z, 21); | |
const _Size __c = __a; | |
__a += __x; | |
__a += __y; | |
__b += __rotate(__a, 44); | |
return pair<_Size, _Size>(__a + __z, __b + __c); | |
} | |
static pair<_Size, _Size> __weak_hash_len_32_with_seeds( | |
const char* __s, _Size __a, _Size __b) { | |
return __weak_hash_len_32_with_seeds(__loadword<_Size>(__s), | |
__loadword<_Size>(__s + 8), | |
__loadword<_Size>(__s + 16), | |
__loadword<_Size>(__s + 24), | |
__a, | |
__b); | |
} | |
static _Size __hash_len_33_to_64(const char *__s, size_t __len) { | |
_Size __z = __loadword<_Size>(__s + 24); | |
_Size __a = __loadword<_Size>(__s) + | |
(__len + __loadword<_Size>(__s + __len - 16)) * __k0; | |
_Size __b = __rotate(__a + __z, 52); | |
_Size __c = __rotate(__a, 37); | |
__a += __loadword<_Size>(__s + 8); | |
__c += __rotate(__a, 7); | |
__a += __loadword<_Size>(__s + 16); | |
_Size __vf = __a + __z; | |
_Size __vs = __b + __rotate(__a, 31) + __c; | |
__a = __loadword<_Size>(__s + 16) + __loadword<_Size>(__s + __len - 32); | |
__z += __loadword<_Size>(__s + __len - 8); | |
__b = __rotate(__a + __z, 52); | |
__c = __rotate(__a, 37); | |
__a += __loadword<_Size>(__s + __len - 24); | |
__c += __rotate(__a, 7); | |
__a += __loadword<_Size>(__s + __len - 16); | |
_Size __wf = __a + __z; | |
_Size __ws = __b + __rotate(__a, 31) + __c; | |
_Size __r = __shift_mix((__vf + __ws) * __k2 + (__wf + __vs) * __k0); | |
return __shift_mix(__r * __k0 + __vs) * __k2; | |
} | |
}; | |
template <class _Size> | |
_Size | |
__murmur2_or_cityhash<_Size, 64>::operator()(const void* __key, _Size __len) | |
{ | |
const char* __s = static_cast<const char*>(__key); | |
if (__len <= 32) { | |
if (__len <= 16) { | |
return __hash_len_0_to_16(__s, __len); | |
} else { | |
return __hash_len_17_to_32(__s, __len); | |
} | |
} else if (__len <= 64) { | |
return __hash_len_33_to_64(__s, __len); | |
} | |
_Size __x = __loadword<_Size>(__s + __len - 40); | |
_Size __y = __loadword<_Size>(__s + __len - 16) + | |
__loadword<_Size>(__s + __len - 56); | |
_Size __z = __hash_len_16(__loadword<_Size>(__s + __len - 48) + __len, | |
__loadword<_Size>(__s + __len - 24)); | |
pair<_Size, _Size> __v = __weak_hash_len_32_with_seeds(__s + __len - 64, __len, __z); | |
pair<_Size, _Size> __w = __weak_hash_len_32_with_seeds(__s + __len - 32, __y + __k1, __x); | |
__x = __x * __k1 + __loadword<_Size>(__s); | |
__len = (__len - 1) & ~static_cast<_Size>(63); | |
do { | |
__x = __rotate(__x + __y + __v.first + __loadword<_Size>(__s + 8), 37) * __k1; | |
__y = __rotate(__y + __v.second + __loadword<_Size>(__s + 48), 42) * __k1; | |
__x ^= __w.second; | |
__y += __v.first + __loadword<_Size>(__s + 40); | |
__z = __rotate(__z + __w.first, 33) * __k1; | |
__v = __weak_hash_len_32_with_seeds(__s, __v.second * __k1, __x + __w.first); | |
__w = __weak_hash_len_32_with_seeds(__s + 32, __z + __w.second, | |
__y + __loadword<_Size>(__s + 16)); | |
std::swap(__z, __x); | |
__s += 64; | |
__len -= 64; | |
} while (__len != 0); | |
return __hash_len_16( | |
__hash_len_16(__v.first, __w.first) + __shift_mix(__y) * __k1 + __z, | |
__hash_len_16(__v.second, __w.second) + __x); | |
} | |
template <class _Tp, size_t = sizeof(_Tp) / sizeof(size_t)> | |
struct __scalar_hash; | |
template <class _Tp> | |
struct __scalar_hash<_Tp, 0> | |
: public unary_function<_Tp, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(_Tp __v) const noexcept | |
{ | |
union | |
{ | |
_Tp __t; | |
size_t __a; | |
} __u; | |
__u.__a = 0; | |
__u.__t = __v; | |
return __u.__a; | |
} | |
}; | |
template <class _Tp> | |
struct __scalar_hash<_Tp, 1> | |
: public unary_function<_Tp, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(_Tp __v) const noexcept | |
{ | |
union | |
{ | |
_Tp __t; | |
size_t __a; | |
} __u; | |
__u.__t = __v; | |
return __u.__a; | |
} | |
}; | |
template <class _Tp> | |
struct __scalar_hash<_Tp, 2> | |
: public unary_function<_Tp, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(_Tp __v) const noexcept | |
{ | |
union | |
{ | |
_Tp __t; | |
struct | |
{ | |
size_t __a; | |
size_t __b; | |
} __s; | |
} __u; | |
__u.__t = __v; | |
return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
} | |
}; | |
template <class _Tp> | |
struct __scalar_hash<_Tp, 3> | |
: public unary_function<_Tp, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(_Tp __v) const noexcept | |
{ | |
union | |
{ | |
_Tp __t; | |
struct | |
{ | |
size_t __a; | |
size_t __b; | |
size_t __c; | |
} __s; | |
} __u; | |
__u.__t = __v; | |
return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
} | |
}; | |
template <class _Tp> | |
struct __scalar_hash<_Tp, 4> | |
: public unary_function<_Tp, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(_Tp __v) const noexcept | |
{ | |
union | |
{ | |
_Tp __t; | |
struct | |
{ | |
size_t __a; | |
size_t __b; | |
size_t __c; | |
size_t __d; | |
} __s; | |
} __u; | |
__u.__t = __v; | |
return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
} | |
}; | |
template<class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) hash<_Tp*> | |
: public unary_function<_Tp*, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(_Tp* __v) const noexcept | |
{ | |
union | |
{ | |
_Tp* __t; | |
size_t __a; | |
} __u; | |
__u.__t = __v; | |
return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
} | |
}; | |
template <class _Tp, class _Dp> | |
struct __attribute__ ((__type_visibility__("default"))) hash<unique_ptr<_Tp, _Dp> > | |
{ | |
typedef unique_ptr<_Tp, _Dp> argument_type; | |
typedef size_t result_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
result_type operator()(const argument_type& __ptr) const noexcept | |
{ | |
typedef typename argument_type::pointer pointer; | |
return hash<pointer>()(__ptr.get()); | |
} | |
}; | |
struct __destruct_n | |
{ | |
private: | |
size_t size; | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __process(_Tp* __p, false_type) noexcept | |
{for (size_t __i = 0; __i < size; ++__i, ++__p) __p->~_Tp();} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __process(_Tp*, true_type) noexcept | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __incr(false_type) noexcept | |
{++size;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __incr(true_type) noexcept | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __set(size_t __s, false_type) noexcept | |
{size = __s;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __set(size_t, true_type) noexcept | |
{} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit __destruct_n(size_t __s) noexcept | |
: size(__s) {} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __incr(_Tp*) noexcept | |
{__incr(integral_constant<bool, is_trivially_destructible<_Tp>::value>());} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void __set(size_t __s, _Tp*) noexcept | |
{__set(__s, integral_constant<bool, is_trivially_destructible<_Tp>::value>());} | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void operator()(_Tp* __p) noexcept | |
{__process(__p, integral_constant<bool, is_trivially_destructible<_Tp>::value>());} | |
}; | |
template <class _Alloc> | |
class __allocator_destructor | |
{ | |
typedef allocator_traits<_Alloc> __alloc_traits; | |
public: | |
typedef typename __alloc_traits::pointer pointer; | |
typedef typename __alloc_traits::size_type size_type; | |
private: | |
_Alloc& __alloc_; | |
size_type __s_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __allocator_destructor(_Alloc& __a, size_type __s) | |
noexcept | |
: __alloc_(__a), __s_(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void operator()(pointer __p) noexcept | |
{__alloc_traits::deallocate(__alloc_, __p, __s_);} | |
}; | |
template <class _InputIterator, class _ForwardIterator> | |
_ForwardIterator | |
uninitialized_copy(_InputIterator __f, _InputIterator __l, _ForwardIterator __r) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
for (; __f != __l; ++__f, (void) ++__r) | |
::new (static_cast<void*>(std::__1::addressof(*__r))) value_type(*__f); | |
# 3593 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
return __r; | |
} | |
template <class _InputIterator, class _Size, class _ForwardIterator> | |
_ForwardIterator | |
uninitialized_copy_n(_InputIterator __f, _Size __n, _ForwardIterator __r) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
for (; __n > 0; ++__f, (void) ++__r, (void) --__n) | |
::new (static_cast<void*>(std::__1::addressof(*__r))) value_type(*__f); | |
# 3617 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
return __r; | |
} | |
template <class _ForwardIterator, class _Tp> | |
void | |
uninitialized_fill(_ForwardIterator __f, _ForwardIterator __l, const _Tp& __x) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
for (; __f != __l; ++__f) | |
::new (static_cast<void*>(std::__1::addressof(*__f))) value_type(__x); | |
# 3641 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
} | |
template <class _ForwardIterator, class _Size, class _Tp> | |
_ForwardIterator | |
uninitialized_fill_n(_ForwardIterator __f, _Size __n, const _Tp& __x) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
for (; __n > 0; ++__f, (void) --__n) | |
::new (static_cast<void*>(std::__1::addressof(*__f))) value_type(__x); | |
# 3664 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
return __f; | |
} | |
class __attribute__ ((__visibility__("default"))) bad_weak_ptr | |
: public std::exception | |
{ | |
public: | |
virtual ~bad_weak_ptr() noexcept; | |
virtual const char* what() const noexcept; | |
}; | |
template<class _Tp> class __attribute__ ((__type_visibility__("default"))) weak_ptr; | |
class __attribute__ ((__type_visibility__("default"))) __shared_count | |
{ | |
__shared_count(const __shared_count&); | |
__shared_count& operator=(const __shared_count&); | |
protected: | |
long __shared_owners_; | |
virtual ~__shared_count(); | |
private: | |
virtual void __on_zero_shared() noexcept = 0; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __shared_count(long __refs = 0) noexcept | |
: __shared_owners_(__refs) {} | |
void __add_shared() noexcept; | |
bool __release_shared() noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
long use_count() const noexcept { | |
return __libcpp_relaxed_load(&__shared_owners_) + 1; | |
} | |
}; | |
class __attribute__ ((__type_visibility__("default"))) __shared_weak_count | |
: private __shared_count | |
{ | |
long __shared_weak_owners_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __shared_weak_count(long __refs = 0) noexcept | |
: __shared_count(__refs), | |
__shared_weak_owners_(__refs) {} | |
protected: | |
virtual ~__shared_weak_count(); | |
public: | |
void __add_shared() noexcept; | |
void __add_weak() noexcept; | |
void __release_shared() noexcept; | |
void __release_weak() noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
long use_count() const noexcept {return __shared_count::use_count();} | |
__shared_weak_count* lock() noexcept; | |
virtual const void* __get_deleter(const type_info&) const noexcept; | |
private: | |
virtual void __on_zero_shared_weak() noexcept = 0; | |
}; | |
template <class _Tp, class _Dp, class _Alloc> | |
class __shared_ptr_pointer | |
: public __shared_weak_count | |
{ | |
__compressed_pair<__compressed_pair<_Tp, _Dp>, _Alloc> __data_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__shared_ptr_pointer(_Tp __p, _Dp __d, _Alloc __a) | |
: __data_(__compressed_pair<_Tp, _Dp>(__p, std::__1::move(__d)), std::__1::move(__a)) {} | |
virtual const void* __get_deleter(const type_info&) const noexcept; | |
private: | |
virtual void __on_zero_shared() noexcept; | |
virtual void __on_zero_shared_weak() noexcept; | |
}; | |
template <class _Tp, class _Dp, class _Alloc> | |
const void* | |
__shared_ptr_pointer<_Tp, _Dp, _Alloc>::__get_deleter(const type_info& __t) const noexcept | |
{ | |
return __t == typeid(_Dp) ? std::__1::addressof(__data_.first().second()) : 0; | |
} | |
template <class _Tp, class _Dp, class _Alloc> | |
void | |
__shared_ptr_pointer<_Tp, _Dp, _Alloc>::__on_zero_shared() noexcept | |
{ | |
__data_.first().second()(__data_.first().first()); | |
__data_.first().second().~_Dp(); | |
} | |
template <class _Tp, class _Dp, class _Alloc> | |
void | |
__shared_ptr_pointer<_Tp, _Dp, _Alloc>::__on_zero_shared_weak() noexcept | |
{ | |
typedef typename __allocator_traits_rebind<_Alloc, __shared_ptr_pointer>::type _Al; | |
typedef allocator_traits<_Al> _ATraits; | |
typedef pointer_traits<typename _ATraits::pointer> _PTraits; | |
_Al __a(__data_.second()); | |
__data_.second().~_Alloc(); | |
__a.deallocate(_PTraits::pointer_to(*this), 1); | |
} | |
template <class _Tp, class _Alloc> | |
class __shared_ptr_emplace | |
: public __shared_weak_count | |
{ | |
__compressed_pair<_Alloc, _Tp> __data_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__shared_ptr_emplace(_Alloc __a) | |
: __data_(std::__1::move(__a)) {} | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__shared_ptr_emplace(_Alloc __a, _Args&& ...__args) | |
: __data_(piecewise_construct, std::__1::forward_as_tuple(__a), | |
std::__1::forward_as_tuple(std::__1::forward<_Args>(__args)...)) {} | |
# 3826 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
private: | |
virtual void __on_zero_shared() noexcept; | |
virtual void __on_zero_shared_weak() noexcept; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* get() noexcept {return &__data_.second();} | |
}; | |
template <class _Tp, class _Alloc> | |
void | |
__shared_ptr_emplace<_Tp, _Alloc>::__on_zero_shared() noexcept | |
{ | |
__data_.second().~_Tp(); | |
} | |
template <class _Tp, class _Alloc> | |
void | |
__shared_ptr_emplace<_Tp, _Alloc>::__on_zero_shared_weak() noexcept | |
{ | |
typedef typename __allocator_traits_rebind<_Alloc, __shared_ptr_emplace>::type _Al; | |
typedef allocator_traits<_Al> _ATraits; | |
typedef pointer_traits<typename _ATraits::pointer> _PTraits; | |
_Al __a(__data_.first()); | |
__data_.first().~_Alloc(); | |
__a.deallocate(_PTraits::pointer_to(*this), 1); | |
} | |
template<class _Tp> class __attribute__ ((__type_visibility__("default"))) enable_shared_from_this; | |
template<class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) shared_ptr | |
{ | |
public: | |
typedef _Tp element_type; | |
private: | |
element_type* __ptr_; | |
__shared_weak_count* __cntrl_; | |
struct __nat {int __for_bool_;}; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr shared_ptr() noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr shared_ptr(nullptr_t) noexcept; | |
template<class _Yp> | |
explicit shared_ptr(_Yp* __p, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat()); | |
template<class _Yp, class _Dp> | |
shared_ptr(_Yp* __p, _Dp __d, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat()); | |
template<class _Yp, class _Dp, class _Alloc> | |
shared_ptr(_Yp* __p, _Dp __d, _Alloc __a, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat()); | |
template <class _Dp> shared_ptr(nullptr_t __p, _Dp __d); | |
template <class _Dp, class _Alloc> shared_ptr(nullptr_t __p, _Dp __d, _Alloc __a); | |
template<class _Yp> __attribute__ ((__visibility__("hidden"), __always_inline__)) shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr(const shared_ptr& __r) noexcept; | |
template<class _Yp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr(const shared_ptr<_Yp>& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type = __nat()) | |
noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr(shared_ptr&& __r) noexcept; | |
template<class _Yp> __attribute__ ((__visibility__("hidden"), __always_inline__)) shared_ptr(shared_ptr<_Yp>&& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type = __nat()) | |
noexcept; | |
template<class _Yp> explicit shared_ptr(const weak_ptr<_Yp>& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type= __nat()); | |
template<class _Yp> | |
shared_ptr(auto_ptr<_Yp>&& __r, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat()); | |
template <class _Yp, class _Dp> | |
shared_ptr(unique_ptr<_Yp, _Dp>&&, | |
typename enable_if | |
< | |
!is_lvalue_reference<_Dp>::value && | |
!is_array<_Yp>::value && | |
is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value, | |
__nat | |
>::type = __nat()); | |
template <class _Yp, class _Dp> | |
shared_ptr(unique_ptr<_Yp, _Dp>&&, | |
typename enable_if | |
< | |
is_lvalue_reference<_Dp>::value && | |
!is_array<_Yp>::value && | |
is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value, | |
__nat | |
>::type = __nat()); | |
# 3947 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
~shared_ptr(); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr& operator=(const shared_ptr& __r) noexcept; | |
template<class _Yp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
shared_ptr& | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(const shared_ptr<_Yp>& __r) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr& operator=(shared_ptr&& __r) noexcept; | |
template<class _Yp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
shared_ptr<_Tp>& | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(shared_ptr<_Yp>&& __r); | |
template<class _Yp> | |
typename enable_if | |
< | |
!is_array<_Yp>::value && | |
is_convertible<_Yp*, element_type*>::value, | |
shared_ptr | |
>::type& | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(auto_ptr<_Yp>&& __r); | |
# 3989 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template <class _Yp, class _Dp> | |
typename enable_if | |
< | |
!is_array<_Yp>::value && | |
is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value, | |
shared_ptr& | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(unique_ptr<_Yp, _Dp>&& __r); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(shared_ptr& __r) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void reset() noexcept; | |
template<class _Yp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
void | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reset(_Yp* __p); | |
template<class _Yp, class _Dp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
void | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reset(_Yp* __p, _Dp __d); | |
template<class _Yp, class _Dp, class _Alloc> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
void | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reset(_Yp* __p, _Dp __d, _Alloc __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
element_type* get() const noexcept {return __ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename add_lvalue_reference<element_type>::type operator*() const noexcept | |
{return *__ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
element_type* operator->() const noexcept {return __ptr_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
long use_count() const noexcept {return __cntrl_ ? __cntrl_->use_count() : 0;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool unique() const noexcept {return use_count() == 1;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit operator bool() const noexcept {return get() != 0;} | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool owner_before(shared_ptr<_Up> const& __p) const | |
{return __cntrl_ < __p.__cntrl_;} | |
template <class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool owner_before(weak_ptr<_Up> const& __p) const | |
{return __cntrl_ < __p.__cntrl_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
__owner_equivalent(const shared_ptr& __p) const | |
{return __cntrl_ == __p.__cntrl_;} | |
template <class _Dp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Dp* __get_deleter() const noexcept | |
{return (_Dp*)(__cntrl_ ? __cntrl_->__get_deleter(typeid(_Dp)) : 0);} | |
template<class ..._Args> | |
static | |
shared_ptr<_Tp> | |
make_shared(_Args&& ...__args); | |
template<class _Alloc, class ..._Args> | |
static | |
shared_ptr<_Tp> | |
allocate_shared(const _Alloc& __a, _Args&& ...__args); | |
# 4108 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
private: | |
template <class _Yp, class _OrigPtr> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
__enable_weak_this(const enable_shared_from_this<_Yp>* __e, | |
_OrigPtr* __ptr) noexcept | |
{ | |
typedef typename remove_cv<_Yp>::type _RawYp; | |
if (__e) | |
{ | |
__e->__weak_this_ = shared_ptr<_RawYp>(*this, | |
const_cast<_RawYp*>(static_cast<const _Yp*>(__ptr))); | |
} | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __enable_weak_this(const volatile void*, const volatile void*) noexcept {} | |
template <class _Up> friend class __attribute__ ((__type_visibility__("default"))) shared_ptr; | |
template <class _Up> friend class __attribute__ ((__type_visibility__("default"))) weak_ptr; | |
}; | |
template<class _Tp> | |
inline | |
constexpr | |
shared_ptr<_Tp>::shared_ptr() noexcept | |
: __ptr_(0), | |
__cntrl_(0) | |
{ | |
} | |
template<class _Tp> | |
inline | |
constexpr | |
shared_ptr<_Tp>::shared_ptr(nullptr_t) noexcept | |
: __ptr_(0), | |
__cntrl_(0) | |
{ | |
} | |
template<class _Tp> | |
template<class _Yp> | |
shared_ptr<_Tp>::shared_ptr(_Yp* __p, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type) | |
: __ptr_(__p) | |
{ | |
unique_ptr<_Yp> __hold(__p); | |
typedef __shared_ptr_pointer<_Yp*, default_delete<_Yp>, allocator<_Yp> > _CntrlBlk; | |
__cntrl_ = new _CntrlBlk(__p, default_delete<_Yp>(), allocator<_Yp>()); | |
__hold.release(); | |
__enable_weak_this(__p, __p); | |
} | |
template<class _Tp> | |
template<class _Yp, class _Dp> | |
shared_ptr<_Tp>::shared_ptr(_Yp* __p, _Dp __d, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type) | |
: __ptr_(__p) | |
{ | |
typedef __shared_ptr_pointer<_Yp*, _Dp, allocator<_Yp> > _CntrlBlk; | |
__cntrl_ = new _CntrlBlk(__p, __d, allocator<_Yp>()); | |
__enable_weak_this(__p, __p); | |
# 4183 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
} | |
template<class _Tp> | |
template<class _Dp> | |
shared_ptr<_Tp>::shared_ptr(nullptr_t __p, _Dp __d) | |
: __ptr_(0) | |
{ | |
typedef __shared_ptr_pointer<nullptr_t, _Dp, allocator<_Tp> > _CntrlBlk; | |
__cntrl_ = new _CntrlBlk(__p, __d, allocator<_Tp>()); | |
# 4204 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
} | |
template<class _Tp> | |
template<class _Yp, class _Dp, class _Alloc> | |
shared_ptr<_Tp>::shared_ptr(_Yp* __p, _Dp __d, _Alloc __a, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type) | |
: __ptr_(__p) | |
{ | |
typedef __shared_ptr_pointer<_Yp*, _Dp, _Alloc> _CntrlBlk; | |
typedef typename __allocator_traits_rebind<_Alloc, _CntrlBlk>::type _A2; | |
typedef __allocator_destructor<_A2> _D2; | |
_A2 __a2(__a); | |
unique_ptr<_CntrlBlk, _D2> __hold2(__a2.allocate(1), _D2(__a2, 1)); | |
::new(static_cast<void*>(std::__1::addressof(*__hold2.get()))) | |
_CntrlBlk(__p, __d, __a); | |
__cntrl_ = std::__1::addressof(*__hold2.release()); | |
__enable_weak_this(__p, __p); | |
# 4233 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
} | |
template<class _Tp> | |
template<class _Dp, class _Alloc> | |
shared_ptr<_Tp>::shared_ptr(nullptr_t __p, _Dp __d, _Alloc __a) | |
: __ptr_(0) | |
{ | |
typedef __shared_ptr_pointer<nullptr_t, _Dp, _Alloc> _CntrlBlk; | |
typedef typename __allocator_traits_rebind<_Alloc, _CntrlBlk>::type _A2; | |
typedef __allocator_destructor<_A2> _D2; | |
_A2 __a2(__a); | |
unique_ptr<_CntrlBlk, _D2> __hold2(__a2.allocate(1), _D2(__a2, 1)); | |
::new(static_cast<void*>(std::__1::addressof(*__hold2.get()))) | |
_CntrlBlk(__p, __d, __a); | |
__cntrl_ = std::__1::addressof(*__hold2.release()); | |
# 4260 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, element_type *__p) noexcept | |
: __ptr_(__p), | |
__cntrl_(__r.__cntrl_) | |
{ | |
if (__cntrl_) | |
__cntrl_->__add_shared(); | |
} | |
template<class _Tp> | |
inline | |
shared_ptr<_Tp>::shared_ptr(const shared_ptr& __r) noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
if (__cntrl_) | |
__cntrl_->__add_shared(); | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type) | |
noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
if (__cntrl_) | |
__cntrl_->__add_shared(); | |
} | |
template<class _Tp> | |
inline | |
shared_ptr<_Tp>::shared_ptr(shared_ptr&& __r) noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
__r.__ptr_ = 0; | |
__r.__cntrl_ = 0; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
shared_ptr<_Tp>::shared_ptr(shared_ptr<_Yp>&& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type) | |
noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
__r.__ptr_ = 0; | |
__r.__cntrl_ = 0; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
shared_ptr<_Tp>::shared_ptr(auto_ptr<_Yp>&& __r, | |
typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type) | |
: __ptr_(__r.get()) | |
{ | |
typedef __shared_ptr_pointer<_Yp*, default_delete<_Yp>, allocator<_Yp> > _CntrlBlk; | |
__cntrl_ = new _CntrlBlk(__r.get(), default_delete<_Yp>(), allocator<_Yp>()); | |
__enable_weak_this(__r.get(), __r.get()); | |
__r.release(); | |
} | |
template<class _Tp> | |
template <class _Yp, class _Dp> | |
shared_ptr<_Tp>::shared_ptr(unique_ptr<_Yp, _Dp>&& __r, | |
typename enable_if | |
< | |
!is_lvalue_reference<_Dp>::value && | |
!is_array<_Yp>::value && | |
is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value, | |
__nat | |
>::type) | |
: __ptr_(__r.get()) | |
{ | |
{ | |
typedef __shared_ptr_pointer<_Yp*, _Dp, allocator<_Yp> > _CntrlBlk; | |
__cntrl_ = new _CntrlBlk(__r.get(), __r.get_deleter(), allocator<_Yp>()); | |
__enable_weak_this(__r.get(), __r.get()); | |
} | |
__r.release(); | |
} | |
template<class _Tp> | |
template <class _Yp, class _Dp> | |
shared_ptr<_Tp>::shared_ptr(unique_ptr<_Yp, _Dp>&& __r, | |
typename enable_if | |
< | |
is_lvalue_reference<_Dp>::value && | |
!is_array<_Yp>::value && | |
is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, element_type*>::value, | |
__nat | |
>::type) | |
: __ptr_(__r.get()) | |
{ | |
{ | |
typedef __shared_ptr_pointer<_Yp*, | |
reference_wrapper<typename remove_reference<_Dp>::type>, | |
allocator<_Yp> > _CntrlBlk; | |
__cntrl_ = new _CntrlBlk(__r.get(), ref(__r.get_deleter()), allocator<_Yp>()); | |
__enable_weak_this(__r.get(), __r.get()); | |
} | |
__r.release(); | |
} | |
template<class _Tp> | |
template<class ..._Args> | |
shared_ptr<_Tp> | |
shared_ptr<_Tp>::make_shared(_Args&& ...__args) | |
{ | |
typedef __shared_ptr_emplace<_Tp, allocator<_Tp> > _CntrlBlk; | |
typedef allocator<_CntrlBlk> _A2; | |
typedef __allocator_destructor<_A2> _D2; | |
_A2 __a2; | |
unique_ptr<_CntrlBlk, _D2> __hold2(__a2.allocate(1), _D2(__a2, 1)); | |
::new(__hold2.get()) _CntrlBlk(__a2, std::__1::forward<_Args>(__args)...); | |
shared_ptr<_Tp> __r; | |
__r.__ptr_ = __hold2.get()->get(); | |
__r.__cntrl_ = __hold2.release(); | |
__r.__enable_weak_this(__r.__ptr_, __r.__ptr_); | |
return __r; | |
} | |
template<class _Tp> | |
template<class _Alloc, class ..._Args> | |
shared_ptr<_Tp> | |
shared_ptr<_Tp>::allocate_shared(const _Alloc& __a, _Args&& ...__args) | |
{ | |
typedef __shared_ptr_emplace<_Tp, _Alloc> _CntrlBlk; | |
typedef typename __allocator_traits_rebind<_Alloc, _CntrlBlk>::type _A2; | |
typedef __allocator_destructor<_A2> _D2; | |
_A2 __a2(__a); | |
unique_ptr<_CntrlBlk, _D2> __hold2(__a2.allocate(1), _D2(__a2, 1)); | |
::new(static_cast<void*>(std::__1::addressof(*__hold2.get()))) | |
_CntrlBlk(__a, std::__1::forward<_Args>(__args)...); | |
shared_ptr<_Tp> __r; | |
__r.__ptr_ = __hold2.get()->get(); | |
__r.__cntrl_ = std::__1::addressof(*__hold2.release()); | |
__r.__enable_weak_this(__r.__ptr_, __r.__ptr_); | |
return __r; | |
} | |
# 4589 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template<class _Tp> | |
shared_ptr<_Tp>::~shared_ptr() | |
{ | |
if (__cntrl_) | |
__cntrl_->__release_shared(); | |
} | |
template<class _Tp> | |
inline | |
shared_ptr<_Tp>& | |
shared_ptr<_Tp>::operator=(const shared_ptr& __r) noexcept | |
{ | |
shared_ptr(__r).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
shared_ptr<_Tp>& | |
>::type | |
shared_ptr<_Tp>::operator=(const shared_ptr<_Yp>& __r) noexcept | |
{ | |
shared_ptr(__r).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
inline | |
shared_ptr<_Tp>& | |
shared_ptr<_Tp>::operator=(shared_ptr&& __r) noexcept | |
{ | |
shared_ptr(std::__1::move(__r)).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
shared_ptr<_Tp>& | |
>::type | |
shared_ptr<_Tp>::operator=(shared_ptr<_Yp>&& __r) | |
{ | |
shared_ptr(std::__1::move(__r)).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
!is_array<_Yp>::value && | |
is_convertible<_Yp*, _Tp*>::value, | |
shared_ptr<_Tp> | |
>::type& | |
shared_ptr<_Tp>::operator=(auto_ptr<_Yp>&& __r) | |
{ | |
shared_ptr(std::__1::move(__r)).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template <class _Yp, class _Dp> | |
inline | |
typename enable_if | |
< | |
!is_array<_Yp>::value && | |
is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, _Tp*>::value, | |
shared_ptr<_Tp>& | |
>::type | |
shared_ptr<_Tp>::operator=(unique_ptr<_Yp, _Dp>&& __r) | |
{ | |
shared_ptr(std::__1::move(__r)).swap(*this); | |
return *this; | |
} | |
# 4708 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template<class _Tp> | |
inline | |
void | |
shared_ptr<_Tp>::swap(shared_ptr& __r) noexcept | |
{ | |
std::__1::swap(__ptr_, __r.__ptr_); | |
std::__1::swap(__cntrl_, __r.__cntrl_); | |
} | |
template<class _Tp> | |
inline | |
void | |
shared_ptr<_Tp>::reset() noexcept | |
{ | |
shared_ptr().swap(*this); | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
void | |
>::type | |
shared_ptr<_Tp>::reset(_Yp* __p) | |
{ | |
shared_ptr(__p).swap(*this); | |
} | |
template<class _Tp> | |
template<class _Yp, class _Dp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
void | |
>::type | |
shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d) | |
{ | |
shared_ptr(__p, __d).swap(*this); | |
} | |
template<class _Tp> | |
template<class _Yp, class _Dp, class _Alloc> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
void | |
>::type | |
shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d, _Alloc __a) | |
{ | |
shared_ptr(__p, __d, __a).swap(*this); | |
} | |
template<class _Tp, class ..._Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
!is_array<_Tp>::value, | |
shared_ptr<_Tp> | |
>::type | |
make_shared(_Args&& ...__args) | |
{ | |
return shared_ptr<_Tp>::make_shared(std::__1::forward<_Args>(__args)...); | |
} | |
template<class _Tp, class _Alloc, class ..._Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
!is_array<_Tp>::value, | |
shared_ptr<_Tp> | |
>::type | |
allocate_shared(const _Alloc& __a, _Args&& ...__args) | |
{ | |
return shared_ptr<_Tp>::allocate_shared(__a, std::__1::forward<_Args>(__args)...); | |
} | |
# 4858 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory" 3 | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) noexcept | |
{ | |
return __x.get() == __y.get(); | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) noexcept | |
{ | |
return !(__x == __y); | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) noexcept | |
{ | |
typedef typename common_type<_Tp*, _Up*>::type _Vp; | |
return less<_Vp>()(__x.get(), __y.get()); | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) noexcept | |
{ | |
return __y < __x; | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) noexcept | |
{ | |
return !(__y < __x); | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) noexcept | |
{ | |
return !(__x < __y); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const shared_ptr<_Tp>& __x, nullptr_t) noexcept | |
{ | |
return !__x; | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(nullptr_t, const shared_ptr<_Tp>& __x) noexcept | |
{ | |
return !__x; | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept | |
{ | |
return static_cast<bool>(__x); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept | |
{ | |
return static_cast<bool>(__x); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(const shared_ptr<_Tp>& __x, nullptr_t) noexcept | |
{ | |
return less<_Tp*>()(__x.get(), nullptr); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<(nullptr_t, const shared_ptr<_Tp>& __x) noexcept | |
{ | |
return less<_Tp*>()(nullptr, __x.get()); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(const shared_ptr<_Tp>& __x, nullptr_t) noexcept | |
{ | |
return nullptr < __x; | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>(nullptr_t, const shared_ptr<_Tp>& __x) noexcept | |
{ | |
return __x < nullptr; | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept | |
{ | |
return !(nullptr < __x); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept | |
{ | |
return !(__x < nullptr); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const shared_ptr<_Tp>& __x, nullptr_t) noexcept | |
{ | |
return !(__x < nullptr); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(nullptr_t, const shared_ptr<_Tp>& __x) noexcept | |
{ | |
return !(nullptr < __x); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(shared_ptr<_Tp>& __x, shared_ptr<_Tp>& __y) noexcept | |
{ | |
__x.swap(__y); | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
!is_array<_Tp>::value && !is_array<_Up>::value, | |
shared_ptr<_Tp> | |
>::type | |
static_pointer_cast(const shared_ptr<_Up>& __r) noexcept | |
{ | |
return shared_ptr<_Tp>(__r, static_cast<_Tp*>(__r.get())); | |
} | |
template<class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
!is_array<_Tp>::value && !is_array<_Up>::value, | |
shared_ptr<_Tp> | |
>::type | |
dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept | |
{ | |
_Tp* __p = dynamic_cast<_Tp*>(__r.get()); | |
return __p ? shared_ptr<_Tp>(__r, __p) : shared_ptr<_Tp>(); | |
} | |
template<class _Tp, class _Up> | |
typename enable_if | |
< | |
is_array<_Tp>::value == is_array<_Up>::value, | |
shared_ptr<_Tp> | |
>::type | |
const_pointer_cast(const shared_ptr<_Up>& __r) noexcept | |
{ | |
typedef typename remove_extent<_Tp>::type _RTp; | |
return shared_ptr<_Tp>(__r, const_cast<_RTp*>(__r.get())); | |
} | |
template<class _Dp, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Dp* | |
get_deleter(const shared_ptr<_Tp>& __p) noexcept | |
{ | |
return __p.template __get_deleter<_Dp>(); | |
} | |
template<class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) weak_ptr | |
{ | |
public: | |
typedef _Tp element_type; | |
private: | |
element_type* __ptr_; | |
__shared_weak_count* __cntrl_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
constexpr weak_ptr() noexcept; | |
template<class _Yp> __attribute__ ((__visibility__("hidden"), __always_inline__)) weak_ptr(shared_ptr<_Yp> const& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0) | |
noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
weak_ptr(weak_ptr const& __r) noexcept; | |
template<class _Yp> __attribute__ ((__visibility__("hidden"), __always_inline__)) weak_ptr(weak_ptr<_Yp> const& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0) | |
noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
weak_ptr(weak_ptr&& __r) noexcept; | |
template<class _Yp> __attribute__ ((__visibility__("hidden"), __always_inline__)) weak_ptr(weak_ptr<_Yp>&& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0) | |
noexcept; | |
~weak_ptr(); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
weak_ptr& operator=(weak_ptr const& __r) noexcept; | |
template<class _Yp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
weak_ptr& | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(weak_ptr<_Yp> const& __r) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
weak_ptr& operator=(weak_ptr&& __r) noexcept; | |
template<class _Yp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
weak_ptr& | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(weak_ptr<_Yp>&& __r) noexcept; | |
template<class _Yp> | |
typename enable_if | |
< | |
is_convertible<_Yp*, element_type*>::value, | |
weak_ptr& | |
>::type | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator=(shared_ptr<_Yp> const& __r) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(weak_ptr& __r) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void reset() noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
long use_count() const noexcept | |
{return __cntrl_ ? __cntrl_->use_count() : 0;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool expired() const noexcept | |
{return __cntrl_ == 0 || __cntrl_->use_count() == 0;} | |
shared_ptr<_Tp> lock() const noexcept; | |
template<class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool owner_before(const shared_ptr<_Up>& __r) const | |
{return __cntrl_ < __r.__cntrl_;} | |
template<class _Up> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool owner_before(const weak_ptr<_Up>& __r) const | |
{return __cntrl_ < __r.__cntrl_;} | |
template <class _Up> friend class __attribute__ ((__type_visibility__("default"))) weak_ptr; | |
template <class _Up> friend class __attribute__ ((__type_visibility__("default"))) shared_ptr; | |
}; | |
template<class _Tp> | |
inline | |
constexpr | |
weak_ptr<_Tp>::weak_ptr() noexcept | |
: __ptr_(0), | |
__cntrl_(0) | |
{ | |
} | |
template<class _Tp> | |
inline | |
weak_ptr<_Tp>::weak_ptr(weak_ptr const& __r) noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
if (__cntrl_) | |
__cntrl_->__add_weak(); | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
weak_ptr<_Tp>::weak_ptr(shared_ptr<_Yp> const& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type) | |
noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
if (__cntrl_) | |
__cntrl_->__add_weak(); | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp> const& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type) | |
noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
if (__cntrl_) | |
__cntrl_->__add_weak(); | |
} | |
template<class _Tp> | |
inline | |
weak_ptr<_Tp>::weak_ptr(weak_ptr&& __r) noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
__r.__ptr_ = 0; | |
__r.__cntrl_ = 0; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp>&& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type) | |
noexcept | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_) | |
{ | |
__r.__ptr_ = 0; | |
__r.__cntrl_ = 0; | |
} | |
template<class _Tp> | |
weak_ptr<_Tp>::~weak_ptr() | |
{ | |
if (__cntrl_) | |
__cntrl_->__release_weak(); | |
} | |
template<class _Tp> | |
inline | |
weak_ptr<_Tp>& | |
weak_ptr<_Tp>::operator=(weak_ptr const& __r) noexcept | |
{ | |
weak_ptr(__r).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
weak_ptr<_Tp>& | |
>::type | |
weak_ptr<_Tp>::operator=(weak_ptr<_Yp> const& __r) noexcept | |
{ | |
weak_ptr(__r).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
inline | |
weak_ptr<_Tp>& | |
weak_ptr<_Tp>::operator=(weak_ptr&& __r) noexcept | |
{ | |
weak_ptr(std::__1::move(__r)).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
weak_ptr<_Tp>& | |
>::type | |
weak_ptr<_Tp>::operator=(weak_ptr<_Yp>&& __r) noexcept | |
{ | |
weak_ptr(std::__1::move(__r)).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
template<class _Yp> | |
inline | |
typename enable_if | |
< | |
is_convertible<_Yp*, _Tp*>::value, | |
weak_ptr<_Tp>& | |
>::type | |
weak_ptr<_Tp>::operator=(shared_ptr<_Yp> const& __r) noexcept | |
{ | |
weak_ptr(__r).swap(*this); | |
return *this; | |
} | |
template<class _Tp> | |
inline | |
void | |
weak_ptr<_Tp>::swap(weak_ptr& __r) noexcept | |
{ | |
std::__1::swap(__ptr_, __r.__ptr_); | |
std::__1::swap(__cntrl_, __r.__cntrl_); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(weak_ptr<_Tp>& __x, weak_ptr<_Tp>& __y) noexcept | |
{ | |
__x.swap(__y); | |
} | |
template<class _Tp> | |
inline | |
void | |
weak_ptr<_Tp>::reset() noexcept | |
{ | |
weak_ptr().swap(*this); | |
} | |
template<class _Tp> | |
template<class _Yp> | |
shared_ptr<_Tp>::shared_ptr(const weak_ptr<_Yp>& __r, | |
typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type) | |
: __ptr_(__r.__ptr_), | |
__cntrl_(__r.__cntrl_ ? __r.__cntrl_->lock() : __r.__cntrl_) | |
{ | |
if (__cntrl_ == 0) | |
(__builtin_expect(!(!"bad_weak_ptr"), 0) ? __assert_rtn(__func__, "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory", 5329, "!\"bad_weak_ptr\"") : (void)0); | |
} | |
template<class _Tp> | |
shared_ptr<_Tp> | |
weak_ptr<_Tp>::lock() const noexcept | |
{ | |
shared_ptr<_Tp> __r; | |
__r.__cntrl_ = __cntrl_ ? __cntrl_->lock() : __cntrl_; | |
if (__r.__cntrl_) | |
__r.__ptr_ = __ptr_; | |
return __r; | |
} | |
template <class _Tp> struct owner_less; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) owner_less<shared_ptr<_Tp> > | |
: binary_function<shared_ptr<_Tp>, shared_ptr<_Tp>, bool> | |
{ | |
typedef bool result_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(shared_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const | |
{return __x.owner_before(__y);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(shared_ptr<_Tp> const& __x, weak_ptr<_Tp> const& __y) const | |
{return __x.owner_before(__y);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()( weak_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const | |
{return __x.owner_before(__y);} | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) owner_less<weak_ptr<_Tp> > | |
: binary_function<weak_ptr<_Tp>, weak_ptr<_Tp>, bool> | |
{ | |
typedef bool result_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()( weak_ptr<_Tp> const& __x, weak_ptr<_Tp> const& __y) const | |
{return __x.owner_before(__y);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(shared_ptr<_Tp> const& __x, weak_ptr<_Tp> const& __y) const | |
{return __x.owner_before(__y);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()( weak_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const | |
{return __x.owner_before(__y);} | |
}; | |
template<class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) enable_shared_from_this | |
{ | |
mutable weak_ptr<_Tp> __weak_this_; | |
protected: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) constexpr | |
enable_shared_from_this() noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
enable_shared_from_this(enable_shared_from_this const&) noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
enable_shared_from_this& operator=(enable_shared_from_this const&) noexcept | |
{return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
~enable_shared_from_this() {} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr<_Tp> shared_from_this() | |
{return shared_ptr<_Tp>(__weak_this_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
shared_ptr<_Tp const> shared_from_this() const | |
{return shared_ptr<const _Tp>(__weak_this_);} | |
template <class _Up> friend class shared_ptr; | |
}; | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) hash<shared_ptr<_Tp> > | |
{ | |
typedef shared_ptr<_Tp> argument_type; | |
typedef size_t result_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
result_type operator()(const argument_type& __ptr) const noexcept | |
{ | |
return hash<_Tp*>()(__ptr.get()); | |
} | |
}; | |
template<class _CharT, class _Traits, class _Yp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_ostream<_CharT, _Traits>& | |
operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p); | |
class __attribute__ ((__type_visibility__("default"))) __sp_mut | |
{ | |
void* __lx; | |
public: | |
void lock() noexcept; | |
void unlock() noexcept; | |
private: | |
constexpr __sp_mut(void*) noexcept; | |
__sp_mut(const __sp_mut&); | |
__sp_mut& operator=(const __sp_mut&); | |
friend __attribute__ ((__visibility__("default"))) __sp_mut& __get_sp_mut(const void*); | |
}; | |
__attribute__ ((__visibility__("default"))) __attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
__sp_mut& __get_sp_mut(const void*); | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
atomic_is_lock_free(const shared_ptr<_Tp>*) | |
{ | |
return false; | |
} | |
template <class _Tp> | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
shared_ptr<_Tp> | |
atomic_load(const shared_ptr<_Tp>* __p) | |
{ | |
__sp_mut& __m = __get_sp_mut(__p); | |
__m.lock(); | |
shared_ptr<_Tp> __q = *__p; | |
__m.unlock(); | |
return __q; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
shared_ptr<_Tp> | |
atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) | |
{ | |
return atomic_load(__p); | |
} | |
template <class _Tp> | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
void | |
atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) | |
{ | |
__sp_mut& __m = __get_sp_mut(__p); | |
__m.lock(); | |
__p->swap(__r); | |
__m.unlock(); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
void | |
atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) | |
{ | |
atomic_store(__p, __r); | |
} | |
template <class _Tp> | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
shared_ptr<_Tp> | |
atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) | |
{ | |
__sp_mut& __m = __get_sp_mut(__p); | |
__m.lock(); | |
__p->swap(__r); | |
__m.unlock(); | |
return __r; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
shared_ptr<_Tp> | |
atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) | |
{ | |
return atomic_exchange(__p, __r); | |
} | |
template <class _Tp> | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
bool | |
atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w) | |
{ | |
__sp_mut& __m = __get_sp_mut(__p); | |
__m.lock(); | |
if (__p->__owner_equivalent(*__v)) | |
{ | |
*__p = __w; | |
__m.unlock(); | |
return true; | |
} | |
*__v = *__p; | |
__m.unlock(); | |
return false; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
bool | |
atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w) | |
{ | |
return atomic_compare_exchange_strong(__p, __v, __w); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
bool | |
atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, | |
shared_ptr<_Tp> __w, memory_order, memory_order) | |
{ | |
return atomic_compare_exchange_strong(__p, __v, __w); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__attribute__((availability(macosx,strict,introduced=10.9))) __attribute__((availability(ios,strict,introduced=7.0))) | |
bool | |
atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, | |
shared_ptr<_Tp> __w, memory_order, memory_order) | |
{ | |
return atomic_compare_exchange_weak(__p, __v, __w); | |
} | |
struct __attribute__ ((__type_visibility__("default"))) pointer_safety | |
{ | |
enum __lx | |
{ | |
relaxed, | |
preferred, | |
strict | |
}; | |
__lx __v_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pointer_safety(__lx __v) : __v_(__v) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
operator int() const {return __v_;} | |
}; | |
__attribute__ ((__visibility__("default"))) void declare_reachable(void* __p); | |
__attribute__ ((__visibility__("default"))) void declare_no_pointers(char* __p, size_t __n); | |
__attribute__ ((__visibility__("default"))) void undeclare_no_pointers(char* __p, size_t __n); | |
__attribute__ ((__visibility__("default"))) pointer_safety get_pointer_safety() noexcept; | |
__attribute__ ((__visibility__("default"))) void* __undeclare_reachable(void* __p); | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp* | |
undeclare_reachable(_Tp* __p) | |
{ | |
return static_cast<_Tp*>(__undeclare_reachable(__p)); | |
} | |
__attribute__ ((__visibility__("default"))) void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space); | |
template <typename _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __swap_allocator(_Alloc & __a1, _Alloc & __a2) | |
noexcept(__is_nothrow_swappable<_Alloc>::value) | |
{ | |
__swap_allocator(__a1, __a2, | |
integral_constant<bool, std::__1::allocator_traits<_Alloc>::propagate_on_container_swap::value>()); | |
} | |
template <typename _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __swap_allocator(_Alloc & __a1, _Alloc & __a2, true_type) | |
noexcept(__is_nothrow_swappable<_Alloc>::value) | |
{ | |
using std::__1::swap; | |
swap(__a1, __a2); | |
} | |
template <typename _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __swap_allocator(_Alloc &, _Alloc &, false_type) noexcept {} | |
} } | |
# 629 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 639 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__undef_min_max" 1 3 | |
# 640 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 2 3 | |
# 645 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
namespace std {inline namespace __1 { | |
template <class _T1, class _T2 = _T1> | |
struct __equal_to | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bool operator()(const _T1& __x, const _T2& __y) const {return __x == __y;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bool operator()(const _T2& __x, const _T1& __y) const {return __x == __y;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) bool operator()(const _T2& __x, const _T2& __y) const {return __x == __y;} | |
}; | |
template <class _T1> | |
struct __equal_to<_T1, _T1> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} | |
}; | |
template <class _T1> | |
struct __equal_to<const _T1, _T1> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} | |
}; | |
template <class _T1> | |
struct __equal_to<_T1, const _T1> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} | |
}; | |
template <class _T1, class _T2 = _T1> | |
struct __less | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;} | |
}; | |
template <class _T1> | |
struct __less<_T1, _T1> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} | |
}; | |
template <class _T1> | |
struct __less<const _T1, _T1> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} | |
}; | |
template <class _T1> | |
struct __less<_T1, const _T1> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} | |
}; | |
template <class _Predicate> | |
class __negate | |
{ | |
private: | |
_Predicate __p_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __negate() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __negate(_Predicate __p) : __p_(__p) {} | |
template <class _T1> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x) {return !__p_(__x);} | |
template <class _T1, class _T2> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _T1& __x, const _T2& __y) {return !__p_(__x, __y);} | |
}; | |
# 759 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned | |
__ctz(unsigned __x) | |
{ | |
return static_cast<unsigned>(__builtin_ctz(__x)); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned long | |
__ctz(unsigned long __x) | |
{ | |
return static_cast<unsigned long>(__builtin_ctzl(__x)); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned long long | |
__ctz(unsigned long long __x) | |
{ | |
return static_cast<unsigned long long>(__builtin_ctzll(__x)); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned | |
__clz(unsigned __x) | |
{ | |
return static_cast<unsigned>(__builtin_clz(__x)); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned long | |
__clz(unsigned long __x) | |
{ | |
return static_cast<unsigned long>(__builtin_clzl (__x)); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unsigned long long | |
__clz(unsigned long long __x) | |
{ | |
return static_cast<unsigned long long>(__builtin_clzll(__x)); | |
} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) int __pop_count(unsigned __x) {return __builtin_popcount (__x);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) int __pop_count(unsigned long __x) {return __builtin_popcountl (__x);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) int __pop_count(unsigned long long __x) {return __builtin_popcountll(__x);} | |
template <class _InputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
if (!__pred(*__first)) | |
return false; | |
return true; | |
} | |
template <class _InputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
if (__pred(*__first)) | |
return true; | |
return false; | |
} | |
template <class _InputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
if (__pred(*__first)) | |
return false; | |
return true; | |
} | |
template <class _InputIterator, class _Function> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Function | |
for_each(_InputIterator __first, _InputIterator __last, _Function __f) | |
{ | |
for (; __first != __last; ++__first) | |
__f(*__first); | |
return std::__1::move(__f); | |
} | |
template <class _InputIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_InputIterator | |
find(_InputIterator __first, _InputIterator __last, const _Tp& __value_) | |
{ | |
for (; __first != __last; ++__first) | |
if (*__first == __value_) | |
break; | |
return __first; | |
} | |
template <class _InputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_InputIterator | |
find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
if (__pred(*__first)) | |
break; | |
return __first; | |
} | |
template<class _InputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_InputIterator | |
find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
if (!__pred(*__first)) | |
break; | |
return __first; | |
} | |
template <class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2> | |
_ForwardIterator1 | |
__find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred, | |
forward_iterator_tag, forward_iterator_tag) | |
{ | |
_ForwardIterator1 __r = __last1; | |
if (__first2 == __last2) | |
return __r; | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first1 == __last1) | |
return __r; | |
if (__pred(*__first1, *__first2)) | |
break; | |
++__first1; | |
} | |
_ForwardIterator1 __m1 = __first1; | |
_ForwardIterator2 __m2 = __first2; | |
while (true) | |
{ | |
if (++__m2 == __last2) | |
{ | |
__r = __first1; | |
++__first1; | |
break; | |
} | |
if (++__m1 == __last1) | |
return __r; | |
if (!__pred(*__m1, *__m2)) | |
{ | |
++__first1; | |
break; | |
} | |
} | |
} | |
} | |
template <class _BinaryPredicate, class _BidirectionalIterator1, class _BidirectionalIterator2> | |
_BidirectionalIterator1 | |
__find_end(_BidirectionalIterator1 __first1, _BidirectionalIterator1 __last1, | |
_BidirectionalIterator2 __first2, _BidirectionalIterator2 __last2, _BinaryPredicate __pred, | |
bidirectional_iterator_tag, bidirectional_iterator_tag) | |
{ | |
if (__first2 == __last2) | |
return __last1; | |
_BidirectionalIterator1 __l1 = __last1; | |
_BidirectionalIterator2 __l2 = __last2; | |
--__l2; | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first1 == __l1) | |
return __last1; | |
if (__pred(*--__l1, *__l2)) | |
break; | |
} | |
_BidirectionalIterator1 __m1 = __l1; | |
_BidirectionalIterator2 __m2 = __l2; | |
while (true) | |
{ | |
if (__m2 == __first2) | |
return __m1; | |
if (__m1 == __first1) | |
return __last1; | |
if (!__pred(*--__m1, *--__m2)) | |
{ | |
break; | |
} | |
} | |
} | |
} | |
template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2> | |
_RandomAccessIterator1 | |
__find_end(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, | |
_RandomAccessIterator2 __first2, _RandomAccessIterator2 __last2, _BinaryPredicate __pred, | |
random_access_iterator_tag, random_access_iterator_tag) | |
{ | |
typename iterator_traits<_RandomAccessIterator2>::difference_type __len2 = __last2 - __first2; | |
if (__len2 == 0) | |
return __last1; | |
typename iterator_traits<_RandomAccessIterator1>::difference_type __len1 = __last1 - __first1; | |
if (__len1 < __len2) | |
return __last1; | |
const _RandomAccessIterator1 __s = __first1 + (__len2 - 1); | |
_RandomAccessIterator1 __l1 = __last1; | |
_RandomAccessIterator2 __l2 = __last2; | |
--__l2; | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__s == __l1) | |
return __last1; | |
if (__pred(*--__l1, *__l2)) | |
break; | |
} | |
_RandomAccessIterator1 __m1 = __l1; | |
_RandomAccessIterator2 __m2 = __l2; | |
while (true) | |
{ | |
if (__m2 == __first2) | |
return __m1; | |
if (!__pred(*--__m1, *--__m2)) | |
{ | |
break; | |
} | |
} | |
} | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator1 | |
find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) | |
{ | |
return std::__1::__find_end<typename add_lvalue_reference<_BinaryPredicate>::type> | |
(__first1, __last1, __first2, __last2, __pred, | |
typename iterator_traits<_ForwardIterator1>::iterator_category(), | |
typename iterator_traits<_ForwardIterator2>::iterator_category()); | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator1 | |
find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2) | |
{ | |
typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; | |
typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; | |
return std::__1::find_end(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> | |
_ForwardIterator1 | |
__find_first_of_ce(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) | |
{ | |
for (; __first1 != __last1; ++__first1) | |
for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) | |
if (__pred(*__first1, *__j)) | |
return __first1; | |
return __last1; | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator1 | |
find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) | |
{ | |
return std::__1::__find_first_of_ce(__first1, __last1, __first2, __last2, __pred); | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator1 | |
find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2) | |
{ | |
typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; | |
typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; | |
return std::__1::__find_first_of_ce(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); | |
} | |
template <class _ForwardIterator, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
adjacent_find(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) | |
{ | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
{ | |
if (__pred(*__first, *__i)) | |
return __first; | |
__first = __i; | |
} | |
} | |
return __last; | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
adjacent_find(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type __v; | |
return std::__1::adjacent_find(__first, __last, __equal_to<__v>()); | |
} | |
template <class _InputIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename iterator_traits<_InputIterator>::difference_type | |
count(_InputIterator __first, _InputIterator __last, const _Tp& __value_) | |
{ | |
typename iterator_traits<_InputIterator>::difference_type __r(0); | |
for (; __first != __last; ++__first) | |
if (*__first == __value_) | |
++__r; | |
return __r; | |
} | |
template <class _InputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename iterator_traits<_InputIterator>::difference_type | |
count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
typename iterator_traits<_InputIterator>::difference_type __r(0); | |
for (; __first != __last; ++__first) | |
if (__pred(*__first)) | |
++__r; | |
return __r; | |
} | |
template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_InputIterator1, _InputIterator2> | |
mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _BinaryPredicate __pred) | |
{ | |
for (; __first1 != __last1; ++__first1, (void) ++__first2) | |
if (!__pred(*__first1, *__first2)) | |
break; | |
return pair<_InputIterator1, _InputIterator2>(__first1, __first2); | |
} | |
template <class _InputIterator1, class _InputIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_InputIterator1, _InputIterator2> | |
mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) | |
{ | |
typedef typename iterator_traits<_InputIterator1>::value_type __v1; | |
typedef typename iterator_traits<_InputIterator2>::value_type __v2; | |
return std::__1::mismatch(__first1, __last1, __first2, __equal_to<__v1, __v2>()); | |
} | |
# 1187 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
template <class _InputIterator1, class _InputIterator2, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) | |
{ | |
for (; __first1 != __last1; ++__first1, (void) ++__first2) | |
if (!__pred(*__first1, *__first2)) | |
return false; | |
return true; | |
} | |
template <class _InputIterator1, class _InputIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) | |
{ | |
typedef typename iterator_traits<_InputIterator1>::value_type __v1; | |
typedef typename iterator_traits<_InputIterator2>::value_type __v2; | |
return std::__1::equal(__first1, __last1, __first2, __equal_to<__v1, __v2>()); | |
} | |
# 1264 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
template<class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> | |
bool | |
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _BinaryPredicate __pred) | |
{ | |
for (; __first1 != __last1; ++__first1, (void) ++__first2) | |
if (!__pred(*__first1, *__first2)) | |
goto __not_done; | |
return true; | |
__not_done: | |
typedef typename iterator_traits<_ForwardIterator1>::difference_type _D1; | |
_D1 __l1 = std::__1::distance(__first1, __last1); | |
if (__l1 == _D1(1)) | |
return false; | |
_ForwardIterator2 __last2 = std::__1::next(__first2, __l1); | |
for (_ForwardIterator1 __i = __first1; __i != __last1; ++__i) | |
{ | |
for (_ForwardIterator1 __j = __first1; __j != __i; ++__j) | |
if (__pred(*__j, *__i)) | |
goto __next_iter; | |
{ | |
_D1 __c2 = 0; | |
for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) | |
if (__pred(*__i, *__j)) | |
++__c2; | |
if (__c2 == 0) | |
return false; | |
_D1 __c1 = 1; | |
for (_ForwardIterator1 __j = std::__1::next(__i); __j != __last1; ++__j) | |
if (__pred(*__i, *__j)) | |
++__c1; | |
if (__c1 != __c2) | |
return false; | |
} | |
__next_iter:; | |
} | |
return true; | |
} | |
template<class _ForwardIterator1, class _ForwardIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2) | |
{ | |
typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; | |
typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; | |
return std::__1::is_permutation(__first1, __last1, __first2, __equal_to<__v1, __v2>()); | |
} | |
# 1417 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
template <class _BinaryPredicate, class _ForwardIterator1, class _ForwardIterator2> | |
_ForwardIterator1 | |
__search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred, | |
forward_iterator_tag, forward_iterator_tag) | |
{ | |
if (__first2 == __last2) | |
return __first1; | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first1 == __last1) | |
return __last1; | |
if (__pred(*__first1, *__first2)) | |
break; | |
++__first1; | |
} | |
_ForwardIterator1 __m1 = __first1; | |
_ForwardIterator2 __m2 = __first2; | |
while (true) | |
{ | |
if (++__m2 == __last2) | |
return __first1; | |
if (++__m1 == __last1) | |
return __last1; | |
if (!__pred(*__m1, *__m2)) | |
{ | |
++__first1; | |
break; | |
} | |
} | |
} | |
} | |
template <class _BinaryPredicate, class _RandomAccessIterator1, class _RandomAccessIterator2> | |
_RandomAccessIterator1 | |
__search(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, | |
_RandomAccessIterator2 __first2, _RandomAccessIterator2 __last2, _BinaryPredicate __pred, | |
random_access_iterator_tag, random_access_iterator_tag) | |
{ | |
typedef typename std::iterator_traits<_RandomAccessIterator1>::difference_type _D1; | |
typedef typename std::iterator_traits<_RandomAccessIterator2>::difference_type _D2; | |
_D2 __len2 = __last2 - __first2; | |
if (__len2 == 0) | |
return __first1; | |
_D1 __len1 = __last1 - __first1; | |
if (__len1 < __len2) | |
return __last1; | |
const _RandomAccessIterator1 __s = __last1 - (__len2 - 1); | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first1 == __s) | |
return __last1; | |
if (__pred(*__first1, *__first2)) | |
break; | |
++__first1; | |
} | |
# 1512 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
_RandomAccessIterator1 __m1 = __first1; | |
_RandomAccessIterator2 __m2 = __first2; | |
while (true) | |
{ | |
if (++__m2 == __last2) | |
return __first1; | |
++__m1; | |
if (!__pred(*__m1, *__m2)) | |
{ | |
++__first1; | |
break; | |
} | |
} | |
# 1563 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
} | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator1 | |
search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) | |
{ | |
return std::__1::__search<typename add_lvalue_reference<_BinaryPredicate>::type> | |
(__first1, __last1, __first2, __last2, __pred, | |
typename std::iterator_traits<_ForwardIterator1>::iterator_category(), | |
typename std::iterator_traits<_ForwardIterator2>::iterator_category()); | |
} | |
template <class _ForwardIterator1, class _ForwardIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator1 | |
search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2, _ForwardIterator2 __last2) | |
{ | |
typedef typename std::iterator_traits<_ForwardIterator1>::value_type __v1; | |
typedef typename std::iterator_traits<_ForwardIterator2>::value_type __v2; | |
return std::__1::search(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); | |
} | |
template <class _BinaryPredicate, class _ForwardIterator, class _Size, class _Tp> | |
_ForwardIterator | |
__search_n(_ForwardIterator __first, _ForwardIterator __last, | |
_Size __count, const _Tp& __value_, _BinaryPredicate __pred, forward_iterator_tag) | |
{ | |
if (__count <= 0) | |
return __first; | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first == __last) | |
return __last; | |
if (__pred(*__first, __value_)) | |
break; | |
++__first; | |
} | |
_ForwardIterator __m = __first; | |
_Size __c(0); | |
while (true) | |
{ | |
if (++__c == __count) | |
return __first; | |
if (++__m == __last) | |
return __last; | |
if (!__pred(*__m, __value_)) | |
{ | |
__first = __m; | |
++__first; | |
break; | |
} | |
} | |
} | |
} | |
template <class _BinaryPredicate, class _RandomAccessIterator, class _Size, class _Tp> | |
_RandomAccessIterator | |
__search_n(_RandomAccessIterator __first, _RandomAccessIterator __last, | |
_Size __count, const _Tp& __value_, _BinaryPredicate __pred, random_access_iterator_tag) | |
{ | |
if (__count <= 0) | |
return __first; | |
_Size __len = static_cast<_Size>(__last - __first); | |
if (__len < __count) | |
return __last; | |
const _RandomAccessIterator __s = __last - (__count - 1); | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first >= __s) | |
return __last; | |
if (__pred(*__first, __value_)) | |
break; | |
++__first; | |
} | |
_RandomAccessIterator __m = __first; | |
_Size __c(0); | |
while (true) | |
{ | |
if (++__c == __count) | |
return __first; | |
++__m; | |
if (!__pred(*__m, __value_)) | |
{ | |
__first = __m; | |
++__first; | |
break; | |
} | |
} | |
} | |
} | |
template <class _ForwardIterator, class _Size, class _Tp, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
search_n(_ForwardIterator __first, _ForwardIterator __last, | |
_Size __count, const _Tp& __value_, _BinaryPredicate __pred) | |
{ | |
return std::__1::__search_n<typename add_lvalue_reference<_BinaryPredicate>::type> | |
(__first, __last, __convert_to_integral(__count), __value_, __pred, | |
typename iterator_traits<_ForwardIterator>::iterator_category()); | |
} | |
template <class _ForwardIterator, class _Size, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value_) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type __v; | |
return std::__1::search_n(__first, __last, __convert_to_integral(__count), | |
__value_, __equal_to<__v, _Tp>()); | |
} | |
template <class _Iter> | |
struct __libcpp_is_trivial_iterator | |
{ | |
static const bool value = is_pointer<_Iter>::value; | |
}; | |
template <class _Iter> | |
struct __libcpp_is_trivial_iterator<move_iterator<_Iter> > | |
{ | |
static const bool value = is_pointer<_Iter>::value; | |
}; | |
template <class _Iter> | |
struct __libcpp_is_trivial_iterator<__wrap_iter<_Iter> > | |
{ | |
static const bool value = is_pointer<_Iter>::value; | |
}; | |
template <class _Iter> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Iter | |
__unwrap_iter(_Iter __i) | |
{ | |
return __i; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_trivially_copy_assignable<_Tp>::value, | |
_Tp* | |
>::type | |
__unwrap_iter(move_iterator<_Tp*> __i) | |
{ | |
return __i.base(); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_trivially_copy_assignable<_Tp>::value, | |
_Tp* | |
>::type | |
__unwrap_iter(__wrap_iter<_Tp*> __i) | |
{ | |
return __i.base(); | |
} | |
template <class _InputIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
__copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) | |
{ | |
for (; __first != __last; ++__first, (void) ++__result) | |
*__result = *__first; | |
return __result; | |
} | |
template <class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_same<typename remove_const<_Tp>::type, _Up>::value && | |
is_trivially_copy_assignable<_Up>::value, | |
_Up* | |
>::type | |
__copy(_Tp* __first, _Tp* __last, _Up* __result) | |
{ | |
const size_t __n = static_cast<size_t>(__last - __first); | |
if (__n > 0) | |
std::__1::memmove(__result, __first, __n * sizeof(_Up)); | |
return __result + __n; | |
} | |
template <class _InputIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) | |
{ | |
return std::__1::__copy(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); | |
} | |
template <class _BidirectionalIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
__copy_backward(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) | |
{ | |
while (__first != __last) | |
*--__result = *--__last; | |
return __result; | |
} | |
template <class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_same<typename remove_const<_Tp>::type, _Up>::value && | |
is_trivially_copy_assignable<_Up>::value, | |
_Up* | |
>::type | |
__copy_backward(_Tp* __first, _Tp* __last, _Up* __result) | |
{ | |
const size_t __n = static_cast<size_t>(__last - __first); | |
if (__n > 0) | |
{ | |
__result -= __n; | |
std::__1::memmove(__result, __first, __n * sizeof(_Up)); | |
} | |
return __result; | |
} | |
template <class _BidirectionalIterator1, class _BidirectionalIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_BidirectionalIterator2 | |
copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, | |
_BidirectionalIterator2 __result) | |
{ | |
return std::__1::__copy_backward(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); | |
} | |
template<class _InputIterator, class _OutputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
copy_if(_InputIterator __first, _InputIterator __last, | |
_OutputIterator __result, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
{ | |
if (__pred(*__first)) | |
{ | |
*__result = *__first; | |
++__result; | |
} | |
} | |
return __result; | |
} | |
template<class _InputIterator, class _Size, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
__is_input_iterator<_InputIterator>::value && | |
!__is_random_access_iterator<_InputIterator>::value, | |
_OutputIterator | |
>::type | |
copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) | |
{ | |
typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; | |
_IntegralSize __n = __orig_n; | |
if (__n > 0) | |
{ | |
*__result = *__first; | |
++__result; | |
for (--__n; __n > 0; --__n) | |
{ | |
++__first; | |
*__result = *__first; | |
++__result; | |
} | |
} | |
return __result; | |
} | |
template<class _InputIterator, class _Size, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
__is_random_access_iterator<_InputIterator>::value, | |
_OutputIterator | |
>::type | |
copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) | |
{ | |
typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; | |
_IntegralSize __n = __orig_n; | |
return std::__1::copy(__first, __first + __n, __result); | |
} | |
template <class _InputIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
__move(_InputIterator __first, _InputIterator __last, _OutputIterator __result) | |
{ | |
for (; __first != __last; ++__first, (void) ++__result) | |
*__result = std::__1::move(*__first); | |
return __result; | |
} | |
template <class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_same<typename remove_const<_Tp>::type, _Up>::value && | |
is_trivially_copy_assignable<_Up>::value, | |
_Up* | |
>::type | |
__move(_Tp* __first, _Tp* __last, _Up* __result) | |
{ | |
const size_t __n = static_cast<size_t>(__last - __first); | |
if (__n > 0) | |
std::__1::memmove(__result, __first, __n * sizeof(_Up)); | |
return __result + __n; | |
} | |
template <class _InputIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
move(_InputIterator __first, _InputIterator __last, _OutputIterator __result) | |
{ | |
return std::__1::__move(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); | |
} | |
template <class _InputIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
__move_backward(_InputIterator __first, _InputIterator __last, _OutputIterator __result) | |
{ | |
while (__first != __last) | |
*--__result = std::__1::move(*--__last); | |
return __result; | |
} | |
template <class _Tp, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_same<typename remove_const<_Tp>::type, _Up>::value && | |
is_trivially_copy_assignable<_Up>::value, | |
_Up* | |
>::type | |
__move_backward(_Tp* __first, _Tp* __last, _Up* __result) | |
{ | |
const size_t __n = static_cast<size_t>(__last - __first); | |
if (__n > 0) | |
{ | |
__result -= __n; | |
std::__1::memmove(__result, __first, __n * sizeof(_Up)); | |
} | |
return __result; | |
} | |
template <class _BidirectionalIterator1, class _BidirectionalIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_BidirectionalIterator2 | |
move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, | |
_BidirectionalIterator2 __result) | |
{ | |
return std::__1::__move_backward(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); | |
} | |
template <class _InputIterator, class _OutputIterator, class _UnaryOperation> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op) | |
{ | |
for (; __first != __last; ++__first, (void) ++__result) | |
*__result = __op(*__first); | |
return __result; | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _BinaryOperation> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
transform(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, | |
_OutputIterator __result, _BinaryOperation __binary_op) | |
{ | |
for (; __first1 != __last1; ++__first1, (void) ++__first2, ++__result) | |
*__result = __binary_op(*__first1, *__first2); | |
return __result; | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, const _Tp& __new_value) | |
{ | |
for (; __first != __last; ++__first) | |
if (*__first == __old_value) | |
*__first = __new_value; | |
} | |
template <class _ForwardIterator, class _Predicate, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value) | |
{ | |
for (; __first != __last; ++__first) | |
if (__pred(*__first)) | |
*__first = __new_value; | |
} | |
template <class _InputIterator, class _OutputIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, | |
const _Tp& __old_value, const _Tp& __new_value) | |
{ | |
for (; __first != __last; ++__first, (void) ++__result) | |
if (*__first == __old_value) | |
*__result = __new_value; | |
else | |
*__result = *__first; | |
return __result; | |
} | |
template <class _InputIterator, class _OutputIterator, class _Predicate, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
replace_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, | |
_Predicate __pred, const _Tp& __new_value) | |
{ | |
for (; __first != __last; ++__first, (void) ++__result) | |
if (__pred(*__first)) | |
*__result = __new_value; | |
else | |
*__result = *__first; | |
return __result; | |
} | |
template <class _OutputIterator, class _Size, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_) | |
{ | |
for (; __n > 0; ++__first, (void) --__n) | |
*__first = __value_; | |
return __first; | |
} | |
template <class _Tp, class _Size, class _Up> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value && sizeof(_Tp) == 1 && | |
!is_same<_Tp, bool>::value && | |
is_integral<_Up>::value && sizeof(_Up) == 1, | |
_Tp* | |
>::type | |
__fill_n(_Tp* __first, _Size __n,_Up __value_) | |
{ | |
if (__n > 0) | |
std::__1::memset(__first, (unsigned char)__value_, (size_t)(__n)); | |
return __first + __n; | |
} | |
template <class _OutputIterator, class _Size, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_) | |
{ | |
return std::__1::__fill_n(__first, __convert_to_integral(__n), __value_); | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
__fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, forward_iterator_tag) | |
{ | |
for (; __first != __last; ++__first) | |
*__first = __value_; | |
} | |
template <class _RandomAccessIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
__fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __value_, random_access_iterator_tag) | |
{ | |
std::__1::fill_n(__first, __last - __first, __value_); | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) | |
{ | |
std::__1::__fill(__first, __last, __value_, typename iterator_traits<_ForwardIterator>::iterator_category()); | |
} | |
template <class _ForwardIterator, class _Generator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) | |
{ | |
for (; __first != __last; ++__first) | |
*__first = __gen(); | |
} | |
template <class _OutputIterator, class _Size, class _Generator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
generate_n(_OutputIterator __first, _Size __orig_n, _Generator __gen) | |
{ | |
typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; | |
_IntegralSize __n = __orig_n; | |
for (; __n > 0; ++__first, (void) --__n) | |
*__first = __gen(); | |
return __first; | |
} | |
template <class _ForwardIterator, class _Tp> | |
_ForwardIterator | |
remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) | |
{ | |
__first = std::__1::find(__first, __last, __value_); | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
{ | |
if (!(*__i == __value_)) | |
{ | |
*__first = std::__1::move(*__i); | |
++__first; | |
} | |
} | |
} | |
return __first; | |
} | |
template <class _ForwardIterator, class _Predicate> | |
_ForwardIterator | |
remove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) | |
{ | |
__first = std::__1::find_if<_ForwardIterator, typename add_lvalue_reference<_Predicate>::type> | |
(__first, __last, __pred); | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
{ | |
if (!__pred(*__i)) | |
{ | |
*__first = std::__1::move(*__i); | |
++__first; | |
} | |
} | |
} | |
return __first; | |
} | |
template <class _InputIterator, class _OutputIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value_) | |
{ | |
for (; __first != __last; ++__first) | |
{ | |
if (!(*__first == __value_)) | |
{ | |
*__result = *__first; | |
++__result; | |
} | |
} | |
return __result; | |
} | |
template <class _InputIterator, class _OutputIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
{ | |
if (!__pred(*__first)) | |
{ | |
*__result = *__first; | |
++__result; | |
} | |
} | |
return __result; | |
} | |
template <class _ForwardIterator, class _BinaryPredicate> | |
_ForwardIterator | |
unique(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) | |
{ | |
__first = std::__1::adjacent_find<_ForwardIterator, typename add_lvalue_reference<_BinaryPredicate>::type> | |
(__first, __last, __pred); | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
for (++__i; ++__i != __last;) | |
if (!__pred(*__first, *__i)) | |
*++__first = std::__1::move(*__i); | |
++__first; | |
} | |
return __first; | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
unique(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type __v; | |
return std::__1::unique(__first, __last, __equal_to<__v>()); | |
} | |
template <class _BinaryPredicate, class _InputIterator, class _OutputIterator> | |
_OutputIterator | |
__unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred, | |
input_iterator_tag, output_iterator_tag) | |
{ | |
if (__first != __last) | |
{ | |
typename iterator_traits<_InputIterator>::value_type __t(*__first); | |
*__result = __t; | |
++__result; | |
while (++__first != __last) | |
{ | |
if (!__pred(__t, *__first)) | |
{ | |
__t = *__first; | |
*__result = __t; | |
++__result; | |
} | |
} | |
} | |
return __result; | |
} | |
template <class _BinaryPredicate, class _ForwardIterator, class _OutputIterator> | |
_OutputIterator | |
__unique_copy(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, _BinaryPredicate __pred, | |
forward_iterator_tag, output_iterator_tag) | |
{ | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
*__result = *__i; | |
++__result; | |
while (++__first != __last) | |
{ | |
if (!__pred(*__i, *__first)) | |
{ | |
*__result = *__first; | |
++__result; | |
__i = __first; | |
} | |
} | |
} | |
return __result; | |
} | |
template <class _BinaryPredicate, class _InputIterator, class _ForwardIterator> | |
_ForwardIterator | |
__unique_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _BinaryPredicate __pred, | |
input_iterator_tag, forward_iterator_tag) | |
{ | |
if (__first != __last) | |
{ | |
*__result = *__first; | |
while (++__first != __last) | |
if (!__pred(*__result, *__first)) | |
*++__result = *__first; | |
++__result; | |
} | |
return __result; | |
} | |
template <class _InputIterator, class _OutputIterator, class _BinaryPredicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred) | |
{ | |
return std::__1::__unique_copy<typename add_lvalue_reference<_BinaryPredicate>::type> | |
(__first, __last, __result, __pred, | |
typename iterator_traits<_InputIterator>::iterator_category(), | |
typename iterator_traits<_OutputIterator>::iterator_category()); | |
} | |
template <class _InputIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) | |
{ | |
typedef typename iterator_traits<_InputIterator>::value_type __v; | |
return std::__1::unique_copy(__first, __last, __result, __equal_to<__v>()); | |
} | |
template <class _BidirectionalIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
__reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) | |
{ | |
while (__first != __last) | |
{ | |
if (__first == --__last) | |
break; | |
swap(*__first, *__last); | |
++__first; | |
} | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
__reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) | |
{ | |
if (__first != __last) | |
for (; __first < --__last; ++__first) | |
swap(*__first, *__last); | |
} | |
template <class _BidirectionalIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) | |
{ | |
std::__1::__reverse(__first, __last, typename iterator_traits<_BidirectionalIterator>::iterator_category()); | |
} | |
template <class _BidirectionalIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) | |
{ | |
for (; __first != __last; ++__result) | |
*__result = *--__last; | |
return __result; | |
} | |
template <class _ForwardIterator> | |
_ForwardIterator | |
__rotate_left(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
value_type __tmp = std::__1::move(*__first); | |
_ForwardIterator __lm1 = std::__1::move(std::__1::next(__first), __last, __first); | |
*__lm1 = std::__1::move(__tmp); | |
return __lm1; | |
} | |
template <class _BidirectionalIterator> | |
_BidirectionalIterator | |
__rotate_right(_BidirectionalIterator __first, _BidirectionalIterator __last) | |
{ | |
typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; | |
_BidirectionalIterator __lm1 = std::__1::prev(__last); | |
value_type __tmp = std::__1::move(*__lm1); | |
_BidirectionalIterator __fp1 = std::__1::move_backward(__first, __lm1, __last); | |
*__first = std::__1::move(__tmp); | |
return __fp1; | |
} | |
template <class _ForwardIterator> | |
_ForwardIterator | |
__rotate_forward(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) | |
{ | |
_ForwardIterator __i = __middle; | |
while (true) | |
{ | |
swap(*__first, *__i); | |
++__first; | |
if (++__i == __last) | |
break; | |
if (__first == __middle) | |
__middle = __i; | |
} | |
_ForwardIterator __r = __first; | |
if (__first != __middle) | |
{ | |
__i = __middle; | |
while (true) | |
{ | |
swap(*__first, *__i); | |
++__first; | |
if (++__i == __last) | |
{ | |
if (__first == __middle) | |
break; | |
__i = __middle; | |
} | |
else if (__first == __middle) | |
__middle = __i; | |
} | |
} | |
return __r; | |
} | |
template<typename _Integral> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Integral | |
__gcd(_Integral __x, _Integral __y) | |
{ | |
do | |
{ | |
_Integral __t = __x % __y; | |
__x = __y; | |
__y = __t; | |
} while (__y); | |
return __x; | |
} | |
template<typename _RandomAccessIterator> | |
_RandomAccessIterator | |
__rotate_gcd(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
const difference_type __m1 = __middle - __first; | |
const difference_type __m2 = __last - __middle; | |
if (__m1 == __m2) | |
{ | |
std::__1::swap_ranges(__first, __middle, __middle); | |
return __middle; | |
} | |
const difference_type __g = std::__1::__gcd(__m1, __m2); | |
for (_RandomAccessIterator __p = __first + __g; __p != __first;) | |
{ | |
value_type __t(std::__1::move(*--__p)); | |
_RandomAccessIterator __p1 = __p; | |
_RandomAccessIterator __p2 = __p1 + __m1; | |
do | |
{ | |
*__p1 = std::__1::move(*__p2); | |
__p1 = __p2; | |
const difference_type __d = __last - __p2; | |
if (__m1 < __d) | |
__p2 += __m1; | |
else | |
__p2 = __first + (__m1 - __d); | |
} while (__p2 != __p); | |
*__p1 = std::__1::move(__t); | |
} | |
return __first + __m2; | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
__rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, | |
std::__1::forward_iterator_tag) | |
{ | |
typedef typename std::__1::iterator_traits<_ForwardIterator>::value_type value_type; | |
if (std::__1::is_trivially_move_assignable<value_type>::value) | |
{ | |
if (std::__1::next(__first) == __middle) | |
return std::__1::__rotate_left(__first, __last); | |
} | |
return std::__1::__rotate_forward(__first, __middle, __last); | |
} | |
template <class _BidirectionalIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_BidirectionalIterator | |
__rotate(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, | |
std::__1::bidirectional_iterator_tag) | |
{ | |
typedef typename std::__1::iterator_traits<_BidirectionalIterator>::value_type value_type; | |
if (std::__1::is_trivially_move_assignable<value_type>::value) | |
{ | |
if (std::__1::next(__first) == __middle) | |
return std::__1::__rotate_left(__first, __last); | |
if (std::__1::next(__middle) == __last) | |
return std::__1::__rotate_right(__first, __last); | |
} | |
return std::__1::__rotate_forward(__first, __middle, __last); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_RandomAccessIterator | |
__rotate(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, | |
std::__1::random_access_iterator_tag) | |
{ | |
typedef typename std::__1::iterator_traits<_RandomAccessIterator>::value_type value_type; | |
if (std::__1::is_trivially_move_assignable<value_type>::value) | |
{ | |
if (std::__1::next(__first) == __middle) | |
return std::__1::__rotate_left(__first, __last); | |
if (std::__1::next(__middle) == __last) | |
return std::__1::__rotate_right(__first, __last); | |
return std::__1::__rotate_gcd(__first, __middle, __last); | |
} | |
return std::__1::__rotate_forward(__first, __middle, __last); | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) | |
{ | |
if (__first == __middle) | |
return __last; | |
if (__middle == __last) | |
return __first; | |
return std::__1::__rotate(__first, __middle, __last, | |
typename std::__1::iterator_traits<_ForwardIterator>::iterator_category()); | |
} | |
template <class _ForwardIterator, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) | |
{ | |
return std::__1::copy(__first, __middle, std::__1::copy(__middle, __last, __result)); | |
} | |
template <class _ForwardIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) | |
{ | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
if (__comp(*__i, *__first)) | |
__first = __i; | |
} | |
return __first; | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
min_element(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
return std::__1::min_element(__first, __last, | |
__less<typename iterator_traits<_ForwardIterator>::value_type>()); | |
} | |
template <class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Tp& | |
min(const _Tp& __a, const _Tp& __b, _Compare __comp) | |
{ | |
return __comp(__b, __a) ? __b : __a; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Tp& | |
min(const _Tp& __a, const _Tp& __b) | |
{ | |
return std::__1::min(__a, __b, __less<_Tp>()); | |
} | |
template<class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
min(initializer_list<_Tp> __t, _Compare __comp) | |
{ | |
return *std::__1::min_element(__t.begin(), __t.end(), __comp); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
min(initializer_list<_Tp> __t) | |
{ | |
return *std::__1::min_element(__t.begin(), __t.end(), __less<_Tp>()); | |
} | |
template <class _ForwardIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) | |
{ | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
if (__comp(*__first, *__i)) | |
__first = __i; | |
} | |
return __first; | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
max_element(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
return std::__1::max_element(__first, __last, | |
__less<typename iterator_traits<_ForwardIterator>::value_type>()); | |
} | |
template <class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Tp& | |
max(const _Tp& __a, const _Tp& __b, _Compare __comp) | |
{ | |
return __comp(__a, __b) ? __b : __a; | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Tp& | |
max(const _Tp& __a, const _Tp& __b) | |
{ | |
return std::__1::max(__a, __b, __less<_Tp>()); | |
} | |
template<class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
max(initializer_list<_Tp> __t, _Compare __comp) | |
{ | |
return *std::__1::max_element(__t.begin(), __t.end(), __comp); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp | |
max(initializer_list<_Tp> __t) | |
{ | |
return *std::__1::max_element(__t.begin(), __t.end(), __less<_Tp>()); | |
} | |
template <class _ForwardIterator, class _Compare> | |
std::pair<_ForwardIterator, _ForwardIterator> | |
minmax_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) | |
{ | |
std::pair<_ForwardIterator, _ForwardIterator> __result(__first, __first); | |
if (__first != __last) | |
{ | |
if (++__first != __last) | |
{ | |
if (__comp(*__first, *__result.first)) | |
__result.first = __first; | |
else | |
__result.second = __first; | |
while (++__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
if (++__first == __last) | |
{ | |
if (__comp(*__i, *__result.first)) | |
__result.first = __i; | |
else if (!__comp(*__i, *__result.second)) | |
__result.second = __i; | |
break; | |
} | |
else | |
{ | |
if (__comp(*__first, *__i)) | |
{ | |
if (__comp(*__first, *__result.first)) | |
__result.first = __first; | |
if (!__comp(*__i, *__result.second)) | |
__result.second = __i; | |
} | |
else | |
{ | |
if (__comp(*__i, *__result.first)) | |
__result.first = __i; | |
if (!__comp(*__first, *__result.second)) | |
__result.second = __first; | |
} | |
} | |
} | |
} | |
} | |
return __result; | |
} | |
template <class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
std::pair<_ForwardIterator, _ForwardIterator> | |
minmax_element(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
return std::__1::minmax_element(__first, __last, | |
__less<typename iterator_traits<_ForwardIterator>::value_type>()); | |
} | |
template<class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<const _Tp&, const _Tp&> | |
minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) | |
{ | |
return __comp(__b, __a) ? pair<const _Tp&, const _Tp&>(__b, __a) : | |
pair<const _Tp&, const _Tp&>(__a, __b); | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<const _Tp&, const _Tp&> | |
minmax(const _Tp& __a, const _Tp& __b) | |
{ | |
return std::__1::minmax(__a, __b, __less<_Tp>()); | |
} | |
template<class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_Tp, _Tp> | |
minmax(initializer_list<_Tp> __t, _Compare __comp) | |
{ | |
typedef typename initializer_list<_Tp>::const_iterator _Iter; | |
_Iter __first = __t.begin(); | |
_Iter __last = __t.end(); | |
std::pair<_Tp, _Tp> __result(*__first, *__first); | |
++__first; | |
if (__t.size() % 2 == 0) | |
{ | |
if (__comp(*__first, __result.first)) | |
__result.first = *__first; | |
else | |
__result.second = *__first; | |
++__first; | |
} | |
while (__first != __last) | |
{ | |
_Tp __prev = *__first++; | |
if (__comp(*__first, __prev)) { | |
if ( __comp(*__first, __result.first)) __result.first = *__first; | |
if (!__comp(__prev, __result.second)) __result.second = __prev; | |
} | |
else { | |
if ( __comp(__prev, __result.first)) __result.first = __prev; | |
if (!__comp(*__first, __result.second)) __result.second = *__first; | |
} | |
__first++; | |
} | |
return __result; | |
} | |
template<class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_Tp, _Tp> | |
minmax(initializer_list<_Tp> __t) | |
{ | |
return std::__1::minmax(__t, __less<_Tp>()); | |
} | |
template <unsigned long long _Xp, size_t _Rp> | |
struct __log2_imp | |
{ | |
static const size_t value = _Xp & ((unsigned long long)(1) << _Rp) ? _Rp | |
: __log2_imp<_Xp, _Rp - 1>::value; | |
}; | |
template <unsigned long long _Xp> | |
struct __log2_imp<_Xp, 0> | |
{ | |
static const size_t value = 0; | |
}; | |
template <size_t _Rp> | |
struct __log2_imp<0, _Rp> | |
{ | |
static const size_t value = _Rp + 1; | |
}; | |
template <class _UI, _UI _Xp> | |
struct __log2 | |
{ | |
static const size_t value = __log2_imp<_Xp, | |
sizeof(_UI) * 8 - 1>::value; | |
}; | |
template<class _Engine, class _UIntType> | |
class __independent_bits_engine | |
{ | |
public: | |
typedef _UIntType result_type; | |
private: | |
typedef typename _Engine::result_type _Engine_result_type; | |
typedef typename conditional | |
< | |
sizeof(_Engine_result_type) <= sizeof(result_type), | |
result_type, | |
_Engine_result_type | |
>::type _Working_result_type; | |
_Engine& __e_; | |
size_t __w_; | |
size_t __w0_; | |
size_t __n_; | |
size_t __n0_; | |
_Working_result_type __y0_; | |
_Working_result_type __y1_; | |
_Engine_result_type __mask0_; | |
_Engine_result_type __mask1_; | |
static constexpr const _Working_result_type _Rp = _Engine::max() - _Engine::min() | |
+ _Working_result_type(1); | |
static constexpr const size_t __m = __log2<_Working_result_type, _Rp>::value; | |
static constexpr const size_t _WDt = numeric_limits<_Working_result_type>::digits; | |
static constexpr const size_t _EDt = numeric_limits<_Engine_result_type>::digits; | |
public: | |
__independent_bits_engine(_Engine& __e, size_t __w); | |
result_type operator()() {return __eval(integral_constant<bool, _Rp != 0>());} | |
private: | |
result_type __eval(false_type); | |
result_type __eval(true_type); | |
}; | |
template<class _Engine, class _UIntType> | |
__independent_bits_engine<_Engine, _UIntType> | |
::__independent_bits_engine(_Engine& __e, size_t __w) | |
: __e_(__e), | |
__w_(__w) | |
{ | |
__n_ = __w_ / __m + (__w_ % __m != 0); | |
__w0_ = __w_ / __n_; | |
if (_Rp == 0) | |
__y0_ = _Rp; | |
else if (__w0_ < _WDt) | |
__y0_ = (_Rp >> __w0_) << __w0_; | |
else | |
__y0_ = 0; | |
if (_Rp - __y0_ > __y0_ / __n_) | |
{ | |
++__n_; | |
__w0_ = __w_ / __n_; | |
if (__w0_ < _WDt) | |
__y0_ = (_Rp >> __w0_) << __w0_; | |
else | |
__y0_ = 0; | |
} | |
__n0_ = __n_ - __w_ % __n_; | |
if (__w0_ < _WDt - 1) | |
__y1_ = (_Rp >> (__w0_ + 1)) << (__w0_ + 1); | |
else | |
__y1_ = 0; | |
__mask0_ = __w0_ > 0 ? _Engine_result_type(~0) >> (_EDt - __w0_) : | |
_Engine_result_type(0); | |
__mask1_ = __w0_ < _EDt - 1 ? | |
_Engine_result_type(~0) >> (_EDt - (__w0_ + 1)) : | |
_Engine_result_type(~0); | |
} | |
template<class _Engine, class _UIntType> | |
inline | |
_UIntType | |
__independent_bits_engine<_Engine, _UIntType>::__eval(false_type) | |
{ | |
return static_cast<result_type>(__e_() & __mask0_); | |
} | |
template<class _Engine, class _UIntType> | |
_UIntType | |
__independent_bits_engine<_Engine, _UIntType>::__eval(true_type) | |
{ | |
result_type _Sp = 0; | |
for (size_t __k = 0; __k < __n0_; ++__k) | |
{ | |
_Engine_result_type __u; | |
do | |
{ | |
__u = __e_() - _Engine::min(); | |
} while (__u >= __y0_); | |
if (__w0_ < _WDt) | |
_Sp <<= __w0_; | |
else | |
_Sp = 0; | |
_Sp += __u & __mask0_; | |
} | |
for (size_t __k = __n0_; __k < __n_; ++__k) | |
{ | |
_Engine_result_type __u; | |
do | |
{ | |
__u = __e_() - _Engine::min(); | |
} while (__u >= __y1_); | |
if (__w0_ < _WDt - 1) | |
_Sp <<= __w0_ + 1; | |
else | |
_Sp = 0; | |
_Sp += __u & __mask1_; | |
} | |
return _Sp; | |
} | |
template<class _IntType = int> | |
class uniform_int_distribution | |
{ | |
public: | |
typedef _IntType result_type; | |
class param_type | |
{ | |
result_type __a_; | |
result_type __b_; | |
public: | |
typedef uniform_int_distribution distribution_type; | |
explicit param_type(result_type __a = 0, | |
result_type __b = numeric_limits<result_type>::max()) | |
: __a_(__a), __b_(__b) {} | |
result_type a() const {return __a_;} | |
result_type b() const {return __b_;} | |
friend bool operator==(const param_type& __x, const param_type& __y) | |
{return __x.__a_ == __y.__a_ && __x.__b_ == __y.__b_;} | |
friend bool operator!=(const param_type& __x, const param_type& __y) | |
{return !(__x == __y);} | |
}; | |
private: | |
param_type __p_; | |
public: | |
explicit uniform_int_distribution(result_type __a = 0, | |
result_type __b = numeric_limits<result_type>::max()) | |
: __p_(param_type(__a, __b)) {} | |
explicit uniform_int_distribution(const param_type& __p) : __p_(__p) {} | |
void reset() {} | |
template<class _URNG> result_type operator()(_URNG& __g) | |
{return (*this)(__g, __p_);} | |
template<class _URNG> result_type operator()(_URNG& __g, const param_type& __p); | |
result_type a() const {return __p_.a();} | |
result_type b() const {return __p_.b();} | |
param_type param() const {return __p_;} | |
void param(const param_type& __p) {__p_ = __p;} | |
result_type min() const {return a();} | |
result_type max() const {return b();} | |
friend bool operator==(const uniform_int_distribution& __x, | |
const uniform_int_distribution& __y) | |
{return __x.__p_ == __y.__p_;} | |
friend bool operator!=(const uniform_int_distribution& __x, | |
const uniform_int_distribution& __y) | |
{return !(__x == __y);} | |
}; | |
template<class _IntType> | |
template<class _URNG> | |
typename uniform_int_distribution<_IntType>::result_type | |
uniform_int_distribution<_IntType>::operator()(_URNG& __g, const param_type& __p) | |
{ | |
typedef typename conditional<sizeof(result_type) <= sizeof(uint32_t), | |
uint32_t, uint64_t>::type _UIntType; | |
const _UIntType _Rp = __p.b() - __p.a() + _UIntType(1); | |
if (_Rp == 1) | |
return __p.a(); | |
const size_t _Dt = numeric_limits<_UIntType>::digits; | |
typedef __independent_bits_engine<_URNG, _UIntType> _Eng; | |
if (_Rp == 0) | |
return static_cast<result_type>(_Eng(__g, _Dt)()); | |
size_t __w = _Dt - __clz(_Rp) - 1; | |
if ((_Rp & (std::numeric_limits<_UIntType>::max() >> (_Dt - __w))) != 0) | |
++__w; | |
_Eng __e(__g, __w); | |
_UIntType __u; | |
do | |
{ | |
__u = __e(); | |
} while (__u >= _Rp); | |
return static_cast<result_type>(__u + __p.a()); | |
} | |
class __attribute__ ((__type_visibility__("default"))) __rs_default; | |
__attribute__ ((__visibility__("default"))) __rs_default __rs_get(); | |
class __attribute__ ((__type_visibility__("default"))) __rs_default | |
{ | |
static unsigned __c_; | |
__rs_default(); | |
public: | |
typedef uint_fast32_t result_type; | |
static const result_type _Min = 0; | |
static const result_type _Max = 0xFFFFFFFF; | |
__rs_default(const __rs_default&); | |
~__rs_default(); | |
result_type operator()(); | |
static constexpr result_type min() {return _Min;} | |
static constexpr result_type max() {return _Max;} | |
friend __attribute__ ((__visibility__("default"))) __rs_default __rs_get(); | |
}; | |
__attribute__ ((__visibility__("default"))) __rs_default __rs_get(); | |
template <class _RandomAccessIterator> | |
void | |
random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
typedef uniform_int_distribution<ptrdiff_t> _Dp; | |
typedef typename _Dp::param_type _Pp; | |
difference_type __d = __last - __first; | |
if (__d > 1) | |
{ | |
_Dp __uid; | |
__rs_default __g = __rs_get(); | |
for (--__last, --__d; __first < __last; ++__first, --__d) | |
{ | |
difference_type __i = __uid(__g, _Pp(0, __d)); | |
if (__i != difference_type(0)) | |
swap(*__first, *(__first + __i)); | |
} | |
} | |
} | |
template <class _RandomAccessIterator, class _RandomNumberGenerator> | |
void | |
random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, | |
_RandomNumberGenerator&& __rand) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
difference_type __d = __last - __first; | |
if (__d > 1) | |
{ | |
for (--__last; __first < __last; ++__first, --__d) | |
{ | |
difference_type __i = __rand(__d); | |
swap(*__first, *(__first + __i)); | |
} | |
} | |
} | |
template<class _RandomAccessIterator, class _UniformRandomNumberGenerator> | |
void shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, | |
_UniformRandomNumberGenerator&& __g) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
typedef uniform_int_distribution<ptrdiff_t> _Dp; | |
typedef typename _Dp::param_type _Pp; | |
difference_type __d = __last - __first; | |
if (__d > 1) | |
{ | |
_Dp __uid; | |
for (--__last, --__d; __first < __last; ++__first, --__d) | |
{ | |
difference_type __i = __uid(__g, _Pp(0, __d)); | |
if (__i != difference_type(0)) | |
swap(*__first, *(__first + __i)); | |
} | |
} | |
} | |
template <class _InputIterator, class _Predicate> | |
bool | |
is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
if (!__pred(*__first)) | |
break; | |
if ( __first == __last ) | |
return true; | |
++__first; | |
for (; __first != __last; ++__first) | |
if (__pred(*__first)) | |
return false; | |
return true; | |
} | |
template <class _Predicate, class _ForwardIterator> | |
_ForwardIterator | |
__partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, forward_iterator_tag) | |
{ | |
while (true) | |
{ | |
if (__first == __last) | |
return __first; | |
if (!__pred(*__first)) | |
break; | |
++__first; | |
} | |
for (_ForwardIterator __p = __first; ++__p != __last;) | |
{ | |
if (__pred(*__p)) | |
{ | |
swap(*__first, *__p); | |
++__first; | |
} | |
} | |
return __first; | |
} | |
template <class _Predicate, class _BidirectionalIterator> | |
_BidirectionalIterator | |
__partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, | |
bidirectional_iterator_tag) | |
{ | |
while (true) | |
{ | |
while (true) | |
{ | |
if (__first == __last) | |
return __first; | |
if (!__pred(*__first)) | |
break; | |
++__first; | |
} | |
do | |
{ | |
if (__first == --__last) | |
return __first; | |
} while (!__pred(*__last)); | |
swap(*__first, *__last); | |
++__first; | |
} | |
} | |
template <class _ForwardIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) | |
{ | |
return std::__1::__partition<typename add_lvalue_reference<_Predicate>::type> | |
(__first, __last, __pred, typename iterator_traits<_ForwardIterator>::iterator_category()); | |
} | |
template <class _InputIterator, class _OutputIterator1, | |
class _OutputIterator2, class _Predicate> | |
pair<_OutputIterator1, _OutputIterator2> | |
partition_copy(_InputIterator __first, _InputIterator __last, | |
_OutputIterator1 __out_true, _OutputIterator2 __out_false, | |
_Predicate __pred) | |
{ | |
for (; __first != __last; ++__first) | |
{ | |
if (__pred(*__first)) | |
{ | |
*__out_true = *__first; | |
++__out_true; | |
} | |
else | |
{ | |
*__out_false = *__first; | |
++__out_false; | |
} | |
} | |
return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); | |
} | |
template<class _ForwardIterator, class _Predicate> | |
_ForwardIterator | |
partition_point(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; | |
difference_type __len = std::__1::distance(__first, __last); | |
while (__len != 0) | |
{ | |
difference_type __l2 = __len / 2; | |
_ForwardIterator __m = __first; | |
std::__1::advance(__m, __l2); | |
if (__pred(*__m)) | |
{ | |
__first = ++__m; | |
__len -= __l2 + 1; | |
} | |
else | |
__len = __l2; | |
} | |
return __first; | |
} | |
template <class _Predicate, class _ForwardIterator, class _Distance, class _Pair> | |
_ForwardIterator | |
__stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, | |
_Distance __len, _Pair __p, forward_iterator_tag __fit) | |
{ | |
if (__len == 1) | |
return __first; | |
if (__len == 2) | |
{ | |
_ForwardIterator __m = __first; | |
if (__pred(*++__m)) | |
{ | |
swap(*__first, *__m); | |
return __m; | |
} | |
return __first; | |
} | |
if (__len <= __p.second) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h(__p.first, __d); | |
value_type* __t = __p.first; | |
::new(__t) value_type(std::__1::move(*__first)); | |
__d.__incr((value_type*)0); | |
++__t; | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
{ | |
if (__pred(*__i)) | |
{ | |
*__first = std::__1::move(*__i); | |
++__first; | |
} | |
else | |
{ | |
::new(__t) value_type(std::__1::move(*__i)); | |
__d.__incr((value_type*)0); | |
++__t; | |
} | |
} | |
__i = __first; | |
for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, ++__i) | |
*__i = std::__1::move(*__t2); | |
return __first; | |
} | |
_ForwardIterator __m = __first; | |
_Distance __len2 = __len / 2; | |
std::__1::advance(__m, __len2); | |
typedef typename add_lvalue_reference<_Predicate>::type _PredRef; | |
_ForwardIterator __first_false = __stable_partition<_PredRef>(__first, __m, __pred, __len2, __p, __fit); | |
_ForwardIterator __m1 = __m; | |
_ForwardIterator __second_false = __last; | |
_Distance __len_half = __len - __len2; | |
while (__pred(*__m1)) | |
{ | |
if (++__m1 == __last) | |
goto __second_half_done; | |
--__len_half; | |
} | |
__second_false = __stable_partition<_PredRef>(__m1, __last, __pred, __len_half, __p, __fit); | |
__second_half_done: | |
return std::__1::rotate(__first_false, __m, __second_false); | |
} | |
struct __return_temporary_buffer | |
{ | |
template <class _Tp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void operator()(_Tp* __p) const {std::__1::return_temporary_buffer(__p);} | |
}; | |
template <class _Predicate, class _ForwardIterator> | |
_ForwardIterator | |
__stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, | |
forward_iterator_tag) | |
{ | |
const unsigned __alloc_limit = 3; | |
while (true) | |
{ | |
if (__first == __last) | |
return __first; | |
if (!__pred(*__first)) | |
break; | |
++__first; | |
} | |
typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; | |
typedef typename iterator_traits<_ForwardIterator>::value_type value_type; | |
difference_type __len = std::__1::distance(__first, __last); | |
pair<value_type*, ptrdiff_t> __p(0, 0); | |
unique_ptr<value_type, __return_temporary_buffer> __h; | |
if (__len >= __alloc_limit) | |
{ | |
__p = std::__1::get_temporary_buffer<value_type>(__len); | |
__h.reset(__p.first); | |
} | |
return __stable_partition<typename add_lvalue_reference<_Predicate>::type> | |
(__first, __last, __pred, __len, __p, forward_iterator_tag()); | |
} | |
template <class _Predicate, class _BidirectionalIterator, class _Distance, class _Pair> | |
_BidirectionalIterator | |
__stable_partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, | |
_Distance __len, _Pair __p, bidirectional_iterator_tag __bit) | |
{ | |
if (__len == 2) | |
{ | |
swap(*__first, *__last); | |
return __last; | |
} | |
if (__len == 3) | |
{ | |
_BidirectionalIterator __m = __first; | |
if (__pred(*++__m)) | |
{ | |
swap(*__first, *__m); | |
swap(*__m, *__last); | |
return __last; | |
} | |
swap(*__m, *__last); | |
swap(*__first, *__m); | |
return __m; | |
} | |
if (__len <= __p.second) | |
{ | |
typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h(__p.first, __d); | |
value_type* __t = __p.first; | |
::new(__t) value_type(std::__1::move(*__first)); | |
__d.__incr((value_type*)0); | |
++__t; | |
_BidirectionalIterator __i = __first; | |
while (++__i != __last) | |
{ | |
if (__pred(*__i)) | |
{ | |
*__first = std::__1::move(*__i); | |
++__first; | |
} | |
else | |
{ | |
::new(__t) value_type(std::__1::move(*__i)); | |
__d.__incr((value_type*)0); | |
++__t; | |
} | |
} | |
*__first = std::__1::move(*__i); | |
__i = ++__first; | |
for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, ++__i) | |
*__i = std::__1::move(*__t2); | |
return __first; | |
} | |
_BidirectionalIterator __m = __first; | |
_Distance __len2 = __len / 2; | |
std::__1::advance(__m, __len2); | |
_BidirectionalIterator __m1 = __m; | |
_BidirectionalIterator __first_false = __first; | |
_Distance __len_half = __len2; | |
while (!__pred(*--__m1)) | |
{ | |
if (__m1 == __first) | |
goto __first_half_done; | |
--__len_half; | |
} | |
typedef typename add_lvalue_reference<_Predicate>::type _PredRef; | |
__first_false = __stable_partition<_PredRef>(__first, __m1, __pred, __len_half, __p, __bit); | |
__first_half_done: | |
__m1 = __m; | |
_BidirectionalIterator __second_false = __last; | |
++__second_false; | |
__len_half = __len - __len2; | |
while (__pred(*__m1)) | |
{ | |
if (++__m1 == __last) | |
goto __second_half_done; | |
--__len_half; | |
} | |
__second_false = __stable_partition<_PredRef>(__m1, __last, __pred, __len_half, __p, __bit); | |
__second_half_done: | |
return std::__1::rotate(__first_false, __m, __second_false); | |
} | |
template <class _Predicate, class _BidirectionalIterator> | |
_BidirectionalIterator | |
__stable_partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, | |
bidirectional_iterator_tag) | |
{ | |
typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; | |
typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; | |
const difference_type __alloc_limit = 4; | |
while (true) | |
{ | |
if (__first == __last) | |
return __first; | |
if (!__pred(*__first)) | |
break; | |
++__first; | |
} | |
do | |
{ | |
if (__first == --__last) | |
return __first; | |
} while (!__pred(*__last)); | |
difference_type __len = std::__1::distance(__first, __last) + 1; | |
pair<value_type*, ptrdiff_t> __p(0, 0); | |
unique_ptr<value_type, __return_temporary_buffer> __h; | |
if (__len >= __alloc_limit) | |
{ | |
__p = std::__1::get_temporary_buffer<value_type>(__len); | |
__h.reset(__p.first); | |
} | |
return __stable_partition<typename add_lvalue_reference<_Predicate>::type> | |
(__first, __last, __pred, __len, __p, bidirectional_iterator_tag()); | |
} | |
template <class _ForwardIterator, class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) | |
{ | |
return __stable_partition<typename add_lvalue_reference<_Predicate>::type> | |
(__first, __last, __pred, typename iterator_traits<_ForwardIterator>::iterator_category()); | |
} | |
template <class _ForwardIterator, class _Compare> | |
_ForwardIterator | |
is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) | |
{ | |
if (__first != __last) | |
{ | |
_ForwardIterator __i = __first; | |
while (++__i != __last) | |
{ | |
if (__comp(*__i, *__first)) | |
return __i; | |
__first = __i; | |
} | |
} | |
return __last; | |
} | |
template<class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
return std::__1::is_sorted_until(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>()); | |
} | |
template <class _ForwardIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) | |
{ | |
return std::__1::is_sorted_until(__first, __last, __comp) == __last; | |
} | |
template<class _ForwardIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
is_sorted(_ForwardIterator __first, _ForwardIterator __last) | |
{ | |
return std::__1::is_sorted(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>()); | |
} | |
template <class _Compare, class _ForwardIterator> | |
unsigned | |
__sort3(_ForwardIterator __x, _ForwardIterator __y, _ForwardIterator __z, _Compare __c) | |
{ | |
unsigned __r = 0; | |
if (!__c(*__y, *__x)) | |
{ | |
if (!__c(*__z, *__y)) | |
return __r; | |
swap(*__y, *__z); | |
__r = 1; | |
if (__c(*__y, *__x)) | |
{ | |
swap(*__x, *__y); | |
__r = 2; | |
} | |
return __r; | |
} | |
if (__c(*__z, *__y)) | |
{ | |
swap(*__x, *__z); | |
__r = 1; | |
return __r; | |
} | |
swap(*__x, *__y); | |
__r = 1; | |
if (__c(*__z, *__y)) | |
{ | |
swap(*__y, *__z); | |
__r = 2; | |
} | |
return __r; | |
} | |
template <class _Compare, class _ForwardIterator> | |
unsigned | |
__sort4(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, | |
_ForwardIterator __x4, _Compare __c) | |
{ | |
unsigned __r = __sort3<_Compare>(__x1, __x2, __x3, __c); | |
if (__c(*__x4, *__x3)) | |
{ | |
swap(*__x3, *__x4); | |
++__r; | |
if (__c(*__x3, *__x2)) | |
{ | |
swap(*__x2, *__x3); | |
++__r; | |
if (__c(*__x2, *__x1)) | |
{ | |
swap(*__x1, *__x2); | |
++__r; | |
} | |
} | |
} | |
return __r; | |
} | |
template <class _Compare, class _ForwardIterator> | |
unsigned | |
__sort5(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, | |
_ForwardIterator __x4, _ForwardIterator __x5, _Compare __c) | |
{ | |
unsigned __r = __sort4<_Compare>(__x1, __x2, __x3, __x4, __c); | |
if (__c(*__x5, *__x4)) | |
{ | |
swap(*__x4, *__x5); | |
++__r; | |
if (__c(*__x4, *__x3)) | |
{ | |
swap(*__x3, *__x4); | |
++__r; | |
if (__c(*__x3, *__x2)) | |
{ | |
swap(*__x2, *__x3); | |
++__r; | |
if (__c(*__x2, *__x1)) | |
{ | |
swap(*__x1, *__x2); | |
++__r; | |
} | |
} | |
} | |
} | |
return __r; | |
} | |
template <class _Compare, class _BirdirectionalIterator> | |
void | |
__selection_sort(_BirdirectionalIterator __first, _BirdirectionalIterator __last, _Compare __comp) | |
{ | |
_BirdirectionalIterator __lm1 = __last; | |
for (--__lm1; __first != __lm1; ++__first) | |
{ | |
_BirdirectionalIterator __i = std::__1::min_element<_BirdirectionalIterator, | |
typename add_lvalue_reference<_Compare>::type> | |
(__first, __last, __comp); | |
if (__i != __first) | |
swap(*__first, *__i); | |
} | |
} | |
template <class _Compare, class _BirdirectionalIterator> | |
void | |
__insertion_sort(_BirdirectionalIterator __first, _BirdirectionalIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_BirdirectionalIterator>::value_type value_type; | |
if (__first != __last) | |
{ | |
_BirdirectionalIterator __i = __first; | |
for (++__i; __i != __last; ++__i) | |
{ | |
_BirdirectionalIterator __j = __i; | |
value_type __t(std::__1::move(*__j)); | |
for (_BirdirectionalIterator __k = __i; __k != __first && __comp(__t, *--__k); --__j) | |
*__j = std::__1::move(*__k); | |
*__j = std::__1::move(__t); | |
} | |
} | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__insertion_sort_3(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
_RandomAccessIterator __j = __first+2; | |
__sort3<_Compare>(__first, __first+1, __j, __comp); | |
for (_RandomAccessIterator __i = __j+1; __i != __last; ++__i) | |
{ | |
if (__comp(*__i, *__j)) | |
{ | |
value_type __t(std::__1::move(*__i)); | |
_RandomAccessIterator __k = __j; | |
__j = __i; | |
do | |
{ | |
*__j = std::__1::move(*__k); | |
__j = __k; | |
} while (__j != __first && __comp(__t, *--__k)); | |
*__j = std::__1::move(__t); | |
} | |
__j = __i; | |
} | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
bool | |
__insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
switch (__last - __first) | |
{ | |
case 0: | |
case 1: | |
return true; | |
case 2: | |
if (__comp(*--__last, *__first)) | |
swap(*__first, *__last); | |
return true; | |
case 3: | |
std::__1::__sort3<_Compare>(__first, __first+1, --__last, __comp); | |
return true; | |
case 4: | |
std::__1::__sort4<_Compare>(__first, __first+1, __first+2, --__last, __comp); | |
return true; | |
case 5: | |
std::__1::__sort5<_Compare>(__first, __first+1, __first+2, __first+3, --__last, __comp); | |
return true; | |
} | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
_RandomAccessIterator __j = __first+2; | |
__sort3<_Compare>(__first, __first+1, __j, __comp); | |
const unsigned __limit = 8; | |
unsigned __count = 0; | |
for (_RandomAccessIterator __i = __j+1; __i != __last; ++__i) | |
{ | |
if (__comp(*__i, *__j)) | |
{ | |
value_type __t(std::__1::move(*__i)); | |
_RandomAccessIterator __k = __j; | |
__j = __i; | |
do | |
{ | |
*__j = std::__1::move(*__k); | |
__j = __k; | |
} while (__j != __first && __comp(__t, *--__k)); | |
*__j = std::__1::move(__t); | |
if (++__count == __limit) | |
return ++__i == __last; | |
} | |
__j = __i; | |
} | |
return true; | |
} | |
template <class _Compare, class _BirdirectionalIterator> | |
void | |
__insertion_sort_move(_BirdirectionalIterator __first1, _BirdirectionalIterator __last1, | |
typename iterator_traits<_BirdirectionalIterator>::value_type* __first2, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_BirdirectionalIterator>::value_type value_type; | |
if (__first1 != __last1) | |
{ | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h(__first2, __d); | |
value_type* __last2 = __first2; | |
::new(__last2) value_type(std::__1::move(*__first1)); | |
__d.__incr((value_type*)0); | |
for (++__last2; ++__first1 != __last1; ++__last2) | |
{ | |
value_type* __j2 = __last2; | |
value_type* __i2 = __j2; | |
if (__comp(*__first1, *--__i2)) | |
{ | |
::new(__j2) value_type(std::__1::move(*__i2)); | |
__d.__incr((value_type*)0); | |
for (--__j2; __i2 != __first2 && __comp(*__first1, *--__i2); --__j2) | |
*__j2 = std::__1::move(*__i2); | |
*__j2 = std::__1::move(*__first1); | |
} | |
else | |
{ | |
::new(__j2) value_type(std::__1::move(*__first1)); | |
__d.__incr((value_type*)0); | |
} | |
} | |
__h.release(); | |
} | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
const difference_type __limit = is_trivially_copy_constructible<value_type>::value && | |
is_trivially_copy_assignable<value_type>::value ? 30 : 6; | |
while (true) | |
{ | |
__restart: | |
difference_type __len = __last - __first; | |
switch (__len) | |
{ | |
case 0: | |
case 1: | |
return; | |
case 2: | |
if (__comp(*--__last, *__first)) | |
swap(*__first, *__last); | |
return; | |
case 3: | |
std::__1::__sort3<_Compare>(__first, __first+1, --__last, __comp); | |
return; | |
case 4: | |
std::__1::__sort4<_Compare>(__first, __first+1, __first+2, --__last, __comp); | |
return; | |
case 5: | |
std::__1::__sort5<_Compare>(__first, __first+1, __first+2, __first+3, --__last, __comp); | |
return; | |
} | |
if (__len <= __limit) | |
{ | |
std::__1::__insertion_sort_3<_Compare>(__first, __last, __comp); | |
return; | |
} | |
_RandomAccessIterator __m = __first; | |
_RandomAccessIterator __lm1 = __last; | |
--__lm1; | |
unsigned __n_swaps; | |
{ | |
difference_type __delta; | |
if (__len >= 1000) | |
{ | |
__delta = __len/2; | |
__m += __delta; | |
__delta /= 2; | |
__n_swaps = std::__1::__sort5<_Compare>(__first, __first + __delta, __m, __m+__delta, __lm1, __comp); | |
} | |
else | |
{ | |
__delta = __len/2; | |
__m += __delta; | |
__n_swaps = std::__1::__sort3<_Compare>(__first, __m, __lm1, __comp); | |
} | |
} | |
_RandomAccessIterator __i = __first; | |
_RandomAccessIterator __j = __lm1; | |
if (!__comp(*__i, *__m)) | |
{ | |
while (true) | |
{ | |
if (__i == --__j) | |
{ | |
++__i; | |
__j = __last; | |
if (!__comp(*__first, *--__j)) | |
{ | |
while (true) | |
{ | |
if (__i == __j) | |
return; | |
if (__comp(*__first, *__i)) | |
{ | |
swap(*__i, *__j); | |
++__n_swaps; | |
++__i; | |
break; | |
} | |
++__i; | |
} | |
} | |
if (__i == __j) | |
return; | |
while (true) | |
{ | |
while (!__comp(*__first, *__i)) | |
++__i; | |
while (__comp(*__first, *--__j)) | |
; | |
if (__i >= __j) | |
break; | |
swap(*__i, *__j); | |
++__n_swaps; | |
++__i; | |
} | |
__first = __i; | |
goto __restart; | |
} | |
if (__comp(*__j, *__m)) | |
{ | |
swap(*__i, *__j); | |
++__n_swaps; | |
break; | |
} | |
} | |
} | |
++__i; | |
if (__i < __j) | |
{ | |
while (true) | |
{ | |
while (__comp(*__i, *__m)) | |
++__i; | |
while (!__comp(*--__j, *__m)) | |
; | |
if (__i > __j) | |
break; | |
swap(*__i, *__j); | |
++__n_swaps; | |
if (__m == __i) | |
__m = __j; | |
++__i; | |
} | |
} | |
if (__i != __m && __comp(*__m, *__i)) | |
{ | |
swap(*__i, *__m); | |
++__n_swaps; | |
} | |
if (__n_swaps == 0) | |
{ | |
bool __fs = std::__1::__insertion_sort_incomplete<_Compare>(__first, __i, __comp); | |
if (std::__1::__insertion_sort_incomplete<_Compare>(__i+1, __last, __comp)) | |
{ | |
if (__fs) | |
return; | |
__last = __i; | |
continue; | |
} | |
else | |
{ | |
if (__fs) | |
{ | |
__first = ++__i; | |
continue; | |
} | |
} | |
} | |
if (__i - __first < __last - __i) | |
{ | |
std::__1::__sort<_Compare>(__first, __i, __comp); | |
__first = ++__i; | |
} | |
else | |
{ | |
std::__1::__sort<_Compare>(__i+1, __last, __comp); | |
__last = __i; | |
} | |
} | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__sort<_Comp_ref>(__first, __last, __comp); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
std::__1::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort(_Tp** __first, _Tp** __last) | |
{ | |
std::__1::sort((size_t*)__first, (size_t*)__last, __less<size_t>()); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last) | |
{ | |
std::__1::sort(__first.base(), __last.base()); | |
} | |
template <class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
std::__1::sort<_Tp*, _Comp_ref>(__first.base(), __last.base(), __comp); | |
} | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<char>&, char*>(char*, char*, __less<char>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<short>&, short*>(short*, short*, __less<short>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, __less<unsigned short>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<int>&, int*>(int*, int*, __less<int>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<unsigned>&, unsigned*>(unsigned*, unsigned*, __less<unsigned>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<long>&, long*>(long*, long*, __less<long>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, __less<unsigned long>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<long long>&, long long*>(long long*, long long*, __less<long long>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<unsigned long long>&, unsigned long long*>(unsigned long long*, unsigned long long*, __less<unsigned long long>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<float>&, float*>(float*, float*, __less<float>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<double>&, double*>(double*, double*, __less<double>&); | |
extern template __attribute__ ((__visibility__("default"))) void __sort<__less<long double>&, long double*>(long double*, long double*, __less<long double>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<char>&, char*>(char*, char*, __less<char>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<wchar_t>&, wchar_t*>(wchar_t*, wchar_t*, __less<wchar_t>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<signed char>&, signed char*>(signed char*, signed char*, __less<signed char>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, __less<unsigned char>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<short>&, short*>(short*, short*, __less<short>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, __less<unsigned short>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<int>&, int*>(int*, int*, __less<int>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<unsigned>&, unsigned*>(unsigned*, unsigned*, __less<unsigned>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<long>&, long*>(long*, long*, __less<long>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, __less<unsigned long>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<long long>&, long long*>(long long*, long long*, __less<long long>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<unsigned long long>&, unsigned long long*>(unsigned long long*, unsigned long long*, __less<unsigned long long>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<float>&, float*>(float*, float*, __less<float>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<double>&, double*>(double*, double*, __less<double>&); | |
extern template __attribute__ ((__visibility__("default"))) bool __insertion_sort_incomplete<__less<long double>&, long double*>(long double*, long double*, __less<long double>&); | |
extern template __attribute__ ((__visibility__("default"))) unsigned __sort5<__less<long double>&, long double*>(long double*, long double*, long double*, long double*, long double*, __less<long double>&); | |
template <class _Compare, class _ForwardIterator, class _Tp> | |
_ForwardIterator | |
__lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; | |
difference_type __len = std::__1::distance(__first, __last); | |
while (__len != 0) | |
{ | |
difference_type __l2 = __len / 2; | |
_ForwardIterator __m = __first; | |
std::__1::advance(__m, __l2); | |
if (__comp(*__m, __value_)) | |
{ | |
__first = ++__m; | |
__len -= __l2 + 1; | |
} | |
else | |
__len = __l2; | |
} | |
return __first; | |
} | |
template <class _ForwardIterator, class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __lower_bound<_Comp_ref>(__first, __last, __value_, __comp); | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) | |
{ | |
return std::__1::lower_bound(__first, __last, __value_, | |
__less<typename iterator_traits<_ForwardIterator>::value_type, _Tp>()); | |
} | |
template <class _Compare, class _ForwardIterator, class _Tp> | |
_ForwardIterator | |
__upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; | |
difference_type __len = std::__1::distance(__first, __last); | |
while (__len != 0) | |
{ | |
difference_type __l2 = __len / 2; | |
_ForwardIterator __m = __first; | |
std::__1::advance(__m, __l2); | |
if (__comp(__value_, *__m)) | |
__len = __l2; | |
else | |
{ | |
__first = ++__m; | |
__len -= __l2 + 1; | |
} | |
} | |
return __first; | |
} | |
template <class _ForwardIterator, class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __upper_bound<_Comp_ref>(__first, __last, __value_, __comp); | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_ForwardIterator | |
upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) | |
{ | |
return std::__1::upper_bound(__first, __last, __value_, | |
__less<_Tp, typename iterator_traits<_ForwardIterator>::value_type>()); | |
} | |
template <class _Compare, class _ForwardIterator, class _Tp> | |
pair<_ForwardIterator, _ForwardIterator> | |
__equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; | |
difference_type __len = std::__1::distance(__first, __last); | |
while (__len != 0) | |
{ | |
difference_type __l2 = __len / 2; | |
_ForwardIterator __m = __first; | |
std::__1::advance(__m, __l2); | |
if (__comp(*__m, __value_)) | |
{ | |
__first = ++__m; | |
__len -= __l2 + 1; | |
} | |
else if (__comp(__value_, *__m)) | |
{ | |
__last = __m; | |
__len = __l2; | |
} | |
else | |
{ | |
_ForwardIterator __mp1 = __m; | |
return pair<_ForwardIterator, _ForwardIterator> | |
( | |
__lower_bound<_Compare>(__first, __m, __value_, __comp), | |
__upper_bound<_Compare>(++__mp1, __last, __value_, __comp) | |
); | |
} | |
} | |
return pair<_ForwardIterator, _ForwardIterator>(__first, __first); | |
} | |
template <class _ForwardIterator, class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_ForwardIterator, _ForwardIterator> | |
equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __equal_range<_Comp_ref>(__first, __last, __value_, __comp); | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<_ForwardIterator, _ForwardIterator> | |
equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) | |
{ | |
return std::__1::equal_range(__first, __last, __value_, | |
__less<typename iterator_traits<_ForwardIterator>::value_type, _Tp>()); | |
} | |
template <class _Compare, class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
__binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
__first = __lower_bound<_Compare>(__first, __last, __value_, __comp); | |
return __first != __last && !__comp(__value_, *__first); | |
} | |
template <class _ForwardIterator, class _Tp, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __binary_search<_Comp_ref>(__first, __last, __value_, __comp); | |
} | |
template <class _ForwardIterator, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) | |
{ | |
return std::__1::binary_search(__first, __last, __value_, | |
__less<typename iterator_traits<_ForwardIterator>::value_type, _Tp>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
_OutputIterator | |
__merge(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
for (; __first1 != __last1; ++__result) | |
{ | |
if (__first2 == __last2) | |
return std::__1::copy(__first1, __last1, __result); | |
if (__comp(*__first2, *__first1)) | |
{ | |
*__result = *__first2; | |
++__first2; | |
} | |
else | |
{ | |
*__result = *__first1; | |
++__first1; | |
} | |
} | |
return std::__1::copy(__first2, __last2, __result); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
merge(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return std::__1::__merge<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
merge(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) | |
{ | |
typedef typename iterator_traits<_InputIterator1>::value_type __v1; | |
typedef typename iterator_traits<_InputIterator2>::value_type __v2; | |
return merge(__first1, __last1, __first2, __last2, __result, __less<__v1, __v2>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, | |
class _OutputIterator> | |
void __half_inplace_merge(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, | |
_OutputIterator __result, _Compare __comp) | |
{ | |
for (; __first1 != __last1; ++__result) | |
{ | |
if (__first2 == __last2) | |
{ | |
std::__1::move(__first1, __last1, __result); | |
return; | |
} | |
if (__comp(*__first2, *__first1)) | |
{ | |
*__result = std::__1::move(*__first2); | |
++__first2; | |
} | |
else | |
{ | |
*__result = std::__1::move(*__first1); | |
++__first1; | |
} | |
} | |
} | |
template <class _Compare, class _BidirectionalIterator> | |
void | |
__buffered_inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, | |
_Compare __comp, typename iterator_traits<_BidirectionalIterator>::difference_type __len1, | |
typename iterator_traits<_BidirectionalIterator>::difference_type __len2, | |
typename iterator_traits<_BidirectionalIterator>::value_type* __buff) | |
{ | |
typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h2(__buff, __d); | |
if (__len1 <= __len2) | |
{ | |
value_type* __p = __buff; | |
for (_BidirectionalIterator __i = __first; __i != __middle; __d.__incr((value_type*)0), (void) ++__i, ++__p) | |
::new(__p) value_type(std::__1::move(*__i)); | |
__half_inplace_merge(__buff, __p, __middle, __last, __first, __comp); | |
} | |
else | |
{ | |
value_type* __p = __buff; | |
for (_BidirectionalIterator __i = __middle; __i != __last; __d.__incr((value_type*)0), (void) ++__i, ++__p) | |
::new(__p) value_type(std::__1::move(*__i)); | |
typedef reverse_iterator<_BidirectionalIterator> _RBi; | |
typedef reverse_iterator<value_type*> _Rv; | |
__half_inplace_merge(_Rv(__p), _Rv(__buff), | |
_RBi(__middle), _RBi(__first), | |
_RBi(__last), __negate<_Compare>(__comp)); | |
} | |
} | |
template <class _Compare, class _BidirectionalIterator> | |
void | |
__inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, | |
_Compare __comp, typename iterator_traits<_BidirectionalIterator>::difference_type __len1, | |
typename iterator_traits<_BidirectionalIterator>::difference_type __len2, | |
typename iterator_traits<_BidirectionalIterator>::value_type* __buff, ptrdiff_t __buff_size) | |
{ | |
typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; | |
while (true) | |
{ | |
if (__len2 == 0) | |
return; | |
if (__len1 <= __buff_size || __len2 <= __buff_size) | |
return __buffered_inplace_merge<_Compare> | |
(__first, __middle, __last, __comp, __len1, __len2, __buff); | |
for (; true; ++__first, (void) --__len1) | |
{ | |
if (__len1 == 0) | |
return; | |
if (__comp(*__middle, *__first)) | |
break; | |
} | |
# 4454 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm" 3 | |
_BidirectionalIterator __m1; | |
_BidirectionalIterator __m2; | |
difference_type __len11; | |
difference_type __len21; | |
if (__len1 < __len2) | |
{ | |
__len21 = __len2 / 2; | |
__m2 = __middle; | |
std::__1::advance(__m2, __len21); | |
__m1 = __upper_bound<_Compare>(__first, __middle, *__m2, __comp); | |
__len11 = std::__1::distance(__first, __m1); | |
} | |
else | |
{ | |
if (__len1 == 1) | |
{ | |
swap(*__first, *__middle); | |
return; | |
} | |
__len11 = __len1 / 2; | |
__m1 = __first; | |
std::__1::advance(__m1, __len11); | |
__m2 = __lower_bound<_Compare>(__middle, __last, *__m1, __comp); | |
__len21 = std::__1::distance(__middle, __m2); | |
} | |
difference_type __len12 = __len1 - __len11; | |
difference_type __len22 = __len2 - __len21; | |
__middle = std::__1::rotate(__m1, __middle, __m2); | |
if (__len11 + __len21 < __len12 + __len22) | |
{ | |
__inplace_merge<_Compare>(__first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size); | |
__first = __middle; | |
__middle = __m2; | |
__len1 = __len12; | |
__len2 = __len22; | |
} | |
else | |
{ | |
__inplace_merge<_Compare>(__middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size); | |
__last = __middle; | |
__middle = __m1; | |
__len1 = __len11; | |
__len2 = __len21; | |
} | |
} | |
} | |
template <class _BidirectionalIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, | |
_Compare __comp) | |
{ | |
typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; | |
typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; | |
difference_type __len1 = std::__1::distance(__first, __middle); | |
difference_type __len2 = std::__1::distance(__middle, __last); | |
difference_type __buf_size = std::__1::min(__len1, __len2); | |
pair<value_type*, ptrdiff_t> __buf = std::__1::get_temporary_buffer<value_type>(__buf_size); | |
unique_ptr<value_type, __return_temporary_buffer> __h(__buf.first); | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return std::__1::__inplace_merge<_Comp_ref>(__first, __middle, __last, __comp, __len1, __len2, | |
__buf.first, __buf.second); | |
} | |
template <class _BidirectionalIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last) | |
{ | |
std::__1::inplace_merge(__first, __middle, __last, | |
__less<typename iterator_traits<_BidirectionalIterator>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2> | |
void | |
__merge_move_construct(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, | |
typename iterator_traits<_InputIterator1>::value_type* __result, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_InputIterator1>::value_type value_type; | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h(__result, __d); | |
for (; true; ++__result) | |
{ | |
if (__first1 == __last1) | |
{ | |
for (; __first2 != __last2; ++__first2, ++__result, __d.__incr((value_type*)0)) | |
::new (__result) value_type(std::__1::move(*__first2)); | |
__h.release(); | |
return; | |
} | |
if (__first2 == __last2) | |
{ | |
for (; __first1 != __last1; ++__first1, ++__result, __d.__incr((value_type*)0)) | |
::new (__result) value_type(std::__1::move(*__first1)); | |
__h.release(); | |
return; | |
} | |
if (__comp(*__first2, *__first1)) | |
{ | |
::new (__result) value_type(std::__1::move(*__first2)); | |
__d.__incr((value_type*)0); | |
++__first2; | |
} | |
else | |
{ | |
::new (__result) value_type(std::__1::move(*__first1)); | |
__d.__incr((value_type*)0); | |
++__first1; | |
} | |
} | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
void | |
__merge_move_assign(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, | |
_OutputIterator __result, _Compare __comp) | |
{ | |
for (; __first1 != __last1; ++__result) | |
{ | |
if (__first2 == __last2) | |
{ | |
for (; __first1 != __last1; ++__first1, ++__result) | |
*__result = std::__1::move(*__first1); | |
return; | |
} | |
if (__comp(*__first2, *__first1)) | |
{ | |
*__result = std::__1::move(*__first2); | |
++__first2; | |
} | |
else | |
{ | |
*__result = std::__1::move(*__first1); | |
++__first1; | |
} | |
} | |
for (; __first2 != __last2; ++__first2, ++__result) | |
*__result = std::__1::move(*__first2); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len, | |
typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size); | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__stable_sort_move(_RandomAccessIterator __first1, _RandomAccessIterator __last1, _Compare __comp, | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len, | |
typename iterator_traits<_RandomAccessIterator>::value_type* __first2) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
switch (__len) | |
{ | |
case 0: | |
return; | |
case 1: | |
::new(__first2) value_type(std::__1::move(*__first1)); | |
return; | |
case 2: | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h2(__first2, __d); | |
if (__comp(*--__last1, *__first1)) | |
{ | |
::new(__first2) value_type(std::__1::move(*__last1)); | |
__d.__incr((value_type*)0); | |
++__first2; | |
::new(__first2) value_type(std::__1::move(*__first1)); | |
} | |
else | |
{ | |
::new(__first2) value_type(std::__1::move(*__first1)); | |
__d.__incr((value_type*)0); | |
++__first2; | |
::new(__first2) value_type(std::__1::move(*__last1)); | |
} | |
__h2.release(); | |
return; | |
} | |
if (__len <= 8) | |
{ | |
__insertion_sort_move<_Compare>(__first1, __last1, __first2, __comp); | |
return; | |
} | |
typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; | |
_RandomAccessIterator __m = __first1 + __l2; | |
__stable_sort<_Compare>(__first1, __m, __comp, __l2, __first2, __l2); | |
__stable_sort<_Compare>(__m, __last1, __comp, __len - __l2, __first2 + __l2, __len - __l2); | |
__merge_move_construct<_Compare>(__first1, __m, __m, __last1, __first2, __comp); | |
} | |
template <class _Tp> | |
struct __stable_sort_switch | |
{ | |
static const unsigned value = 128*is_trivially_copy_assignable<_Tp>::value; | |
}; | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len, | |
typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
switch (__len) | |
{ | |
case 0: | |
case 1: | |
return; | |
case 2: | |
if (__comp(*--__last, *__first)) | |
swap(*__first, *__last); | |
return; | |
} | |
if (__len <= static_cast<difference_type>(__stable_sort_switch<value_type>::value)) | |
{ | |
__insertion_sort<_Compare>(__first, __last, __comp); | |
return; | |
} | |
typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; | |
_RandomAccessIterator __m = __first + __l2; | |
if (__len <= __buff_size) | |
{ | |
__destruct_n __d(0); | |
unique_ptr<value_type, __destruct_n&> __h2(__buff, __d); | |
__stable_sort_move<_Compare>(__first, __m, __comp, __l2, __buff); | |
__d.__set(__l2, (value_type*)0); | |
__stable_sort_move<_Compare>(__m, __last, __comp, __len - __l2, __buff + __l2); | |
__d.__set(__len, (value_type*)0); | |
__merge_move_assign<_Compare>(__buff, __buff + __l2, __buff + __l2, __buff + __len, __first, __comp); | |
return; | |
} | |
__stable_sort<_Compare>(__first, __m, __comp, __l2, __buff, __buff_size); | |
__stable_sort<_Compare>(__m, __last, __comp, __len - __l2, __buff, __buff_size); | |
__inplace_merge<_Compare>(__first, __m, __last, __comp, __l2, __len - __l2, __buff, __buff_size); | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
difference_type __len = __last - __first; | |
pair<value_type*, ptrdiff_t> __buf(0, 0); | |
unique_ptr<value_type, __return_temporary_buffer> __h; | |
if (__len > static_cast<difference_type>(__stable_sort_switch<value_type>::value)) | |
{ | |
__buf = std::__1::get_temporary_buffer<value_type>(__len); | |
__h.reset(__buf.first); | |
} | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__stable_sort<_Comp_ref>(__first, __last, __comp, __len, __buf.first, __buf.second); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
std::__1::stable_sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
_RandomAccessIterator | |
is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename std::__1::iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
difference_type __len = __last - __first; | |
difference_type __p = 0; | |
difference_type __c = 1; | |
_RandomAccessIterator __pp = __first; | |
while (__c < __len) | |
{ | |
_RandomAccessIterator __cp = __first + __c; | |
if (__comp(*__pp, *__cp)) | |
return __cp; | |
++__c; | |
++__cp; | |
if (__c == __len) | |
return __last; | |
if (__comp(*__pp, *__cp)) | |
return __cp; | |
++__p; | |
++__pp; | |
__c = 2 * __p + 1; | |
} | |
return __last; | |
} | |
template<class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_RandomAccessIterator | |
is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
return std::__1::is_heap_until(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
return std::__1::is_heap_until(__first, __last, __comp) == __last; | |
} | |
template<class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
return std::__1::is_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__sift_up(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
if (__len > 1) | |
{ | |
__len = (__len - 2) / 2; | |
_RandomAccessIterator __ptr = __first + __len; | |
if (__comp(*__ptr, *--__last)) | |
{ | |
value_type __t(std::__1::move(*__last)); | |
do | |
{ | |
*__last = std::__1::move(*__ptr); | |
__last = __ptr; | |
if (__len == 0) | |
break; | |
__len = (__len - 1) / 2; | |
__ptr = __first + __len; | |
} while (__comp(*__ptr, __t)); | |
*__last = std::__1::move(__t); | |
} | |
} | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__sift_up<_Comp_ref>(__first, __last, __comp, __last - __first); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
std::__1::push_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__sift_down(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len, | |
_RandomAccessIterator __start) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; | |
difference_type __child = __start - __first; | |
if (__len < 2 || (__len - 2) / 2 < __child) | |
return; | |
__child = 2 * __child + 1; | |
_RandomAccessIterator __child_i = __first + __child; | |
if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + 1))) { | |
++__child_i; | |
++__child; | |
} | |
if (__comp(*__child_i, *__start)) | |
return; | |
value_type __top(std::__1::move(*__start)); | |
do | |
{ | |
*__start = std::__1::move(*__child_i); | |
__start = __child_i; | |
if ((__len - 2) / 2 < __child) | |
break; | |
__child = 2 * __child + 1; | |
__child_i = __first + __child; | |
if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + 1))) { | |
++__child_i; | |
++__child; | |
} | |
} while (!__comp(*__child_i, __top)); | |
*__start = std::__1::move(__top); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len) | |
{ | |
if (__len > 1) | |
{ | |
swap(*__first, *--__last); | |
__sift_down<_Compare>(__first, __last, __comp, __len - 1, __first); | |
} | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__pop_heap<_Comp_ref>(__first, __last, __comp, __last - __first); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
std::__1::pop_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
difference_type __n = __last - __first; | |
if (__n > 1) | |
{ | |
for (difference_type __start = (__n - 2) / 2; __start >= 0; --__start) | |
{ | |
__sift_down<_Compare>(__first, __last, __comp, __n, __first + __start); | |
} | |
} | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__make_heap<_Comp_ref>(__first, __last, __comp); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
std::__1::make_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
for (difference_type __n = __last - __first; __n > 1; --__last, --__n) | |
__pop_heap<_Compare>(__first, __last, __comp, __n); | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__sort_heap<_Comp_ref>(__first, __last, __comp); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) | |
{ | |
std::__1::sort_heap(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, | |
_Compare __comp) | |
{ | |
__make_heap<_Compare>(__first, __middle, __comp); | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len = __middle - __first; | |
for (_RandomAccessIterator __i = __middle; __i != __last; ++__i) | |
{ | |
if (__comp(*__i, *__first)) | |
{ | |
swap(*__i, *__first); | |
__sift_down<_Compare>(__first, __middle, __comp, __len, __first); | |
} | |
} | |
__sort_heap<_Compare>(__first, __middle, __comp); | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, | |
_Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__partial_sort<_Comp_ref>(__first, __middle, __last, __comp); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) | |
{ | |
std::__1::partial_sort(__first, __middle, __last, | |
__less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator, class _RandomAccessIterator> | |
_RandomAccessIterator | |
__partial_sort_copy(_InputIterator __first, _InputIterator __last, | |
_RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp) | |
{ | |
_RandomAccessIterator __r = __result_first; | |
if (__r != __result_last) | |
{ | |
for (; __first != __last && __r != __result_last; (void) ++__first, ++__r) | |
*__r = *__first; | |
__make_heap<_Compare>(__result_first, __r, __comp); | |
typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first; | |
for (; __first != __last; ++__first) | |
if (__comp(*__first, *__result_first)) | |
{ | |
*__result_first = *__first; | |
__sift_down<_Compare>(__result_first, __r, __comp, __len, __result_first); | |
} | |
__sort_heap<_Compare>(__result_first, __r, __comp); | |
} | |
return __r; | |
} | |
template <class _InputIterator, class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_RandomAccessIterator | |
partial_sort_copy(_InputIterator __first, _InputIterator __last, | |
_RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __partial_sort_copy<_Comp_ref>(__first, __last, __result_first, __result_last, __comp); | |
} | |
template <class _InputIterator, class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_RandomAccessIterator | |
partial_sort_copy(_InputIterator __first, _InputIterator __last, | |
_RandomAccessIterator __result_first, _RandomAccessIterator __result_last) | |
{ | |
return std::__1::partial_sort_copy(__first, __last, __result_first, __result_last, | |
__less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _RandomAccessIterator> | |
void | |
__nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; | |
const difference_type __limit = 7; | |
while (true) | |
{ | |
__restart: | |
if (__nth == __last) | |
return; | |
difference_type __len = __last - __first; | |
switch (__len) | |
{ | |
case 0: | |
case 1: | |
return; | |
case 2: | |
if (__comp(*--__last, *__first)) | |
swap(*__first, *__last); | |
return; | |
case 3: | |
{ | |
_RandomAccessIterator __m = __first; | |
std::__1::__sort3<_Compare>(__first, ++__m, --__last, __comp); | |
return; | |
} | |
} | |
if (__len <= __limit) | |
{ | |
__selection_sort<_Compare>(__first, __last, __comp); | |
return; | |
} | |
_RandomAccessIterator __m = __first + __len/2; | |
_RandomAccessIterator __lm1 = __last; | |
unsigned __n_swaps = std::__1::__sort3<_Compare>(__first, __m, --__lm1, __comp); | |
_RandomAccessIterator __i = __first; | |
_RandomAccessIterator __j = __lm1; | |
if (!__comp(*__i, *__m)) | |
{ | |
while (true) | |
{ | |
if (__i == --__j) | |
{ | |
++__i; | |
__j = __last; | |
if (!__comp(*__first, *--__j)) | |
{ | |
while (true) | |
{ | |
if (__i == __j) | |
return; | |
if (__comp(*__first, *__i)) | |
{ | |
swap(*__i, *__j); | |
++__n_swaps; | |
++__i; | |
break; | |
} | |
++__i; | |
} | |
} | |
if (__i == __j) | |
return; | |
while (true) | |
{ | |
while (!__comp(*__first, *__i)) | |
++__i; | |
while (__comp(*__first, *--__j)) | |
; | |
if (__i >= __j) | |
break; | |
swap(*__i, *__j); | |
++__n_swaps; | |
++__i; | |
} | |
if (__nth < __i) | |
return; | |
__first = __i; | |
goto __restart; | |
} | |
if (__comp(*__j, *__m)) | |
{ | |
swap(*__i, *__j); | |
++__n_swaps; | |
break; | |
} | |
} | |
} | |
++__i; | |
if (__i < __j) | |
{ | |
while (true) | |
{ | |
while (__comp(*__i, *__m)) | |
++__i; | |
while (!__comp(*--__j, *__m)) | |
; | |
if (__i >= __j) | |
break; | |
swap(*__i, *__j); | |
++__n_swaps; | |
if (__m == __i) | |
__m = __j; | |
++__i; | |
} | |
} | |
if (__i != __m && __comp(*__m, *__i)) | |
{ | |
swap(*__i, *__m); | |
++__n_swaps; | |
} | |
if (__nth == __i) | |
return; | |
if (__n_swaps == 0) | |
{ | |
if (__nth < __i) | |
{ | |
__j = __m = __first; | |
while (++__j != __i) | |
{ | |
if (__comp(*__j, *__m)) | |
goto not_sorted; | |
__m = __j; | |
} | |
return; | |
} | |
else | |
{ | |
__j = __m = __i; | |
while (++__j != __last) | |
{ | |
if (__comp(*__j, *__m)) | |
goto not_sorted; | |
__m = __j; | |
} | |
return; | |
} | |
} | |
not_sorted: | |
if (__nth < __i) | |
{ | |
__last = __i; | |
} | |
else | |
{ | |
__first = ++__i; | |
} | |
} | |
} | |
template <class _RandomAccessIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
__nth_element<_Comp_ref>(__first, __nth, __last, __comp); | |
} | |
template <class _RandomAccessIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last) | |
{ | |
std::__1::nth_element(__first, __nth, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2> | |
bool | |
__includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, | |
_Compare __comp) | |
{ | |
for (; __first2 != __last2; ++__first1) | |
{ | |
if (__first1 == __last1 || __comp(*__first2, *__first1)) | |
return false; | |
if (!__comp(*__first1, *__first2)) | |
++__first2; | |
} | |
return true; | |
} | |
template <class _InputIterator1, class _InputIterator2, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, | |
_Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __includes<_Comp_ref>(__first1, __last1, __first2, __last2, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) | |
{ | |
return std::__1::includes(__first1, __last1, __first2, __last2, | |
__less<typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
_OutputIterator | |
__set_union(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
for (; __first1 != __last1; ++__result) | |
{ | |
if (__first2 == __last2) | |
return std::__1::copy(__first1, __last1, __result); | |
if (__comp(*__first2, *__first1)) | |
{ | |
*__result = *__first2; | |
++__first2; | |
} | |
else | |
{ | |
*__result = *__first1; | |
if (!__comp(*__first1, *__first2)) | |
++__first2; | |
++__first1; | |
} | |
} | |
return std::__1::copy(__first2, __last2, __result); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_union(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __set_union<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_union(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) | |
{ | |
return std::__1::set_union(__first1, __last1, __first2, __last2, __result, | |
__less<typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
_OutputIterator | |
__set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
while (__first1 != __last1 && __first2 != __last2) | |
{ | |
if (__comp(*__first1, *__first2)) | |
++__first1; | |
else | |
{ | |
if (!__comp(*__first2, *__first1)) | |
{ | |
*__result = *__first1; | |
++__result; | |
++__first1; | |
} | |
++__first2; | |
} | |
} | |
return __result; | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __set_intersection<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) | |
{ | |
return std::__1::set_intersection(__first1, __last1, __first2, __last2, __result, | |
__less<typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
_OutputIterator | |
__set_difference(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
while (__first1 != __last1) | |
{ | |
if (__first2 == __last2) | |
return std::__1::copy(__first1, __last1, __result); | |
if (__comp(*__first1, *__first2)) | |
{ | |
*__result = *__first1; | |
++__result; | |
++__first1; | |
} | |
else | |
{ | |
if (!__comp(*__first2, *__first1)) | |
++__first1; | |
++__first2; | |
} | |
} | |
return __result; | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_difference(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __set_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_difference(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) | |
{ | |
return std::__1::set_difference(__first1, __last1, __first2, __last2, __result, | |
__less<typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
_OutputIterator | |
__set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
while (__first1 != __last1) | |
{ | |
if (__first2 == __last2) | |
return std::__1::copy(__first1, __last1, __result); | |
if (__comp(*__first1, *__first2)) | |
{ | |
*__result = *__first1; | |
++__result; | |
++__first1; | |
} | |
else | |
{ | |
if (__comp(*__first2, *__first1)) | |
{ | |
*__result = *__first2; | |
++__result; | |
} | |
else | |
++__first1; | |
++__first2; | |
} | |
} | |
return std::__1::copy(__first2, __last2, __result); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __set_symmetric_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2, class _OutputIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_OutputIterator | |
set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) | |
{ | |
return std::__1::set_symmetric_difference(__first1, __last1, __first2, __last2, __result, | |
__less<typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>()); | |
} | |
template <class _Compare, class _InputIterator1, class _InputIterator2> | |
bool | |
__lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) | |
{ | |
for (; __first2 != __last2; ++__first1, (void) ++__first2) | |
{ | |
if (__first1 == __last1 || __comp(*__first1, *__first2)) | |
return true; | |
if (__comp(*__first2, *__first1)) | |
return false; | |
} | |
return false; | |
} | |
template <class _InputIterator1, class _InputIterator2, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __lexicographical_compare<_Comp_ref>(__first1, __last1, __first2, __last2, __comp); | |
} | |
template <class _InputIterator1, class _InputIterator2> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2) | |
{ | |
return std::__1::lexicographical_compare(__first1, __last1, __first2, __last2, | |
__less<typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>()); | |
} | |
template <class _Compare, class _BidirectionalIterator> | |
bool | |
__next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) | |
{ | |
_BidirectionalIterator __i = __last; | |
if (__first == __last || __first == --__i) | |
return false; | |
while (true) | |
{ | |
_BidirectionalIterator __ip1 = __i; | |
if (__comp(*--__i, *__ip1)) | |
{ | |
_BidirectionalIterator __j = __last; | |
while (!__comp(*__i, *--__j)) | |
; | |
swap(*__i, *__j); | |
std::__1::reverse(__ip1, __last); | |
return true; | |
} | |
if (__i == __first) | |
{ | |
std::__1::reverse(__first, __last); | |
return false; | |
} | |
} | |
} | |
template <class _BidirectionalIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __next_permutation<_Comp_ref>(__first, __last, __comp); | |
} | |
template <class _BidirectionalIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) | |
{ | |
return std::__1::next_permutation(__first, __last, | |
__less<typename iterator_traits<_BidirectionalIterator>::value_type>()); | |
} | |
template <class _Compare, class _BidirectionalIterator> | |
bool | |
__prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) | |
{ | |
_BidirectionalIterator __i = __last; | |
if (__first == __last || __first == --__i) | |
return false; | |
while (true) | |
{ | |
_BidirectionalIterator __ip1 = __i; | |
if (__comp(*__ip1, *--__i)) | |
{ | |
_BidirectionalIterator __j = __last; | |
while (!__comp(*--__j, *__i)) | |
; | |
swap(*__i, *__j); | |
std::__1::reverse(__ip1, __last); | |
return true; | |
} | |
if (__i == __first) | |
{ | |
std::__1::reverse(__first, __last); | |
return false; | |
} | |
} | |
} | |
template <class _BidirectionalIterator, class _Compare> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) | |
{ | |
typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; | |
return __prev_permutation<_Comp_ref>(__first, __last, __comp); | |
} | |
template <class _BidirectionalIterator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) | |
{ | |
return std::__1::prev_permutation(__first, __last, | |
__less<typename iterator_traits<_BidirectionalIterator>::value_type>()); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value, | |
_Tp | |
>::type | |
__rotate_left(_Tp __t, _Tp __n = 1) | |
{ | |
const unsigned __bits = static_cast<unsigned>(sizeof(_Tp) * 8 - 1); | |
__n &= __bits; | |
return static_cast<_Tp>((__t << __n) | (static_cast<typename make_unsigned<_Tp>::type>(__t) >> (__bits - __n))); | |
} | |
template <class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_integral<_Tp>::value, | |
_Tp | |
>::type | |
__rotate_right(_Tp __t, _Tp __n = 1) | |
{ | |
const unsigned __bits = static_cast<unsigned>(sizeof(_Tp) * 8 - 1); | |
__n &= __bits; | |
return static_cast<_Tp>((__t << (__bits - __n)) | (static_cast<typename make_unsigned<_Tp>::type>(__t) >> __n)); | |
} | |
} } | |
# 13 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar" 1 3 | |
# 107 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype" 1 3 | |
# 54 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cctype" 1 3 | |
# 47 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cctype" 3 | |
namespace std {inline namespace __1 { | |
using ::isalnum; | |
using ::isalpha; | |
using ::isblank; | |
using ::iscntrl; | |
using ::isdigit; | |
using ::isgraph; | |
using ::islower; | |
using ::isprint; | |
using ::ispunct; | |
using ::isspace; | |
using ::isupper; | |
using ::isxdigit; | |
using ::tolower; | |
using ::toupper; | |
} } | |
# 55 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wctype.h" 1 3 4 | |
# 36 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wctype.h" 3 4 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_wctrans_t.h" 1 3 4 | |
# 31 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/_types/_wctrans_t.h" 3 4 | |
typedef __darwin_wctrans_t wctrans_t; | |
# 37 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wctype.h" 2 3 4 | |
# 49 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wctype.h" 3 4 | |
inline int | |
iswblank(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00020000L)); | |
} | |
inline int | |
iswascii(wint_t _wc) | |
{ | |
return ((_wc & ~0x7F) == 0); | |
} | |
inline int | |
iswhexnumber(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00010000L)); | |
} | |
inline int | |
iswideogram(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00080000L)); | |
} | |
inline int | |
iswnumber(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00000400L)); | |
} | |
inline int | |
iswphonogram(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00200000L)); | |
} | |
inline int | |
iswrune(wint_t _wc) | |
{ | |
return (__istype(_wc, 0xFFFFFFF0L)); | |
} | |
inline int | |
iswspecial(wint_t _wc) | |
{ | |
return (__istype(_wc, 0x00100000L)); | |
} | |
# 117 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/wctype.h" 3 4 | |
extern "C" { | |
wint_t nextwctype(wint_t, wctype_t); | |
wint_t towctrans(wint_t, wctrans_t); | |
wctrans_t | |
wctrans(const char *); | |
} | |
# 56 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype" 2 3 | |
# 59 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype" 3 | |
namespace std {inline namespace __1 { | |
using ::wint_t; | |
using ::wctrans_t; | |
using ::wctype_t; | |
using ::iswalnum; | |
using ::iswalpha; | |
using ::iswblank; | |
using ::iswcntrl; | |
using ::iswdigit; | |
using ::iswgraph; | |
using ::iswlower; | |
using ::iswprint; | |
using ::iswpunct; | |
using ::iswspace; | |
using ::iswupper; | |
using ::iswxdigit; | |
using ::iswctype; | |
using ::wctype; | |
using ::towlower; | |
using ::towupper; | |
using ::towctrans; | |
using ::wctrans; | |
} } | |
# 108 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar" 2 3 | |
# 115 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar" 3 | |
namespace std {inline namespace __1 { | |
using ::mbstate_t; | |
using ::size_t; | |
using ::tm; | |
using ::wint_t; | |
using ::FILE; | |
using ::fwprintf; | |
using ::fwscanf; | |
using ::swprintf; | |
using ::vfwprintf; | |
using ::vswprintf; | |
using ::swscanf; | |
using ::vfwscanf; | |
using ::vswscanf; | |
using ::fgetwc; | |
using ::fgetws; | |
using ::fputwc; | |
using ::fputws; | |
using ::fwide; | |
using ::getwc; | |
using ::putwc; | |
using ::ungetwc; | |
using ::wcstod; | |
using ::wcstof; | |
using ::wcstold; | |
using ::wcstol; | |
using ::wcstoll; | |
using ::wcstoul; | |
using ::wcstoull; | |
using ::wcscpy; | |
using ::wcsncpy; | |
using ::wcscat; | |
using ::wcsncat; | |
using ::wcscmp; | |
using ::wcscoll; | |
using ::wcsncmp; | |
using ::wcsxfrm; | |
# 174 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar" 3 | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) wchar_t* wcschr( wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) wchar_t* wcspbrk( wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) wchar_t* wcsrchr( wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) wchar_t* wcsstr( wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);} | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) wchar_t* wmemchr( wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);} | |
using ::wcscspn; | |
using ::wcslen; | |
using ::wcsspn; | |
using ::wcstok; | |
using ::wmemcmp; | |
using ::wmemcpy; | |
using ::wmemmove; | |
using ::wmemset; | |
using ::wcsftime; | |
using ::btowc; | |
using ::wctob; | |
using ::mbsinit; | |
using ::mbrlen; | |
using ::mbrtowc; | |
using ::wcrtomb; | |
using ::mbsrtowcs; | |
using ::wcsrtombs; | |
using ::getwchar; | |
using ::vwscanf; | |
using ::wscanf; | |
using ::putwchar; | |
using ::vwprintf; | |
using ::wprintf; | |
} } | |
# 14 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 1 3 | |
# 442 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 1 3 | |
# 17 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/stdexcept" 1 3 | |
# 51 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/stdexcept" 3 | |
namespace std {inline namespace __1 { | |
class __attribute__ ((__visibility__("hidden"))) __libcpp_refstring { | |
const char *__imp_ __attribute__((__unused__)); | |
}; | |
} } | |
namespace std | |
{ | |
class __attribute__ ((__visibility__("default"))) logic_error | |
: public exception | |
{ | |
private: | |
std::__1::__libcpp_refstring __imp_; | |
public: | |
explicit logic_error(const string&); | |
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 __attribute__ ((__visibility__("default"))) runtime_error | |
: public exception | |
{ | |
private: | |
std::__1::__libcpp_refstring __imp_; | |
public: | |
explicit runtime_error(const string&); | |
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 __attribute__ ((__visibility__("default"))) domain_error | |
: public logic_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit domain_error(const string& __s) : logic_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit domain_error(const char* __s) : logic_error(__s) {} | |
virtual ~domain_error() noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) invalid_argument | |
: public logic_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit invalid_argument(const string& __s) : logic_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit invalid_argument(const char* __s) : logic_error(__s) {} | |
virtual ~invalid_argument() noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) length_error | |
: public logic_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit length_error(const string& __s) : logic_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit length_error(const char* __s) : logic_error(__s) {} | |
virtual ~length_error() noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) out_of_range | |
: public logic_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit out_of_range(const string& __s) : logic_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit out_of_range(const char* __s) : logic_error(__s) {} | |
virtual ~out_of_range() noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) range_error | |
: public runtime_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit range_error(const string& __s) : runtime_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit range_error(const char* __s) : runtime_error(__s) {} | |
virtual ~range_error() noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) overflow_error | |
: public runtime_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit overflow_error(const string& __s) : runtime_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit overflow_error(const char* __s) : runtime_error(__s) {} | |
virtual ~overflow_error() noexcept; | |
}; | |
class __attribute__ ((__visibility__("default"))) underflow_error | |
: public runtime_error | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit underflow_error(const string& __s) : runtime_error(__s) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit underflow_error(const char* __s) : runtime_error(__s) {} | |
virtual ~underflow_error() noexcept; | |
}; | |
} | |
# 18 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 2 3 | |
# 22 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
namespace std {inline namespace __1 { | |
template <class _Tp, class _Compare, class _Allocator> class __tree; | |
template <class _Tp, class _NodePtr, class _DiffType> | |
class __attribute__ ((__type_visibility__("default"))) __tree_iterator; | |
template <class _Tp, class _ConstNodePtr, class _DiffType> | |
class __attribute__ ((__type_visibility__("default"))) __tree_const_iterator; | |
# 55 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
template <class _NodePtr> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
__tree_is_left_child(_NodePtr __x) noexcept | |
{ | |
return __x == __x->__parent_->__left_; | |
} | |
template <class _NodePtr> | |
unsigned | |
__tree_sub_invariant(_NodePtr __x) | |
{ | |
if (__x == nullptr) | |
return 1; | |
if (__x->__left_ != nullptr && __x->__left_->__parent_ != __x) | |
return 0; | |
if (__x->__right_ != nullptr && __x->__right_->__parent_ != __x) | |
return 0; | |
if (__x->__left_ == __x->__right_ && __x->__left_ != nullptr) | |
return 0; | |
if (!__x->__is_black_) | |
{ | |
if (__x->__left_ && !__x->__left_->__is_black_) | |
return 0; | |
if (__x->__right_ && !__x->__right_->__is_black_) | |
return 0; | |
} | |
unsigned __h = __tree_sub_invariant(__x->__left_); | |
if (__h == 0) | |
return 0; | |
if (__h != __tree_sub_invariant(__x->__right_)) | |
return 0; | |
return __h + __x->__is_black_; | |
} | |
template <class _NodePtr> | |
bool | |
__tree_invariant(_NodePtr __root) | |
{ | |
if (__root == nullptr) | |
return true; | |
if (__root->__parent_ == nullptr) | |
return false; | |
if (!__tree_is_left_child(__root)) | |
return false; | |
if (!__root->__is_black_) | |
return false; | |
return __tree_sub_invariant(__root) != 0; | |
} | |
template <class _NodePtr> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_NodePtr | |
__tree_min(_NodePtr __x) noexcept | |
{ | |
while (__x->__left_ != nullptr) | |
__x = __x->__left_; | |
return __x; | |
} | |
template <class _NodePtr> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_NodePtr | |
__tree_max(_NodePtr __x) noexcept | |
{ | |
while (__x->__right_ != nullptr) | |
__x = __x->__right_; | |
return __x; | |
} | |
template <class _NodePtr> | |
_NodePtr | |
__tree_next(_NodePtr __x) noexcept | |
{ | |
if (__x->__right_ != nullptr) | |
return __tree_min(__x->__right_); | |
while (!__tree_is_left_child(__x)) | |
__x = __x->__parent_; | |
return __x->__parent_; | |
} | |
template <class _NodePtr> | |
_NodePtr | |
__tree_prev(_NodePtr __x) noexcept | |
{ | |
if (__x->__left_ != nullptr) | |
return __tree_max(__x->__left_); | |
while (__tree_is_left_child(__x)) | |
__x = __x->__parent_; | |
return __x->__parent_; | |
} | |
template <class _NodePtr> | |
_NodePtr | |
__tree_leaf(_NodePtr __x) noexcept | |
{ | |
while (true) | |
{ | |
if (__x->__left_ != nullptr) | |
{ | |
__x = __x->__left_; | |
continue; | |
} | |
if (__x->__right_ != nullptr) | |
{ | |
__x = __x->__right_; | |
continue; | |
} | |
break; | |
} | |
return __x; | |
} | |
template <class _NodePtr> | |
void | |
__tree_left_rotate(_NodePtr __x) noexcept | |
{ | |
_NodePtr __y = __x->__right_; | |
__x->__right_ = __y->__left_; | |
if (__x->__right_ != nullptr) | |
__x->__right_->__parent_ = __x; | |
__y->__parent_ = __x->__parent_; | |
if (__tree_is_left_child(__x)) | |
__x->__parent_->__left_ = __y; | |
else | |
__x->__parent_->__right_ = __y; | |
__y->__left_ = __x; | |
__x->__parent_ = __y; | |
} | |
template <class _NodePtr> | |
void | |
__tree_right_rotate(_NodePtr __x) noexcept | |
{ | |
_NodePtr __y = __x->__left_; | |
__x->__left_ = __y->__right_; | |
if (__x->__left_ != nullptr) | |
__x->__left_->__parent_ = __x; | |
__y->__parent_ = __x->__parent_; | |
if (__tree_is_left_child(__x)) | |
__x->__parent_->__left_ = __y; | |
else | |
__x->__parent_->__right_ = __y; | |
__y->__right_ = __x; | |
__x->__parent_ = __y; | |
} | |
# 240 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
template <class _NodePtr> | |
void | |
__tree_balance_after_insert(_NodePtr __root, _NodePtr __x) noexcept | |
{ | |
__x->__is_black_ = __x == __root; | |
while (__x != __root && !__x->__parent_->__is_black_) | |
{ | |
if (__tree_is_left_child(__x->__parent_)) | |
{ | |
_NodePtr __y = __x->__parent_->__parent_->__right_; | |
if (__y != nullptr && !__y->__is_black_) | |
{ | |
__x = __x->__parent_; | |
__x->__is_black_ = true; | |
__x = __x->__parent_; | |
__x->__is_black_ = __x == __root; | |
__y->__is_black_ = true; | |
} | |
else | |
{ | |
if (!__tree_is_left_child(__x)) | |
{ | |
__x = __x->__parent_; | |
__tree_left_rotate(__x); | |
} | |
__x = __x->__parent_; | |
__x->__is_black_ = true; | |
__x = __x->__parent_; | |
__x->__is_black_ = false; | |
__tree_right_rotate(__x); | |
break; | |
} | |
} | |
else | |
{ | |
_NodePtr __y = __x->__parent_->__parent_->__left_; | |
if (__y != nullptr && !__y->__is_black_) | |
{ | |
__x = __x->__parent_; | |
__x->__is_black_ = true; | |
__x = __x->__parent_; | |
__x->__is_black_ = __x == __root; | |
__y->__is_black_ = true; | |
} | |
else | |
{ | |
if (__tree_is_left_child(__x)) | |
{ | |
__x = __x->__parent_; | |
__tree_right_rotate(__x); | |
} | |
__x = __x->__parent_; | |
__x->__is_black_ = true; | |
__x = __x->__parent_; | |
__x->__is_black_ = false; | |
__tree_left_rotate(__x); | |
break; | |
} | |
} | |
} | |
} | |
# 310 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
template <class _NodePtr> | |
void | |
__tree_remove(_NodePtr __root, _NodePtr __z) noexcept | |
{ | |
_NodePtr __y = (__z->__left_ == nullptr || __z->__right_ == nullptr) ? | |
__z : __tree_next(__z); | |
_NodePtr __x = __y->__left_ != nullptr ? __y->__left_ : __y->__right_; | |
_NodePtr __w = nullptr; | |
if (__x != nullptr) | |
__x->__parent_ = __y->__parent_; | |
if (__tree_is_left_child(__y)) | |
{ | |
__y->__parent_->__left_ = __x; | |
if (__y != __root) | |
__w = __y->__parent_->__right_; | |
else | |
__root = __x; | |
} | |
else | |
{ | |
__y->__parent_->__right_ = __x; | |
__w = __y->__parent_->__left_; | |
} | |
bool __removed_black = __y->__is_black_; | |
if (__y != __z) | |
{ | |
__y->__parent_ = __z->__parent_; | |
if (__tree_is_left_child(__z)) | |
__y->__parent_->__left_ = __y; | |
else | |
__y->__parent_->__right_ = __y; | |
__y->__left_ = __z->__left_; | |
__y->__left_->__parent_ = __y; | |
__y->__right_ = __z->__right_; | |
if (__y->__right_ != nullptr) | |
__y->__right_->__parent_ = __y; | |
__y->__is_black_ = __z->__is_black_; | |
if (__root == __z) | |
__root = __y; | |
} | |
if (__removed_black && __root != nullptr) | |
{ | |
# 377 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
if (__x != nullptr) | |
__x->__is_black_ = true; | |
else | |
{ | |
while (true) | |
{ | |
if (!__tree_is_left_child(__w)) | |
{ | |
if (!__w->__is_black_) | |
{ | |
__w->__is_black_ = true; | |
__w->__parent_->__is_black_ = false; | |
__tree_left_rotate(__w->__parent_); | |
if (__root == __w->__left_) | |
__root = __w; | |
__w = __w->__left_->__right_; | |
} | |
if ((__w->__left_ == nullptr || __w->__left_->__is_black_) && | |
(__w->__right_ == nullptr || __w->__right_->__is_black_)) | |
{ | |
__w->__is_black_ = false; | |
__x = __w->__parent_; | |
if (__x == __root || !__x->__is_black_) | |
{ | |
__x->__is_black_ = true; | |
break; | |
} | |
__w = __tree_is_left_child(__x) ? | |
__x->__parent_->__right_ : | |
__x->__parent_->__left_; | |
} | |
else | |
{ | |
if (__w->__right_ == nullptr || __w->__right_->__is_black_) | |
{ | |
__w->__left_->__is_black_ = true; | |
__w->__is_black_ = false; | |
__tree_right_rotate(__w); | |
__w = __w->__parent_; | |
} | |
__w->__is_black_ = __w->__parent_->__is_black_; | |
__w->__parent_->__is_black_ = true; | |
__w->__right_->__is_black_ = true; | |
__tree_left_rotate(__w->__parent_); | |
break; | |
} | |
} | |
else | |
{ | |
if (!__w->__is_black_) | |
{ | |
__w->__is_black_ = true; | |
__w->__parent_->__is_black_ = false; | |
__tree_right_rotate(__w->__parent_); | |
if (__root == __w->__right_) | |
__root = __w; | |
__w = __w->__right_->__left_; | |
} | |
if ((__w->__left_ == nullptr || __w->__left_->__is_black_) && | |
(__w->__right_ == nullptr || __w->__right_->__is_black_)) | |
{ | |
__w->__is_black_ = false; | |
__x = __w->__parent_; | |
if (!__x->__is_black_ || __x == __root) | |
{ | |
__x->__is_black_ = true; | |
break; | |
} | |
__w = __tree_is_left_child(__x) ? | |
__x->__parent_->__right_ : | |
__x->__parent_->__left_; | |
} | |
else | |
{ | |
if (__w->__left_ == nullptr || __w->__left_->__is_black_) | |
{ | |
__w->__right_->__is_black_ = true; | |
__w->__is_black_ = false; | |
__tree_left_rotate(__w); | |
__w = __w->__parent_; | |
} | |
__w->__is_black_ = __w->__parent_->__is_black_; | |
__w->__parent_->__is_black_ = true; | |
__w->__left_->__is_black_ = true; | |
__tree_right_rotate(__w->__parent_); | |
break; | |
} | |
} | |
} | |
} | |
} | |
} | |
template <class _Allocator> class __map_node_destructor; | |
template <class _Allocator> | |
class __tree_node_destructor | |
{ | |
typedef _Allocator allocator_type; | |
typedef allocator_traits<allocator_type> __alloc_traits; | |
typedef typename __alloc_traits::value_type::value_type value_type; | |
public: | |
typedef typename __alloc_traits::pointer pointer; | |
private: | |
allocator_type& __na_; | |
__tree_node_destructor& operator=(const __tree_node_destructor&); | |
public: | |
bool __value_constructed; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tree_node_destructor(allocator_type& __na, bool __val = false) noexcept | |
: __na_(__na), | |
__value_constructed(__val) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void operator()(pointer __p) noexcept | |
{ | |
if (__value_constructed) | |
__alloc_traits::destroy(__na_, std::__1::addressof(__p->__value_)); | |
if (__p) | |
__alloc_traits::deallocate(__na_, __p, 1); | |
} | |
template <class> friend class __map_node_destructor; | |
}; | |
template <class _Pointer> | |
class __tree_end_node | |
{ | |
public: | |
typedef _Pointer pointer; | |
pointer __left_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_end_node() noexcept : __left_() {} | |
}; | |
template <class _VoidPtr> | |
class __tree_node_base | |
: public __tree_end_node | |
< | |
typename __rebind_pointer<_VoidPtr, __tree_node_base<_VoidPtr> >::type | |
> | |
{ | |
__tree_node_base(const __tree_node_base&); | |
__tree_node_base& operator=(const __tree_node_base&); | |
public: | |
typedef typename __rebind_pointer<_VoidPtr, __tree_node_base>::type pointer; | |
typedef typename __rebind_pointer<_VoidPtr, const __tree_node_base>::type const_pointer; | |
typedef __tree_end_node<pointer> base; | |
pointer __right_; | |
pointer __parent_; | |
bool __is_black_; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_node_base() noexcept | |
: __right_(), __parent_(), __is_black_(false) {} | |
}; | |
template <class _Tp, class _VoidPtr> | |
class __tree_node | |
: public __tree_node_base<_VoidPtr> | |
{ | |
public: | |
typedef __tree_node_base<_VoidPtr> base; | |
typedef _Tp value_type; | |
value_type __value_; | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tree_node(_Args&& ...__args) | |
: __value_(std::__1::forward<_Args>(__args)...) {} | |
}; | |
template <class _TreeIterator> class __attribute__ ((__type_visibility__("default"))) __map_iterator; | |
template <class _TreeIterator> class __attribute__ ((__type_visibility__("default"))) __map_const_iterator; | |
template <class _Tp, class _NodePtr, class _DiffType> | |
class __attribute__ ((__type_visibility__("default"))) __tree_iterator | |
{ | |
typedef _NodePtr __node_pointer; | |
typedef typename pointer_traits<__node_pointer>::element_type __node; | |
__node_pointer __ptr_; | |
typedef pointer_traits<__node_pointer> __pointer_traits; | |
public: | |
typedef bidirectional_iterator_tag iterator_category; | |
typedef _Tp value_type; | |
typedef _DiffType difference_type; | |
typedef value_type& reference; | |
typedef typename __rebind_pointer<__node_pointer, value_type>::type pointer; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __tree_iterator() noexcept | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator*() const {return __ptr_->__value_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer operator->() const | |
{return pointer_traits<pointer>::pointer_to(__ptr_->__value_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_iterator& operator++() { | |
__ptr_ = static_cast<__node_pointer>( | |
__tree_next(static_cast<typename __node::base::pointer>(__ptr_))); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_iterator operator++(int) | |
{__tree_iterator __t(*this); ++(*this); return __t;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_iterator& operator--() { | |
__ptr_ = static_cast<__node_pointer>( | |
__tree_prev(static_cast<typename __node::base::pointer>(__ptr_))); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_iterator operator--(int) | |
{__tree_iterator __t(*this); --(*this); return __t;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const __tree_iterator& __x, const __tree_iterator& __y) | |
{return __x.__ptr_ == __y.__ptr_;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const __tree_iterator& __x, const __tree_iterator& __y) | |
{return !(__x == __y);} | |
private: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tree_iterator(__node_pointer __p) noexcept : __ptr_(__p) {} | |
template <class, class, class> friend class __tree; | |
template <class, class, class> friend class __attribute__ ((__type_visibility__("default"))) __tree_const_iterator; | |
template <class> friend class __attribute__ ((__type_visibility__("default"))) __map_iterator; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) map; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multimap; | |
template <class, class, class> friend class __attribute__ ((__type_visibility__("default"))) set; | |
template <class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multiset; | |
}; | |
template <class _Tp, class _ConstNodePtr, class _DiffType> | |
class __attribute__ ((__type_visibility__("default"))) __tree_const_iterator | |
{ | |
typedef _ConstNodePtr __node_pointer; | |
typedef typename pointer_traits<__node_pointer>::element_type __node; | |
__node_pointer __ptr_; | |
typedef pointer_traits<__node_pointer> __pointer_traits; | |
public: | |
typedef bidirectional_iterator_tag iterator_category; | |
typedef _Tp value_type; | |
typedef _DiffType difference_type; | |
typedef const value_type& reference; | |
typedef typename __rebind_pointer<__node_pointer, const value_type>::type pointer; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __tree_const_iterator() noexcept | |
{} | |
private: | |
typedef typename remove_const<__node>::type __non_const_node; | |
typedef typename __rebind_pointer<__node_pointer, __non_const_node>::type | |
__non_const_node_pointer; | |
typedef __tree_iterator<value_type, __non_const_node_pointer, difference_type> | |
__non_const_iterator; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_const_iterator(__non_const_iterator __p) noexcept | |
: __ptr_(__p.__ptr_) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) reference operator*() const {return __ptr_->__value_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) pointer operator->() const | |
{return pointer_traits<pointer>::pointer_to(__ptr_->__value_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_const_iterator& operator++() { | |
typedef typename __rebind_pointer<__node_pointer, typename __node::base>::type | |
__node_base_pointer; | |
__ptr_ = static_cast<__node_pointer>( | |
__tree_next(static_cast<__node_base_pointer>(__ptr_))); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_const_iterator operator++(int) | |
{__tree_const_iterator __t(*this); ++(*this); return __t;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_const_iterator& operator--() { | |
typedef typename __rebind_pointer<__node_pointer, typename __node::base>::type | |
__node_base_pointer; | |
__ptr_ = static_cast<__node_pointer>( | |
__tree_prev(static_cast<__node_base_pointer>(__ptr_))); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__tree_const_iterator operator--(int) | |
{__tree_const_iterator __t(*this); --(*this); return __t;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const __tree_const_iterator& __x, const __tree_const_iterator& __y) | |
{return __x.__ptr_ == __y.__ptr_;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const __tree_const_iterator& __x, const __tree_const_iterator& __y) | |
{return !(__x == __y);} | |
private: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __tree_const_iterator(__node_pointer __p) noexcept | |
: __ptr_(__p) {} | |
template <class, class, class> friend class __tree; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) map; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multimap; | |
template <class, class, class> friend class __attribute__ ((__type_visibility__("default"))) set; | |
template <class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multiset; | |
template <class> friend class __attribute__ ((__type_visibility__("default"))) __map_const_iterator; | |
}; | |
template <class _Tp, class _Compare, class _Allocator> | |
class __tree | |
{ | |
public: | |
typedef _Tp value_type; | |
typedef _Compare value_compare; | |
typedef _Allocator allocator_type; | |
typedef allocator_traits<allocator_type> __alloc_traits; | |
typedef typename __alloc_traits::pointer pointer; | |
typedef typename __alloc_traits::const_pointer const_pointer; | |
typedef typename __alloc_traits::size_type size_type; | |
typedef typename __alloc_traits::difference_type difference_type; | |
typedef typename __alloc_traits::void_pointer __void_pointer; | |
typedef __tree_node<value_type, __void_pointer> __node; | |
typedef __tree_node_base<__void_pointer> __node_base; | |
typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; | |
typedef allocator_traits<__node_allocator> __node_traits; | |
typedef typename __node_traits::pointer __node_pointer; | |
typedef typename __node_traits::pointer __node_const_pointer; | |
typedef typename __node_base::pointer __node_base_pointer; | |
typedef typename __node_base::pointer __node_base_const_pointer; | |
private: | |
typedef typename __node_base::base __end_node_t; | |
typedef typename __rebind_pointer<__node_pointer, __end_node_t>::type | |
__end_node_ptr; | |
typedef __end_node_ptr __end_node_const_ptr; | |
__node_pointer __begin_node_; | |
__compressed_pair<__end_node_t, __node_allocator> __pair1_; | |
__compressed_pair<size_type, value_compare> __pair3_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__node_pointer __end_node() noexcept | |
{ | |
return static_cast<__node_pointer> | |
( | |
pointer_traits<__end_node_ptr>::pointer_to(__pair1_.first()) | |
); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__node_const_pointer __end_node() const noexcept | |
{ | |
return static_cast<__node_const_pointer> | |
( | |
pointer_traits<__end_node_const_ptr>::pointer_to(const_cast<__end_node_t&>(__pair1_.first())) | |
); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__node_allocator& __node_alloc() noexcept {return __pair1_.second();} | |
private: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const __node_allocator& __node_alloc() const noexcept | |
{return __pair1_.second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__node_pointer& __begin_node() noexcept {return __begin_node_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const __node_pointer& __begin_node() const noexcept {return __begin_node_;} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
allocator_type __alloc() const noexcept | |
{return allocator_type(__node_alloc());} | |
private: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type& size() noexcept {return __pair3_.first();} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const size_type& size() const noexcept {return __pair3_.first();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
value_compare& value_comp() noexcept {return __pair3_.second();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const value_compare& value_comp() const noexcept | |
{return __pair3_.second();} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__node_pointer __root() noexcept | |
{return static_cast<__node_pointer> (__end_node()->__left_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__node_const_pointer __root() const noexcept | |
{return static_cast<__node_const_pointer>(__end_node()->__left_);} | |
typedef __tree_iterator<value_type, __node_pointer, difference_type> iterator; | |
typedef __tree_const_iterator<value_type, __node_pointer, difference_type> const_iterator; | |
explicit __tree(const value_compare& __comp) | |
noexcept(is_nothrow_default_constructible<__node_allocator>::value && is_nothrow_copy_constructible<value_compare>::value); | |
explicit __tree(const allocator_type& __a); | |
__tree(const value_compare& __comp, const allocator_type& __a); | |
__tree(const __tree& __t); | |
__tree& operator=(const __tree& __t); | |
template <class _InputIterator> | |
void __assign_unique(_InputIterator __first, _InputIterator __last); | |
template <class _InputIterator> | |
void __assign_multi(_InputIterator __first, _InputIterator __last); | |
__tree(__tree&& __t) | |
noexcept(is_nothrow_move_constructible<__node_allocator>::value && is_nothrow_move_constructible<value_compare>::value); | |
__tree(__tree&& __t, const allocator_type& __a); | |
__tree& operator=(__tree&& __t) | |
noexcept(__node_traits::propagate_on_container_move_assignment::value && is_nothrow_move_assignable<value_compare>::value && is_nothrow_move_assignable<__node_allocator>::value); | |
~__tree(); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator begin() noexcept {return iterator(__begin_node());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator begin() const noexcept {return const_iterator(__begin_node());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator end() noexcept {return iterator(__end_node());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator end() const noexcept {return const_iterator(__end_node());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type max_size() const noexcept | |
{return __node_traits::max_size(__node_alloc());} | |
void clear() noexcept; | |
void swap(__tree& __t) | |
noexcept(__is_nothrow_swappable<value_compare>::value && (!__node_traits::propagate_on_container_swap::value || __is_nothrow_swappable<__node_allocator>::value)); | |
# 882 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
template <class... _Args> | |
pair<iterator, bool> | |
__emplace_unique(_Args&&... __args); | |
template <class... _Args> | |
iterator | |
__emplace_multi(_Args&&... __args); | |
template <class... _Args> | |
iterator | |
__emplace_hint_unique(const_iterator __p, _Args&&... __args); | |
template <class... _Args> | |
iterator | |
__emplace_hint_multi(const_iterator __p, _Args&&... __args); | |
template <class _Vp> | |
pair<iterator, bool> __insert_unique(_Vp&& __v); | |
template <class _Vp> | |
iterator __insert_unique(const_iterator __p, _Vp&& __v); | |
template <class _Vp> | |
iterator __insert_multi(_Vp&& __v); | |
template <class _Vp> | |
iterator __insert_multi(const_iterator __p, _Vp&& __v); | |
pair<iterator, bool> __insert_unique(const value_type& __v); | |
iterator __insert_unique(const_iterator __p, const value_type& __v); | |
iterator __insert_multi(const value_type& __v); | |
iterator __insert_multi(const_iterator __p, const value_type& __v); | |
pair<iterator, bool> __insert_unique( value_type&& __v); | |
iterator __insert_unique(const_iterator __p, value_type&& __v); | |
iterator __insert_multi( value_type&& __v); | |
iterator __insert_multi(const_iterator __p, value_type&& __v); | |
pair<iterator, bool> __node_insert_unique(__node_pointer __nd); | |
iterator __node_insert_unique(const_iterator __p, | |
__node_pointer __nd); | |
iterator __node_insert_multi(__node_pointer __nd); | |
iterator __node_insert_multi(const_iterator __p, __node_pointer __nd); | |
iterator erase(const_iterator __p); | |
iterator erase(const_iterator __f, const_iterator __l); | |
template <class _Key> | |
size_type __erase_unique(const _Key& __k); | |
template <class _Key> | |
size_type __erase_multi(const _Key& __k); | |
void __insert_node_at(__node_base_pointer __parent, | |
__node_base_pointer& __child, | |
__node_base_pointer __new_node); | |
template <class _Key> | |
iterator find(const _Key& __v); | |
template <class _Key> | |
const_iterator find(const _Key& __v) const; | |
template <class _Key> | |
size_type __count_unique(const _Key& __k) const; | |
template <class _Key> | |
size_type __count_multi(const _Key& __k) const; | |
template <class _Key> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator lower_bound(const _Key& __v) | |
{return __lower_bound(__v, __root(), __end_node());} | |
template <class _Key> | |
iterator __lower_bound(const _Key& __v, | |
__node_pointer __root, | |
__node_pointer __result); | |
template <class _Key> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator lower_bound(const _Key& __v) const | |
{return __lower_bound(__v, __root(), __end_node());} | |
template <class _Key> | |
const_iterator __lower_bound(const _Key& __v, | |
__node_const_pointer __root, | |
__node_const_pointer __result) const; | |
template <class _Key> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator upper_bound(const _Key& __v) | |
{return __upper_bound(__v, __root(), __end_node());} | |
template <class _Key> | |
iterator __upper_bound(const _Key& __v, | |
__node_pointer __root, | |
__node_pointer __result); | |
template <class _Key> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator upper_bound(const _Key& __v) const | |
{return __upper_bound(__v, __root(), __end_node());} | |
template <class _Key> | |
const_iterator __upper_bound(const _Key& __v, | |
__node_const_pointer __root, | |
__node_const_pointer __result) const; | |
template <class _Key> | |
pair<iterator, iterator> | |
__equal_range_unique(const _Key& __k); | |
template <class _Key> | |
pair<const_iterator, const_iterator> | |
__equal_range_unique(const _Key& __k) const; | |
template <class _Key> | |
pair<iterator, iterator> | |
__equal_range_multi(const _Key& __k); | |
template <class _Key> | |
pair<const_iterator, const_iterator> | |
__equal_range_multi(const _Key& __k) const; | |
typedef __tree_node_destructor<__node_allocator> _Dp; | |
typedef unique_ptr<__node, _Dp> __node_holder; | |
__node_holder remove(const_iterator __p) noexcept; | |
private: | |
typename __node_base::pointer& | |
__find_leaf_low(typename __node_base::pointer& __parent, const value_type& __v); | |
typename __node_base::pointer& | |
__find_leaf_high(typename __node_base::pointer& __parent, const value_type& __v); | |
typename __node_base::pointer& | |
__find_leaf(const_iterator __hint, | |
typename __node_base::pointer& __parent, const value_type& __v); | |
template <class _Key> | |
typename __node_base::pointer& | |
__find_equal(typename __node_base::pointer& __parent, const _Key& __v); | |
template <class _Key> | |
typename __node_base::pointer& | |
__find_equal(const_iterator __hint, typename __node_base::pointer& __parent, | |
const _Key& __v); | |
template <class ..._Args> | |
__node_holder __construct_node(_Args&& ...__args); | |
void destroy(__node_pointer __nd) noexcept; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __copy_assign_alloc(const __tree& __t) | |
{__copy_assign_alloc(__t, integral_constant<bool, | |
__node_traits::propagate_on_container_copy_assignment::value>());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __copy_assign_alloc(const __tree& __t, true_type) | |
{__node_alloc() = __t.__node_alloc();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __copy_assign_alloc(const __tree& __t, false_type) {} | |
void __move_assign(__tree& __t, false_type); | |
void __move_assign(__tree& __t, true_type) | |
noexcept(is_nothrow_move_assignable<value_compare>::value && is_nothrow_move_assignable<__node_allocator>::value); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __move_assign_alloc(__tree& __t) | |
noexcept(!__node_traits::propagate_on_container_move_assignment::value || is_nothrow_move_assignable<__node_allocator>::value) | |
{__move_assign_alloc(__t, integral_constant<bool, | |
__node_traits::propagate_on_container_move_assignment::value>());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __move_assign_alloc(__tree& __t, true_type) | |
noexcept(is_nothrow_move_assignable<__node_allocator>::value) | |
{__node_alloc() = std::__1::move(__t.__node_alloc());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void __move_assign_alloc(__tree& __t, false_type) noexcept {} | |
__node_pointer __detach(); | |
static __node_pointer __detach(__node_pointer); | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) map; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multimap; | |
}; | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp) | |
noexcept(is_nothrow_default_constructible<__node_allocator>::value && is_nothrow_copy_constructible<value_compare>::value) | |
: __pair3_(0, __comp) | |
{ | |
__begin_node() = __end_node(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::__tree(const allocator_type& __a) | |
: __begin_node_(__node_pointer()), | |
__pair1_(__node_allocator(__a)), | |
__pair3_(0) | |
{ | |
__begin_node() = __end_node(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp, | |
const allocator_type& __a) | |
: __begin_node_(__node_pointer()), | |
__pair1_(__node_allocator(__a)), | |
__pair3_(0, __comp) | |
{ | |
__begin_node() = __end_node(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_pointer | |
__tree<_Tp, _Compare, _Allocator>::__detach() | |
{ | |
__node_pointer __cache = __begin_node(); | |
__begin_node() = __end_node(); | |
__end_node()->__left_->__parent_ = nullptr; | |
__end_node()->__left_ = nullptr; | |
size() = 0; | |
if (__cache->__right_ != nullptr) | |
__cache = static_cast<__node_pointer>(__cache->__right_); | |
return __cache; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_pointer | |
__tree<_Tp, _Compare, _Allocator>::__detach(__node_pointer __cache) | |
{ | |
if (__cache->__parent_ == nullptr) | |
return nullptr; | |
if (__tree_is_left_child(static_cast<__node_base_pointer>(__cache))) | |
{ | |
__cache->__parent_->__left_ = nullptr; | |
__cache = static_cast<__node_pointer>(__cache->__parent_); | |
if (__cache->__right_ == nullptr) | |
return __cache; | |
return static_cast<__node_pointer>(__tree_leaf(__cache->__right_)); | |
} | |
__cache->__parent_->__right_ = nullptr; | |
__cache = static_cast<__node_pointer>(__cache->__parent_); | |
if (__cache->__left_ == nullptr) | |
return __cache; | |
return static_cast<__node_pointer>(__tree_leaf(__cache->__left_)); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>& | |
__tree<_Tp, _Compare, _Allocator>::operator=(const __tree& __t) | |
{ | |
if (this != &__t) | |
{ | |
value_comp() = __t.value_comp(); | |
__copy_assign_alloc(__t); | |
__assign_multi(__t.begin(), __t.end()); | |
} | |
return *this; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _InputIterator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::__assign_unique(_InputIterator __first, _InputIterator __last) | |
{ | |
if (size() != 0) | |
{ | |
__node_pointer __cache = __detach(); | |
for (; __cache != nullptr && __first != __last; ++__first) | |
{ | |
__cache->__value_ = *__first; | |
__node_pointer __next = __detach(__cache); | |
__node_insert_unique(__cache); | |
__cache = __next; | |
} | |
# 1175 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
if (__cache != nullptr) | |
{ | |
while (__cache->__parent_ != nullptr) | |
__cache = static_cast<__node_pointer>(__cache->__parent_); | |
destroy(__cache); | |
} | |
} | |
for (; __first != __last; ++__first) | |
__insert_unique(*__first); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _InputIterator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::__assign_multi(_InputIterator __first, _InputIterator __last) | |
{ | |
if (size() != 0) | |
{ | |
__node_pointer __cache = __detach(); | |
for (; __cache != nullptr && __first != __last; ++__first) | |
{ | |
__cache->__value_ = *__first; | |
__node_pointer __next = __detach(__cache); | |
__node_insert_multi(__cache); | |
__cache = __next; | |
} | |
# 1215 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
if (__cache != nullptr) | |
{ | |
while (__cache->__parent_ != nullptr) | |
__cache = static_cast<__node_pointer>(__cache->__parent_); | |
destroy(__cache); | |
} | |
} | |
for (; __first != __last; ++__first) | |
__insert_multi(*__first); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::__tree(const __tree& __t) | |
: __begin_node_(__node_pointer()), | |
__pair1_(__node_traits::select_on_container_copy_construction(__t.__node_alloc())), | |
__pair3_(0, __t.value_comp()) | |
{ | |
__begin_node() = __end_node(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t) | |
noexcept(is_nothrow_move_constructible<__node_allocator>::value && is_nothrow_move_constructible<value_compare>::value) | |
: __begin_node_(std::__1::move(__t.__begin_node_)), | |
__pair1_(std::__1::move(__t.__pair1_)), | |
__pair3_(std::__1::move(__t.__pair3_)) | |
{ | |
if (size() == 0) | |
__begin_node() = __end_node(); | |
else | |
{ | |
__end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); | |
__t.__begin_node() = __t.__end_node(); | |
__t.__end_node()->__left_ = nullptr; | |
__t.size() = 0; | |
} | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t, const allocator_type& __a) | |
: __pair1_(__node_allocator(__a)), | |
__pair3_(0, std::__1::move(__t.value_comp())) | |
{ | |
if (__a == __t.__alloc()) | |
{ | |
if (__t.size() == 0) | |
__begin_node() = __end_node(); | |
else | |
{ | |
__begin_node() = __t.__begin_node(); | |
__end_node()->__left_ = __t.__end_node()->__left_; | |
__end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); | |
size() = __t.size(); | |
__t.__begin_node() = __t.__end_node(); | |
__t.__end_node()->__left_ = nullptr; | |
__t.size() = 0; | |
} | |
} | |
else | |
{ | |
__begin_node() = __end_node(); | |
} | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, true_type) | |
noexcept(is_nothrow_move_assignable<value_compare>::value && is_nothrow_move_assignable<__node_allocator>::value) | |
{ | |
destroy(static_cast<__node_pointer>(__end_node()->__left_)); | |
__begin_node_ = __t.__begin_node_; | |
__pair1_.first() = __t.__pair1_.first(); | |
__move_assign_alloc(__t); | |
__pair3_ = std::__1::move(__t.__pair3_); | |
if (size() == 0) | |
__begin_node() = __end_node(); | |
else | |
{ | |
__end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); | |
__t.__begin_node() = __t.__end_node(); | |
__t.__end_node()->__left_ = nullptr; | |
__t.size() = 0; | |
} | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, false_type) | |
{ | |
if (__node_alloc() == __t.__node_alloc()) | |
__move_assign(__t, true_type()); | |
else | |
{ | |
value_comp() = std::__1::move(__t.value_comp()); | |
const_iterator __e = end(); | |
if (size() != 0) | |
{ | |
__node_pointer __cache = __detach(); | |
while (__cache != nullptr && __t.size() != 0) | |
{ | |
__cache->__value_ = std::__1::move(__t.remove(__t.begin())->__value_); | |
__node_pointer __next = __detach(__cache); | |
__node_insert_multi(__cache); | |
__cache = __next; | |
} | |
# 1339 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
if (__cache != nullptr) | |
{ | |
while (__cache->__parent_ != nullptr) | |
__cache = static_cast<__node_pointer>(__cache->__parent_); | |
destroy(__cache); | |
} | |
} | |
while (__t.size() != 0) | |
__insert_multi(__e, std::__1::move(__t.remove(__t.begin())->__value_)); | |
} | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>& | |
__tree<_Tp, _Compare, _Allocator>::operator=(__tree&& __t) | |
noexcept(__node_traits::propagate_on_container_move_assignment::value && is_nothrow_move_assignable<value_compare>::value && is_nothrow_move_assignable<__node_allocator>::value) | |
{ | |
__move_assign(__t, integral_constant<bool, | |
__node_traits::propagate_on_container_move_assignment::value>()); | |
return *this; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
__tree<_Tp, _Compare, _Allocator>::~__tree() | |
{ | |
destroy(__root()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::destroy(__node_pointer __nd) noexcept | |
{ | |
if (__nd != nullptr) | |
{ | |
destroy(static_cast<__node_pointer>(__nd->__left_)); | |
destroy(static_cast<__node_pointer>(__nd->__right_)); | |
__node_allocator& __na = __node_alloc(); | |
__node_traits::destroy(__na, std::__1::addressof(__nd->__value_)); | |
__node_traits::deallocate(__na, __nd, 1); | |
} | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::swap(__tree& __t) | |
noexcept(__is_nothrow_swappable<value_compare>::value && (!__node_traits::propagate_on_container_swap::value || __is_nothrow_swappable<__node_allocator>::value)) | |
{ | |
using std::__1::swap; | |
swap(__begin_node_, __t.__begin_node_); | |
swap(__pair1_.first(), __t.__pair1_.first()); | |
__swap_allocator(__node_alloc(), __t.__node_alloc()); | |
__pair3_.swap(__t.__pair3_); | |
if (size() == 0) | |
__begin_node() = __end_node(); | |
else | |
__end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); | |
if (__t.size() == 0) | |
__t.__begin_node() = __t.__end_node(); | |
else | |
__t.__end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__t.__end_node()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::clear() noexcept | |
{ | |
destroy(__root()); | |
size() = 0; | |
__begin_node() = __end_node(); | |
__end_node()->__left_ = nullptr; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& | |
__tree<_Tp, _Compare, _Allocator>::__find_leaf_low(typename __node_base::pointer& __parent, | |
const value_type& __v) | |
{ | |
__node_pointer __nd = __root(); | |
if (__nd != nullptr) | |
{ | |
while (true) | |
{ | |
if (value_comp()(__nd->__value_, __v)) | |
{ | |
if (__nd->__right_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__right_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__right_; | |
} | |
} | |
else | |
{ | |
if (__nd->__left_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__left_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__left_; | |
} | |
} | |
} | |
} | |
__parent = static_cast<__node_base_pointer>(__end_node()); | |
return __parent->__left_; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& | |
__tree<_Tp, _Compare, _Allocator>::__find_leaf_high(typename __node_base::pointer& __parent, | |
const value_type& __v) | |
{ | |
__node_pointer __nd = __root(); | |
if (__nd != nullptr) | |
{ | |
while (true) | |
{ | |
if (value_comp()(__v, __nd->__value_)) | |
{ | |
if (__nd->__left_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__left_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__left_; | |
} | |
} | |
else | |
{ | |
if (__nd->__right_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__right_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__right_; | |
} | |
} | |
} | |
} | |
__parent = static_cast<__node_base_pointer>(__end_node()); | |
return __parent->__left_; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& | |
__tree<_Tp, _Compare, _Allocator>::__find_leaf(const_iterator __hint, | |
typename __node_base::pointer& __parent, | |
const value_type& __v) | |
{ | |
if (__hint == end() || !value_comp()(*__hint, __v)) | |
{ | |
const_iterator __prior = __hint; | |
if (__prior == begin() || !value_comp()(__v, *--__prior)) | |
{ | |
if (__hint.__ptr_->__left_ == nullptr) | |
{ | |
__parent = static_cast<__node_base_pointer>(__hint.__ptr_); | |
return __parent->__left_; | |
} | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__prior.__ptr_); | |
return __parent->__right_; | |
} | |
} | |
return __find_leaf_high(__parent, __v); | |
} | |
return __find_leaf_low(__parent, __v); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& | |
__tree<_Tp, _Compare, _Allocator>::__find_equal(typename __node_base::pointer& __parent, | |
const _Key& __v) | |
{ | |
__node_pointer __nd = __root(); | |
if (__nd != nullptr) | |
{ | |
while (true) | |
{ | |
if (value_comp()(__v, __nd->__value_)) | |
{ | |
if (__nd->__left_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__left_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__left_; | |
} | |
} | |
else if (value_comp()(__nd->__value_, __v)) | |
{ | |
if (__nd->__right_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__right_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__right_; | |
} | |
} | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent; | |
} | |
} | |
} | |
__parent = static_cast<__node_base_pointer>(__end_node()); | |
return __parent->__left_; | |
} | |
# 1591 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& | |
__tree<_Tp, _Compare, _Allocator>::__find_equal(const_iterator __hint, | |
typename __node_base::pointer& __parent, | |
const _Key& __v) | |
{ | |
if (__hint == end() || value_comp()(__v, *__hint)) | |
{ | |
const_iterator __prior = __hint; | |
if (__prior == begin() || value_comp()(*--__prior, __v)) | |
{ | |
if (__hint.__ptr_->__left_ == nullptr) | |
{ | |
__parent = static_cast<__node_base_pointer>(__hint.__ptr_); | |
return __parent->__left_; | |
} | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__prior.__ptr_); | |
return __parent->__right_; | |
} | |
} | |
return __find_equal(__parent, __v); | |
} | |
else if (value_comp()(*__hint, __v)) | |
{ | |
const_iterator __next = std::__1::next(__hint); | |
if (__next == end() || value_comp()(__v, *__next)) | |
{ | |
if (__hint.__ptr_->__right_ == nullptr) | |
{ | |
__parent = static_cast<__node_base_pointer>(__hint.__ptr_); | |
return __parent->__right_; | |
} | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__next.__ptr_); | |
return __parent->__left_; | |
} | |
} | |
return __find_equal(__parent, __v); | |
} | |
__parent = static_cast<__node_base_pointer>(__hint.__ptr_); | |
return __parent; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
void | |
__tree<_Tp, _Compare, _Allocator>::__insert_node_at(__node_base_pointer __parent, | |
__node_base_pointer& __child, | |
__node_base_pointer __new_node) | |
{ | |
__new_node->__left_ = nullptr; | |
__new_node->__right_ = nullptr; | |
__new_node->__parent_ = __parent; | |
__child = __new_node; | |
if (__begin_node()->__left_ != nullptr) | |
__begin_node() = static_cast<__node_pointer>(__begin_node()->__left_); | |
__tree_balance_after_insert(__end_node()->__left_, __child); | |
++size(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class ..._Args> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_holder | |
__tree<_Tp, _Compare, _Allocator>::__construct_node(_Args&& ...__args) | |
{ | |
__node_allocator& __na = __node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_), std::__1::forward<_Args>(__args)...); | |
__h.get_deleter().__value_constructed = true; | |
return __h; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class... _Args> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool> | |
__tree<_Tp, _Compare, _Allocator>::__emplace_unique(_Args&&... __args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal(__parent, __h->__value_); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
bool __inserted = false; | |
if (__child == nullptr) | |
{ | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
__r = __h.release(); | |
__inserted = true; | |
} | |
return pair<iterator, bool>(iterator(__r), __inserted); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class... _Args> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique(const_iterator __p, _Args&&... __args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal(__p, __parent, __h->__value_); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
if (__child == nullptr) | |
{ | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
__r = __h.release(); | |
} | |
return iterator(__r); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class... _Args> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__emplace_multi(_Args&&... __args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf_high(__parent, __h->__value_); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(static_cast<__node_pointer>(__h.release())); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class... _Args> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__emplace_hint_multi(const_iterator __p, | |
_Args&&... __args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf(__p, __parent, __h->__value_); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(static_cast<__node_pointer>(__h.release())); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool> | |
__tree<_Tp, _Compare, _Allocator>::__insert_unique(value_type&& __v) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<value_type>(__v)); | |
pair<iterator, bool> __r = __node_insert_unique(__h.get()); | |
if (__r.second) | |
__h.release(); | |
return __r; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_unique(const_iterator __p, value_type&& __v) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<value_type>(__v)); | |
iterator __r = __node_insert_unique(__p, __h.get()); | |
if (__r.__ptr_ == __h.get()) | |
__h.release(); | |
return __r; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Vp> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool> | |
__tree<_Tp, _Compare, _Allocator>::__insert_unique(_Vp&& __v) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Vp>(__v)); | |
pair<iterator, bool> __r = __node_insert_unique(__h.get()); | |
if (__r.second) | |
__h.release(); | |
return __r; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Vp> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_unique(const_iterator __p, _Vp&& __v) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Vp>(__v)); | |
iterator __r = __node_insert_unique(__p, __h.get()); | |
if (__r.__ptr_ == __h.get()) | |
__h.release(); | |
return __r; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_multi(value_type&& __v) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf_high(__parent, __v); | |
__node_holder __h = __construct_node(std::__1::forward<value_type>(__v)); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(__h.release()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_multi(const_iterator __p, value_type&& __v) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf(__p, __parent, __v); | |
__node_holder __h = __construct_node(std::__1::forward<value_type>(__v)); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(__h.release()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Vp> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_multi(_Vp&& __v) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Vp>(__v)); | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf_high(__parent, __h->__value_); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(__h.release()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Vp> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_multi(const_iterator __p, _Vp&& __v) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Vp>(__v)); | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf(__p, __parent, __h->__value_); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(__h.release()); | |
} | |
# 1846 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree" 3 | |
template <class _Tp, class _Compare, class _Allocator> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool> | |
__tree<_Tp, _Compare, _Allocator>::__insert_unique(const value_type& __v) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal(__parent, __v); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
bool __inserted = false; | |
if (__child == nullptr) | |
{ | |
__node_holder __h = __construct_node(__v); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
__r = __h.release(); | |
__inserted = true; | |
} | |
return pair<iterator, bool>(iterator(__r), __inserted); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_unique(const_iterator __p, const value_type& __v) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal(__p, __parent, __v); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
if (__child == nullptr) | |
{ | |
__node_holder __h = __construct_node(__v); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
__r = __h.release(); | |
} | |
return iterator(__r); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_multi(const value_type& __v) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf_high(__parent, __v); | |
__node_holder __h = __construct_node(__v); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(__h.release()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__insert_multi(const_iterator __p, const value_type& __v) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf(__p, __parent, __v); | |
__node_holder __h = __construct_node(__v); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
return iterator(__h.release()); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, bool> | |
__tree<_Tp, _Compare, _Allocator>::__node_insert_unique(__node_pointer __nd) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal(__parent, __nd->__value_); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
bool __inserted = false; | |
if (__child == nullptr) | |
{ | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); | |
__r = __nd; | |
__inserted = true; | |
} | |
return pair<iterator, bool>(iterator(__r), __inserted); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__node_insert_unique(const_iterator __p, | |
__node_pointer __nd) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal(__p, __parent, __nd->__value_); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
if (__child == nullptr) | |
{ | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); | |
__r = __nd; | |
} | |
return iterator(__r); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(__node_pointer __nd) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf_high(__parent, __nd->__value_); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); | |
return iterator(__nd); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(const_iterator __p, | |
__node_pointer __nd) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_leaf(__p, __parent, __nd->__value_); | |
__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); | |
return iterator(__nd); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __p) | |
{ | |
__node_pointer __np = __p.__ptr_; | |
iterator __r(__np); | |
++__r; | |
if (__begin_node() == __np) | |
__begin_node() = __r.__ptr_; | |
--size(); | |
__node_allocator& __na = __node_alloc(); | |
__tree_remove(__end_node()->__left_, | |
static_cast<__node_base_pointer>(__np)); | |
__node_traits::destroy(__na, const_cast<value_type*>(std::__1::addressof(*__p))); | |
__node_traits::deallocate(__na, __np, 1); | |
return __r; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __f, const_iterator __l) | |
{ | |
while (__f != __l) | |
__f = erase(__f); | |
return iterator(__l.__ptr_); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::size_type | |
__tree<_Tp, _Compare, _Allocator>::__erase_unique(const _Key& __k) | |
{ | |
iterator __i = find(__k); | |
if (__i == end()) | |
return 0; | |
erase(__i); | |
return 1; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::size_type | |
__tree<_Tp, _Compare, _Allocator>::__erase_multi(const _Key& __k) | |
{ | |
pair<iterator, iterator> __p = __equal_range_multi(__k); | |
size_type __r = 0; | |
for (; __p.first != __p.second; ++__r) | |
__p.first = erase(__p.first); | |
return __r; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) | |
{ | |
iterator __p = __lower_bound(__v, __root(), __end_node()); | |
if (__p != end() && !value_comp()(__v, *__p)) | |
return __p; | |
return end(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::const_iterator | |
__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) const | |
{ | |
const_iterator __p = __lower_bound(__v, __root(), __end_node()); | |
if (__p != end() && !value_comp()(__v, *__p)) | |
return __p; | |
return end(); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::size_type | |
__tree<_Tp, _Compare, _Allocator>::__count_unique(const _Key& __k) const | |
{ | |
__node_const_pointer __result = __end_node(); | |
__node_const_pointer __rt = __root(); | |
while (__rt != nullptr) | |
{ | |
if (value_comp()(__k, __rt->__value_)) | |
{ | |
__result = __rt; | |
__rt = static_cast<__node_const_pointer>(__rt->__left_); | |
} | |
else if (value_comp()(__rt->__value_, __k)) | |
__rt = static_cast<__node_const_pointer>(__rt->__right_); | |
else | |
return 1; | |
} | |
return 0; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::size_type | |
__tree<_Tp, _Compare, _Allocator>::__count_multi(const _Key& __k) const | |
{ | |
__node_const_pointer __result = __end_node(); | |
__node_const_pointer __rt = __root(); | |
while (__rt != nullptr) | |
{ | |
if (value_comp()(__k, __rt->__value_)) | |
{ | |
__result = __rt; | |
__rt = static_cast<__node_const_pointer>(__rt->__left_); | |
} | |
else if (value_comp()(__rt->__value_, __k)) | |
__rt = static_cast<__node_const_pointer>(__rt->__right_); | |
else | |
return std::__1::distance( | |
__lower_bound(__k, static_cast<__node_const_pointer>(__rt->__left_), __rt), | |
__upper_bound(__k, static_cast<__node_const_pointer>(__rt->__right_), __result) | |
); | |
} | |
return 0; | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v, | |
__node_pointer __root, | |
__node_pointer __result) | |
{ | |
while (__root != nullptr) | |
{ | |
if (!value_comp()(__root->__value_, __v)) | |
{ | |
__result = __root; | |
__root = static_cast<__node_pointer>(__root->__left_); | |
} | |
else | |
__root = static_cast<__node_pointer>(__root->__right_); | |
} | |
return iterator(__result); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::const_iterator | |
__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v, | |
__node_const_pointer __root, | |
__node_const_pointer __result) const | |
{ | |
while (__root != nullptr) | |
{ | |
if (!value_comp()(__root->__value_, __v)) | |
{ | |
__result = __root; | |
__root = static_cast<__node_const_pointer>(__root->__left_); | |
} | |
else | |
__root = static_cast<__node_const_pointer>(__root->__right_); | |
} | |
return const_iterator(__result); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::iterator | |
__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v, | |
__node_pointer __root, | |
__node_pointer __result) | |
{ | |
while (__root != nullptr) | |
{ | |
if (value_comp()(__v, __root->__value_)) | |
{ | |
__result = __root; | |
__root = static_cast<__node_pointer>(__root->__left_); | |
} | |
else | |
__root = static_cast<__node_pointer>(__root->__right_); | |
} | |
return iterator(__result); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
typename __tree<_Tp, _Compare, _Allocator>::const_iterator | |
__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v, | |
__node_const_pointer __root, | |
__node_const_pointer __result) const | |
{ | |
while (__root != nullptr) | |
{ | |
if (value_comp()(__v, __root->__value_)) | |
{ | |
__result = __root; | |
__root = static_cast<__node_const_pointer>(__root->__left_); | |
} | |
else | |
__root = static_cast<__node_const_pointer>(__root->__right_); | |
} | |
return const_iterator(__result); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, | |
typename __tree<_Tp, _Compare, _Allocator>::iterator> | |
__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) | |
{ | |
typedef pair<iterator, iterator> _Pp; | |
__node_pointer __result = __end_node(); | |
__node_pointer __rt = __root(); | |
while (__rt != nullptr) | |
{ | |
if (value_comp()(__k, __rt->__value_)) | |
{ | |
__result = __rt; | |
__rt = static_cast<__node_pointer>(__rt->__left_); | |
} | |
else if (value_comp()(__rt->__value_, __k)) | |
__rt = static_cast<__node_pointer>(__rt->__right_); | |
else | |
return _Pp(iterator(__rt), | |
iterator( | |
__rt->__right_ != nullptr ? | |
static_cast<__node_pointer>(__tree_min(__rt->__right_)) | |
: __result)); | |
} | |
return _Pp(iterator(__result), iterator(__result)); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::const_iterator, | |
typename __tree<_Tp, _Compare, _Allocator>::const_iterator> | |
__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) const | |
{ | |
typedef pair<const_iterator, const_iterator> _Pp; | |
__node_const_pointer __result = __end_node(); | |
__node_const_pointer __rt = __root(); | |
while (__rt != nullptr) | |
{ | |
if (value_comp()(__k, __rt->__value_)) | |
{ | |
__result = __rt; | |
__rt = static_cast<__node_const_pointer>(__rt->__left_); | |
} | |
else if (value_comp()(__rt->__value_, __k)) | |
__rt = static_cast<__node_const_pointer>(__rt->__right_); | |
else | |
return _Pp(const_iterator(__rt), | |
const_iterator( | |
__rt->__right_ != nullptr ? | |
static_cast<__node_const_pointer>(__tree_min(__rt->__right_)) | |
: __result)); | |
} | |
return _Pp(const_iterator(__result), const_iterator(__result)); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::iterator, | |
typename __tree<_Tp, _Compare, _Allocator>::iterator> | |
__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) | |
{ | |
typedef pair<iterator, iterator> _Pp; | |
__node_pointer __result = __end_node(); | |
__node_pointer __rt = __root(); | |
while (__rt != nullptr) | |
{ | |
if (value_comp()(__k, __rt->__value_)) | |
{ | |
__result = __rt; | |
__rt = static_cast<__node_pointer>(__rt->__left_); | |
} | |
else if (value_comp()(__rt->__value_, __k)) | |
__rt = static_cast<__node_pointer>(__rt->__right_); | |
else | |
return _Pp(__lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), __rt), | |
__upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result)); | |
} | |
return _Pp(iterator(__result), iterator(__result)); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
template <class _Key> | |
pair<typename __tree<_Tp, _Compare, _Allocator>::const_iterator, | |
typename __tree<_Tp, _Compare, _Allocator>::const_iterator> | |
__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) const | |
{ | |
typedef pair<const_iterator, const_iterator> _Pp; | |
__node_const_pointer __result = __end_node(); | |
__node_const_pointer __rt = __root(); | |
while (__rt != nullptr) | |
{ | |
if (value_comp()(__k, __rt->__value_)) | |
{ | |
__result = __rt; | |
__rt = static_cast<__node_const_pointer>(__rt->__left_); | |
} | |
else if (value_comp()(__rt->__value_, __k)) | |
__rt = static_cast<__node_const_pointer>(__rt->__right_); | |
else | |
return _Pp(__lower_bound(__k, static_cast<__node_const_pointer>(__rt->__left_), __rt), | |
__upper_bound(__k, static_cast<__node_const_pointer>(__rt->__right_), __result)); | |
} | |
return _Pp(const_iterator(__result), const_iterator(__result)); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
typename __tree<_Tp, _Compare, _Allocator>::__node_holder | |
__tree<_Tp, _Compare, _Allocator>::remove(const_iterator __p) noexcept | |
{ | |
__node_pointer __np = __p.__ptr_; | |
if (__begin_node() == __np) | |
{ | |
if (__np->__right_ != nullptr) | |
__begin_node() = static_cast<__node_pointer>(__np->__right_); | |
else | |
__begin_node() = static_cast<__node_pointer>(__np->__parent_); | |
} | |
--size(); | |
__tree_remove(__end_node()->__left_, | |
static_cast<__node_base_pointer>(__np)); | |
return __node_holder(__np, _Dp(__node_alloc(), true)); | |
} | |
template <class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(__tree<_Tp, _Compare, _Allocator>& __x, | |
__tree<_Tp, _Compare, _Allocator>& __y) | |
noexcept(noexcept(__x.swap(__y))) | |
{ | |
__x.swap(__y); | |
} | |
} } | |
# 443 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 1 3 | |
# 484 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
namespace std {inline namespace __1 { | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) plus : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x + __y;} | |
}; | |
# 518 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) minus : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x - __y;} | |
}; | |
# 545 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) multiplies : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x * __y;} | |
}; | |
# 572 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) divides : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x / __y;} | |
}; | |
# 599 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) modulus : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x % __y;} | |
}; | |
# 626 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) negate : unary_function<_Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x) const | |
{return -__x;} | |
}; | |
# 653 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) equal_to : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x == __y;} | |
}; | |
# 680 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) not_equal_to : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x != __y;} | |
}; | |
# 707 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) greater : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x > __y;} | |
}; | |
# 736 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) greater_equal : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x >= __y;} | |
}; | |
# 763 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) less_equal : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x <= __y;} | |
}; | |
# 790 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) logical_and : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x && __y;} | |
}; | |
# 817 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) logical_or : binary_function<_Tp, _Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x || __y;} | |
}; | |
# 844 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) logical_not : unary_function<_Tp, bool> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Tp& __x) const | |
{return !__x;} | |
}; | |
# 871 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) bit_and : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x & __y;} | |
}; | |
# 898 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) bit_or : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x | __y;} | |
}; | |
# 925 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Tp> | |
struct __attribute__ ((__type_visibility__("default"))) bit_xor : binary_function<_Tp, _Tp, _Tp> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp operator()(const _Tp& __x, const _Tp& __y) const | |
{return __x ^ __y;} | |
}; | |
# 971 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Predicate> | |
class __attribute__ ((__type_visibility__("default"))) unary_negate | |
: public unary_function<typename _Predicate::argument_type, bool> | |
{ | |
_Predicate __pred_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit unary_negate(const _Predicate& __pred) | |
: __pred_(__pred) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const typename _Predicate::argument_type& __x) const | |
{return !__pred_(__x);} | |
}; | |
template <class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
unary_negate<_Predicate> | |
not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);} | |
template <class _Predicate> | |
class __attribute__ ((__type_visibility__("default"))) binary_negate | |
: public binary_function<typename _Predicate::first_argument_type, | |
typename _Predicate::second_argument_type, | |
bool> | |
{ | |
_Predicate __pred_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit | |
binary_negate(const _Predicate& __pred) : __pred_(__pred) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const typename _Predicate::first_argument_type& __x, | |
const typename _Predicate::second_argument_type& __y) const | |
{return !__pred_(__x, __y);} | |
}; | |
template <class _Predicate> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
binary_negate<_Predicate> | |
not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);} | |
template <class __Operation> | |
class __attribute__ ((__type_visibility__("default"))) binder1st | |
: public unary_function<typename __Operation::second_argument_type, | |
typename __Operation::result_type> | |
{ | |
protected: | |
__Operation op; | |
typename __Operation::first_argument_type value; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) binder1st(const __Operation& __x, | |
const typename __Operation::first_argument_type __y) | |
: op(__x), value(__y) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) typename __Operation::result_type operator() | |
(typename __Operation::second_argument_type& __x) const | |
{return op(value, __x);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) typename __Operation::result_type operator() | |
(const typename __Operation::second_argument_type& __x) const | |
{return op(value, __x);} | |
}; | |
template <class __Operation, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
binder1st<__Operation> | |
bind1st(const __Operation& __op, const _Tp& __x) | |
{return binder1st<__Operation>(__op, __x);} | |
template <class __Operation> | |
class __attribute__ ((__type_visibility__("default"))) binder2nd | |
: public unary_function<typename __Operation::first_argument_type, | |
typename __Operation::result_type> | |
{ | |
protected: | |
__Operation op; | |
typename __Operation::second_argument_type value; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y) | |
: op(__x), value(__y) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) typename __Operation::result_type operator() | |
( typename __Operation::first_argument_type& __x) const | |
{return op(__x, value);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) typename __Operation::result_type operator() | |
(const typename __Operation::first_argument_type& __x) const | |
{return op(__x, value);} | |
}; | |
template <class __Operation, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
binder2nd<__Operation> | |
bind2nd(const __Operation& __op, const _Tp& __x) | |
{return binder2nd<__Operation>(__op, __x);} | |
template <class _Arg, class _Result> | |
class __attribute__ ((__type_visibility__("default"))) pointer_to_unary_function | |
: public unary_function<_Arg, _Result> | |
{ | |
_Result (*__f_)(_Arg); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit pointer_to_unary_function(_Result (*__f)(_Arg)) | |
: __f_(__f) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Result operator()(_Arg __x) const | |
{return __f_(__x);} | |
}; | |
template <class _Arg, class _Result> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pointer_to_unary_function<_Arg,_Result> | |
ptr_fun(_Result (*__f)(_Arg)) | |
{return pointer_to_unary_function<_Arg,_Result>(__f);} | |
template <class _Arg1, class _Arg2, class _Result> | |
class __attribute__ ((__type_visibility__("default"))) pointer_to_binary_function | |
: public binary_function<_Arg1, _Arg2, _Result> | |
{ | |
_Result (*__f_)(_Arg1, _Arg2); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2)) | |
: __f_(__f) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Result operator()(_Arg1 __x, _Arg2 __y) const | |
{return __f_(__x, __y);} | |
}; | |
template <class _Arg1, class _Arg2, class _Result> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pointer_to_binary_function<_Arg1,_Arg2,_Result> | |
ptr_fun(_Result (*__f)(_Arg1,_Arg2)) | |
{return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);} | |
template<class _Sp, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) mem_fun_t : public unary_function<_Tp*, _Sp> | |
{ | |
_Sp (_Tp::*__p_)(); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit mem_fun_t(_Sp (_Tp::*__p)()) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(_Tp* __p) const | |
{return (__p->*__p_)();} | |
}; | |
template<class _Sp, class _Tp, class _Ap> | |
class __attribute__ ((__type_visibility__("default"))) mem_fun1_t : public binary_function<_Tp*, _Ap, _Sp> | |
{ | |
_Sp (_Tp::*__p_)(_Ap); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap)) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(_Tp* __p, _Ap __x) const | |
{return (__p->*__p_)(__x);} | |
}; | |
template<class _Sp, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
mem_fun_t<_Sp,_Tp> | |
mem_fun(_Sp (_Tp::*__f)()) | |
{return mem_fun_t<_Sp,_Tp>(__f);} | |
template<class _Sp, class _Tp, class _Ap> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
mem_fun1_t<_Sp,_Tp,_Ap> | |
mem_fun(_Sp (_Tp::*__f)(_Ap)) | |
{return mem_fun1_t<_Sp,_Tp,_Ap>(__f);} | |
template<class _Sp, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) mem_fun_ref_t : public unary_function<_Tp, _Sp> | |
{ | |
_Sp (_Tp::*__p_)(); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit mem_fun_ref_t(_Sp (_Tp::*__p)()) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(_Tp& __p) const | |
{return (__p.*__p_)();} | |
}; | |
template<class _Sp, class _Tp, class _Ap> | |
class __attribute__ ((__type_visibility__("default"))) mem_fun1_ref_t : public binary_function<_Tp, _Ap, _Sp> | |
{ | |
_Sp (_Tp::*__p_)(_Ap); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap)) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(_Tp& __p, _Ap __x) const | |
{return (__p.*__p_)(__x);} | |
}; | |
template<class _Sp, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
mem_fun_ref_t<_Sp,_Tp> | |
mem_fun_ref(_Sp (_Tp::*__f)()) | |
{return mem_fun_ref_t<_Sp,_Tp>(__f);} | |
template<class _Sp, class _Tp, class _Ap> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
mem_fun1_ref_t<_Sp,_Tp,_Ap> | |
mem_fun_ref(_Sp (_Tp::*__f)(_Ap)) | |
{return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} | |
template <class _Sp, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) const_mem_fun_t : public unary_function<const _Tp*, _Sp> | |
{ | |
_Sp (_Tp::*__p_)() const; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit const_mem_fun_t(_Sp (_Tp::*__p)() const) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(const _Tp* __p) const | |
{return (__p->*__p_)();} | |
}; | |
template <class _Sp, class _Tp, class _Ap> | |
class __attribute__ ((__type_visibility__("default"))) const_mem_fun1_t : public binary_function<const _Tp*, _Ap, _Sp> | |
{ | |
_Sp (_Tp::*__p_)(_Ap) const; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(const _Tp* __p, _Ap __x) const | |
{return (__p->*__p_)(__x);} | |
}; | |
template <class _Sp, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_mem_fun_t<_Sp,_Tp> | |
mem_fun(_Sp (_Tp::*__f)() const) | |
{return const_mem_fun_t<_Sp,_Tp>(__f);} | |
template <class _Sp, class _Tp, class _Ap> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_mem_fun1_t<_Sp,_Tp,_Ap> | |
mem_fun(_Sp (_Tp::*__f)(_Ap) const) | |
{return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);} | |
template <class _Sp, class _Tp> | |
class __attribute__ ((__type_visibility__("default"))) const_mem_fun_ref_t : public unary_function<_Tp, _Sp> | |
{ | |
_Sp (_Tp::*__p_)() const; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(const _Tp& __p) const | |
{return (__p.*__p_)();} | |
}; | |
template <class _Sp, class _Tp, class _Ap> | |
class __attribute__ ((__type_visibility__("default"))) const_mem_fun1_ref_t | |
: public binary_function<_Tp, _Ap, _Sp> | |
{ | |
_Sp (_Tp::*__p_)(_Ap) const; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const) | |
: __p_(__p) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _Sp operator()(const _Tp& __p, _Ap __x) const | |
{return (__p.*__p_)(__x);} | |
}; | |
template <class _Sp, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_mem_fun_ref_t<_Sp,_Tp> | |
mem_fun_ref(_Sp (_Tp::*__f)() const) | |
{return const_mem_fun_ref_t<_Sp,_Tp>(__f);} | |
template <class _Sp, class _Tp, class _Ap> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_mem_fun1_ref_t<_Sp,_Tp,_Ap> | |
mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const) | |
{return const_mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} | |
template <class _Tp> | |
class __mem_fn | |
: public __weak_result_type<_Tp> | |
{ | |
public: | |
typedef _Tp type; | |
private: | |
type __f_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __mem_fn(type __f) : __f_(__f) {} | |
template <class... _ArgTypes> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __invoke_return<type, _ArgTypes...>::type | |
operator() (_ArgTypes&&... __args) const { | |
return __invoke(__f_, std::__1::forward<_ArgTypes>(__args)...); | |
} | |
# 1282 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
}; | |
template<class _Rp, class _Tp> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__mem_fn<_Rp _Tp::*> | |
mem_fn(_Rp _Tp::* __pm) | |
{ | |
return __mem_fn<_Rp _Tp::*>(__pm); | |
} | |
class __attribute__ ((__visibility__("default"))) bad_function_call | |
: public exception | |
{ | |
}; | |
template<class _Fp> class __attribute__ ((__type_visibility__("default"))) function; | |
namespace __function | |
{ | |
template<class _Rp> | |
struct __maybe_derive_from_unary_function | |
{ | |
}; | |
template<class _Rp, class _A1> | |
struct __maybe_derive_from_unary_function<_Rp(_A1)> | |
: public unary_function<_A1, _Rp> | |
{ | |
}; | |
template<class _Rp> | |
struct __maybe_derive_from_binary_function | |
{ | |
}; | |
template<class _Rp, class _A1, class _A2> | |
struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)> | |
: public binary_function<_A1, _A2, _Rp> | |
{ | |
}; | |
} | |
namespace __function { | |
template<class _Fp> class __base; | |
template<class _Rp, class ..._ArgTypes> | |
class __base<_Rp(_ArgTypes...)> | |
{ | |
__base(const __base&); | |
__base& operator=(const __base&); | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) __base() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) virtual ~__base() {} | |
virtual __base* __clone() const = 0; | |
virtual void __clone(__base*) const = 0; | |
virtual void destroy() noexcept = 0; | |
virtual void destroy_deallocate() noexcept = 0; | |
virtual _Rp operator()(_ArgTypes&& ...) = 0; | |
virtual const void* target(const type_info&) const noexcept = 0; | |
virtual const std::type_info& target_type() const noexcept = 0; | |
}; | |
template<class _FD, class _Alloc, class _FB> class __func; | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
class __func<_Fp, _Alloc, _Rp(_ArgTypes...)> | |
: public __base<_Rp(_ArgTypes...)> | |
{ | |
__compressed_pair<_Fp, _Alloc> __f_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __func(_Fp&& __f) | |
: __f_(piecewise_construct, std::__1::forward_as_tuple(std::__1::move(__f)), | |
std::__1::forward_as_tuple()) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __func(const _Fp& __f, const _Alloc& __a) | |
: __f_(piecewise_construct, std::__1::forward_as_tuple(__f), | |
std::__1::forward_as_tuple(__a)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __func(const _Fp& __f, _Alloc&& __a) | |
: __f_(piecewise_construct, std::__1::forward_as_tuple(__f), | |
std::__1::forward_as_tuple(std::__1::move(__a))) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __func(_Fp&& __f, _Alloc&& __a) | |
: __f_(piecewise_construct, std::__1::forward_as_tuple(std::__1::move(__f)), | |
std::__1::forward_as_tuple(std::__1::move(__a))) {} | |
virtual __base<_Rp(_ArgTypes...)>* __clone() const; | |
virtual void __clone(__base<_Rp(_ArgTypes...)>*) const; | |
virtual void destroy() noexcept; | |
virtual void destroy_deallocate() noexcept; | |
virtual _Rp operator()(_ArgTypes&& ... __arg); | |
virtual const void* target(const type_info&) const noexcept; | |
virtual const std::type_info& target_type() const noexcept; | |
}; | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
__base<_Rp(_ArgTypes...)>* | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const | |
{ | |
typedef allocator_traits<_Alloc> __alloc_traits; | |
typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; | |
_Ap __a(__f_.second()); | |
typedef __allocator_destructor<_Ap> _Dp; | |
unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); | |
::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); | |
return __hold.release(); | |
} | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
void | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const | |
{ | |
::new (__p) __func(__f_.first(), __f_.second()); | |
} | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
void | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() noexcept | |
{ | |
__f_.~__compressed_pair<_Fp, _Alloc>(); | |
} | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
void | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() noexcept | |
{ | |
typedef allocator_traits<_Alloc> __alloc_traits; | |
typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; | |
_Ap __a(__f_.second()); | |
__f_.~__compressed_pair<_Fp, _Alloc>(); | |
__a.deallocate(this, 1); | |
} | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
_Rp | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg) | |
{ | |
typedef __invoke_void_return_wrapper<_Rp> _Invoker; | |
return _Invoker::__call(__f_.first(), std::__1::forward<_ArgTypes>(__arg)...); | |
} | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
const void* | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const noexcept | |
{ | |
if (__ti == typeid(_Fp)) | |
return &__f_.first(); | |
return (const void*)0; | |
} | |
template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> | |
const std::type_info& | |
__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const noexcept | |
{ | |
return typeid(_Fp); | |
} | |
} | |
template<class _Rp, class ..._ArgTypes> | |
class __attribute__ ((__type_visibility__("default"))) function<_Rp(_ArgTypes...)> | |
: public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>, | |
public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)> | |
{ | |
typedef __function::__base<_Rp(_ArgTypes...)> __base; | |
typename aligned_storage<3*sizeof(void*)>::type __buf_; | |
__base* __f_; | |
template <class _Fp> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(const _Fp&) {return true;} | |
template <class _R2, class ..._Ap> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(_R2 (*__p)(_Ap...)) {return __p;} | |
template <class _R2, class _Cp, class ..._Ap> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(_R2 (_Cp::*__p)(_Ap...)) {return __p;} | |
template <class _R2, class _Cp, class ..._Ap> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(_R2 (_Cp::*__p)(_Ap...) const) {return __p;} | |
template <class _R2, class _Cp, class ..._Ap> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(_R2 (_Cp::*__p)(_Ap...) volatile) {return __p;} | |
template <class _R2, class _Cp, class ..._Ap> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(_R2 (_Cp::*__p)(_Ap...) const volatile) {return __p;} | |
template <class _R2, class ..._Ap> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static bool __not_null(const function<_R2(_Ap...)>& __p) {return !!__p;} | |
template <class _Fp, bool = !is_same<_Fp, function>::value && | |
__invokable<_Fp&, _ArgTypes...>::value> | |
struct __callable; | |
template <class _Fp> | |
struct __callable<_Fp, true> | |
{ | |
static const bool value = is_same<void, _Rp>::value || | |
is_convertible<typename __invoke_of<_Fp&, _ArgTypes...>::type, | |
_Rp>::value; | |
}; | |
template <class _Fp> | |
struct __callable<_Fp, false> | |
{ | |
static const bool value = false; | |
}; | |
public: | |
typedef _Rp result_type; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
function() noexcept : __f_(0) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
function(nullptr_t) noexcept : __f_(0) {} | |
function(const function&); | |
function(function&&) noexcept; | |
template<class _Fp> | |
function(_Fp, typename enable_if | |
< | |
__callable<_Fp>::value && | |
!is_same<_Fp, function>::value | |
>::type* = 0); | |
template<class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
function(allocator_arg_t, const _Alloc&) noexcept : __f_(0) {} | |
template<class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
function(allocator_arg_t, const _Alloc&, nullptr_t) noexcept : __f_(0) {} | |
template<class _Alloc> | |
function(allocator_arg_t, const _Alloc&, const function&); | |
template<class _Alloc> | |
function(allocator_arg_t, const _Alloc&, function&&); | |
template<class _Fp, class _Alloc> | |
function(allocator_arg_t, const _Alloc& __a, _Fp __f, | |
typename enable_if<__callable<_Fp>::value>::type* = 0); | |
function& operator=(const function&); | |
function& operator=(function&&) noexcept; | |
function& operator=(nullptr_t) noexcept; | |
template<class _Fp> | |
typename enable_if | |
< | |
__callable<typename decay<_Fp>::type>::value && | |
!is_same<typename remove_reference<_Fp>::type, function>::value, | |
function& | |
>::type | |
operator=(_Fp&&); | |
~function(); | |
void swap(function&) noexcept; | |
template<class _Fp, class _Alloc> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void assign(_Fp&& __f, const _Alloc& __a) | |
{function(allocator_arg, __a, std::__1::forward<_Fp>(__f)).swap(*this);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit operator bool() const noexcept {return __f_;} | |
template<class _R2, class... _ArgTypes2> | |
bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete; | |
template<class _R2, class... _ArgTypes2> | |
bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete; | |
public: | |
_Rp operator()(_ArgTypes...) const; | |
const std::type_info& target_type() const noexcept; | |
template <typename _Tp> _Tp* target() noexcept; | |
template <typename _Tp> const _Tp* target() const noexcept; | |
}; | |
template<class _Rp, class ..._ArgTypes> | |
function<_Rp(_ArgTypes...)>::function(const function& __f) | |
{ | |
if (__f.__f_ == 0) | |
__f_ = 0; | |
else if (__f.__f_ == (const __base*)&__f.__buf_) | |
{ | |
__f_ = (__base*)&__buf_; | |
__f.__f_->__clone(__f_); | |
} | |
else | |
__f_ = __f.__f_->__clone(); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <class _Alloc> | |
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, | |
const function& __f) | |
{ | |
if (__f.__f_ == 0) | |
__f_ = 0; | |
else if (__f.__f_ == (const __base*)&__f.__buf_) | |
{ | |
__f_ = (__base*)&__buf_; | |
__f.__f_->__clone(__f_); | |
} | |
else | |
__f_ = __f.__f_->__clone(); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
function<_Rp(_ArgTypes...)>::function(function&& __f) noexcept | |
{ | |
if (__f.__f_ == 0) | |
__f_ = 0; | |
else if (__f.__f_ == (__base*)&__f.__buf_) | |
{ | |
__f_ = (__base*)&__buf_; | |
__f.__f_->__clone(__f_); | |
} | |
else | |
{ | |
__f_ = __f.__f_; | |
__f.__f_ = 0; | |
} | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <class _Alloc> | |
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, | |
function&& __f) | |
{ | |
if (__f.__f_ == 0) | |
__f_ = 0; | |
else if (__f.__f_ == (__base*)&__f.__buf_) | |
{ | |
__f_ = (__base*)&__buf_; | |
__f.__f_->__clone(__f_); | |
} | |
else | |
{ | |
__f_ = __f.__f_; | |
__f.__f_ = 0; | |
} | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <class _Fp> | |
function<_Rp(_ArgTypes...)>::function(_Fp __f, | |
typename enable_if | |
< | |
__callable<_Fp>::value && | |
!is_same<_Fp, function>::value | |
>::type*) | |
: __f_(0) | |
{ | |
if (__not_null(__f)) | |
{ | |
typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_ArgTypes...)> _FF; | |
if (sizeof(_FF) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value) | |
{ | |
__f_ = (__base*)&__buf_; | |
::new (__f_) _FF(std::__1::move(__f)); | |
} | |
else | |
{ | |
typedef allocator<_FF> _Ap; | |
_Ap __a; | |
typedef __allocator_destructor<_Ap> _Dp; | |
unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); | |
::new (__hold.get()) _FF(std::__1::move(__f), allocator<_Fp>(__a)); | |
__f_ = __hold.release(); | |
} | |
} | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <class _Fp, class _Alloc> | |
function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, | |
typename enable_if<__callable<_Fp>::value>::type*) | |
: __f_(0) | |
{ | |
typedef allocator_traits<_Alloc> __alloc_traits; | |
if (__not_null(__f)) | |
{ | |
typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _FF; | |
typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; | |
_Ap __a(__a0); | |
if (sizeof(_FF) <= sizeof(__buf_) && | |
is_nothrow_copy_constructible<_Fp>::value && is_nothrow_copy_constructible<_Ap>::value) | |
{ | |
__f_ = (__base*)&__buf_; | |
::new (__f_) _FF(std::__1::move(__f), _Alloc(__a)); | |
} | |
else | |
{ | |
typedef __allocator_destructor<_Ap> _Dp; | |
unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); | |
::new (__hold.get()) _FF(std::__1::move(__f), _Alloc(__a)); | |
__f_ = __hold.release(); | |
} | |
} | |
} | |
template<class _Rp, class ..._ArgTypes> | |
function<_Rp(_ArgTypes...)>& | |
function<_Rp(_ArgTypes...)>::operator=(const function& __f) | |
{ | |
function(__f).swap(*this); | |
return *this; | |
} | |
template<class _Rp, class ..._ArgTypes> | |
function<_Rp(_ArgTypes...)>& | |
function<_Rp(_ArgTypes...)>::operator=(function&& __f) noexcept | |
{ | |
if (__f_ == (__base*)&__buf_) | |
__f_->destroy(); | |
else if (__f_) | |
__f_->destroy_deallocate(); | |
__f_ = 0; | |
if (__f.__f_ == 0) | |
__f_ = 0; | |
else if (__f.__f_ == (__base*)&__f.__buf_) | |
{ | |
__f_ = (__base*)&__buf_; | |
__f.__f_->__clone(__f_); | |
} | |
else | |
{ | |
__f_ = __f.__f_; | |
__f.__f_ = 0; | |
} | |
return *this; | |
} | |
template<class _Rp, class ..._ArgTypes> | |
function<_Rp(_ArgTypes...)>& | |
function<_Rp(_ArgTypes...)>::operator=(nullptr_t) noexcept | |
{ | |
if (__f_ == (__base*)&__buf_) | |
__f_->destroy(); | |
else if (__f_) | |
__f_->destroy_deallocate(); | |
__f_ = 0; | |
return *this; | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <class _Fp> | |
typename enable_if | |
< | |
function<_Rp(_ArgTypes...)>::template __callable<typename decay<_Fp>::type>::value && | |
!is_same<typename remove_reference<_Fp>::type, function<_Rp(_ArgTypes...)>>::value, | |
function<_Rp(_ArgTypes...)>& | |
>::type | |
function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f) | |
{ | |
function(std::__1::forward<_Fp>(__f)).swap(*this); | |
return *this; | |
} | |
template<class _Rp, class ..._ArgTypes> | |
function<_Rp(_ArgTypes...)>::~function() | |
{ | |
if (__f_ == (__base*)&__buf_) | |
__f_->destroy(); | |
else if (__f_) | |
__f_->destroy_deallocate(); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
void | |
function<_Rp(_ArgTypes...)>::swap(function& __f) noexcept | |
{ | |
if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) | |
{ | |
typename aligned_storage<sizeof(__buf_)>::type __tempbuf; | |
__base* __t = (__base*)&__tempbuf; | |
__f_->__clone(__t); | |
__f_->destroy(); | |
__f_ = 0; | |
__f.__f_->__clone((__base*)&__buf_); | |
__f.__f_->destroy(); | |
__f.__f_ = 0; | |
__f_ = (__base*)&__buf_; | |
__t->__clone((__base*)&__f.__buf_); | |
__t->destroy(); | |
__f.__f_ = (__base*)&__f.__buf_; | |
} | |
else if (__f_ == (__base*)&__buf_) | |
{ | |
__f_->__clone((__base*)&__f.__buf_); | |
__f_->destroy(); | |
__f_ = __f.__f_; | |
__f.__f_ = (__base*)&__f.__buf_; | |
} | |
else if (__f.__f_ == (__base*)&__f.__buf_) | |
{ | |
__f.__f_->__clone((__base*)&__buf_); | |
__f.__f_->destroy(); | |
__f.__f_ = __f_; | |
__f_ = (__base*)&__buf_; | |
} | |
else | |
std::__1::swap(__f_, __f.__f_); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
_Rp | |
function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const | |
{ | |
return (*__f_)(std::__1::forward<_ArgTypes>(__arg)...); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
const std::type_info& | |
function<_Rp(_ArgTypes...)>::target_type() const noexcept | |
{ | |
if (__f_ == 0) | |
return typeid(void); | |
return __f_->target_type(); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <typename _Tp> | |
_Tp* | |
function<_Rp(_ArgTypes...)>::target() noexcept | |
{ | |
if (__f_ == 0) | |
return (_Tp*)0; | |
return (_Tp*)__f_->target(typeid(_Tp)); | |
} | |
template<class _Rp, class ..._ArgTypes> | |
template <typename _Tp> | |
const _Tp* | |
function<_Rp(_ArgTypes...)>::target() const noexcept | |
{ | |
if (__f_ == 0) | |
return (const _Tp*)0; | |
return (const _Tp*)__f_->target(typeid(_Tp)); | |
} | |
template <class _Rp, class... _ArgTypes> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) noexcept {return !__f;} | |
template <class _Rp, class... _ArgTypes> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) noexcept {return !__f;} | |
template <class _Rp, class... _ArgTypes> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) noexcept {return (bool)__f;} | |
template <class _Rp, class... _ArgTypes> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) noexcept {return (bool)__f;} | |
template <class _Rp, class... _ArgTypes> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) noexcept | |
{return __x.swap(__y);} | |
# 1889 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template<class _Tp> struct __is_bind_expression : public false_type {}; | |
template<class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_bind_expression | |
: public __is_bind_expression<typename remove_cv<_Tp>::type> {}; | |
template<class _Tp> struct __is_placeholder : public integral_constant<int, 0> {}; | |
template<class _Tp> struct __attribute__ ((__type_visibility__("default"))) is_placeholder | |
: public __is_placeholder<typename remove_cv<_Tp>::type> {}; | |
namespace placeholders | |
{ | |
template <int _Np> struct __ph {}; | |
__attribute__ ((__visibility__("default"))) extern __ph<1> _1; | |
__attribute__ ((__visibility__("default"))) extern __ph<2> _2; | |
__attribute__ ((__visibility__("default"))) extern __ph<3> _3; | |
__attribute__ ((__visibility__("default"))) extern __ph<4> _4; | |
__attribute__ ((__visibility__("default"))) extern __ph<5> _5; | |
__attribute__ ((__visibility__("default"))) extern __ph<6> _6; | |
__attribute__ ((__visibility__("default"))) extern __ph<7> _7; | |
__attribute__ ((__visibility__("default"))) extern __ph<8> _8; | |
__attribute__ ((__visibility__("default"))) extern __ph<9> _9; | |
__attribute__ ((__visibility__("default"))) extern __ph<10> _10; | |
} | |
template<int _Np> | |
struct __is_placeholder<placeholders::__ph<_Np> > | |
: public integral_constant<int, _Np> {}; | |
template <class _Tp, class _Uj> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
_Tp& | |
__mu(reference_wrapper<_Tp> __t, _Uj&) | |
{ | |
return __t.get(); | |
} | |
template <class _Ti, class ..._Uj, size_t ..._Indx> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __invoke_of<_Ti&, _Uj...>::type | |
__mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>) | |
{ | |
return __ti(std::__1::forward<_Uj>(std::__1::get<_Indx>(__uj))...); | |
} | |
template <class _Ti, class ..._Uj> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __lazy_enable_if | |
< | |
is_bind_expression<_Ti>::value, | |
__invoke_of<_Ti&, _Uj...> | |
>::type | |
__mu(_Ti& __ti, tuple<_Uj...>& __uj) | |
{ | |
typedef typename __make_tuple_indices<sizeof...(_Uj)>::type __indices; | |
return __mu_expand(__ti, __uj, __indices()); | |
} | |
template <bool IsPh, class _Ti, class _Uj> | |
struct __mu_return2 {}; | |
template <class _Ti, class _Uj> | |
struct __mu_return2<true, _Ti, _Uj> | |
{ | |
typedef typename tuple_element<is_placeholder<_Ti>::value - 1, _Uj>::type type; | |
}; | |
template <class _Ti, class _Uj> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
0 < is_placeholder<_Ti>::value, | |
typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type | |
>::type | |
__mu(_Ti&, _Uj& __uj) | |
{ | |
const size_t _Indx = is_placeholder<_Ti>::value - 1; | |
return std::__1::forward<typename tuple_element<_Indx, _Uj>::type>(std::__1::get<_Indx>(__uj)); | |
} | |
template <class _Ti, class _Uj> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
!is_bind_expression<_Ti>::value && | |
is_placeholder<_Ti>::value == 0 && | |
!__is_reference_wrapper<_Ti>::value, | |
_Ti& | |
>::type | |
__mu(_Ti& __ti, _Uj&) | |
{ | |
return __ti; | |
} | |
template <class _Ti, bool IsReferenceWrapper, bool IsBindEx, bool IsPh, | |
class _TupleUj> | |
struct ____mu_return; | |
template <bool _Invokable, class _Ti, class ..._Uj> | |
struct ____mu_return_invokable | |
{ | |
typedef __nat type; | |
}; | |
template <class _Ti, class ..._Uj> | |
struct ____mu_return_invokable<true, _Ti, _Uj...> | |
{ | |
typedef typename __invoke_of<_Ti&, _Uj...>::type type; | |
}; | |
template <class _Ti, class ..._Uj> | |
struct ____mu_return<_Ti, false, true, false, tuple<_Uj...> > | |
: public ____mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...> | |
{ | |
}; | |
template <class _Ti, class _TupleUj> | |
struct ____mu_return<_Ti, false, false, true, _TupleUj> | |
{ | |
typedef typename tuple_element<is_placeholder<_Ti>::value - 1, | |
_TupleUj>::type&& type; | |
}; | |
template <class _Ti, class _TupleUj> | |
struct ____mu_return<_Ti, true, false, false, _TupleUj> | |
{ | |
typedef typename _Ti::type& type; | |
}; | |
template <class _Ti, class _TupleUj> | |
struct ____mu_return<_Ti, false, false, false, _TupleUj> | |
{ | |
typedef _Ti& type; | |
}; | |
template <class _Ti, class _TupleUj> | |
struct __mu_return | |
: public ____mu_return<_Ti, | |
__is_reference_wrapper<_Ti>::value, | |
is_bind_expression<_Ti>::value, | |
0 < is_placeholder<_Ti>::value && | |
is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value, | |
_TupleUj> | |
{ | |
}; | |
template <class _Fp, class _BoundArgs, class _TupleUj> | |
struct __is_valid_bind_return | |
{ | |
static const bool value = false; | |
}; | |
template <class _Fp, class ..._BoundArgs, class _TupleUj> | |
struct __is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj> | |
{ | |
static const bool value = __invokable<_Fp, | |
typename __mu_return<_BoundArgs, _TupleUj>::type...>::value; | |
}; | |
template <class _Fp, class ..._BoundArgs, class _TupleUj> | |
struct __is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj> | |
{ | |
static const bool value = __invokable<_Fp, | |
typename __mu_return<const _BoundArgs, _TupleUj>::type...>::value; | |
}; | |
template <class _Fp, class _BoundArgs, class _TupleUj, | |
bool = __is_valid_bind_return<_Fp, _BoundArgs, _TupleUj>::value> | |
struct __bind_return; | |
template <class _Fp, class ..._BoundArgs, class _TupleUj> | |
struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true> | |
{ | |
typedef typename __invoke_of | |
< | |
_Fp&, | |
typename __mu_return | |
< | |
_BoundArgs, | |
_TupleUj | |
>::type... | |
>::type type; | |
}; | |
template <class _Fp, class ..._BoundArgs, class _TupleUj> | |
struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true> | |
{ | |
typedef typename __invoke_of | |
< | |
_Fp&, | |
typename __mu_return | |
< | |
const _BoundArgs, | |
_TupleUj | |
>::type... | |
>::type type; | |
}; | |
template <class _Fp, class _BoundArgs, size_t ..._Indx, class _Args> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __bind_return<_Fp, _BoundArgs, _Args>::type | |
__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, | |
_Args&& __args) | |
{ | |
return __invoke(__f, __mu(std::__1::get<_Indx>(__bound_args), __args)...); | |
} | |
template<class _Fp, class ..._BoundArgs> | |
class __bind | |
: public __weak_result_type<typename decay<_Fp>::type> | |
{ | |
protected: | |
typedef typename decay<_Fp>::type _Fd; | |
typedef tuple<typename decay<_BoundArgs>::type...> _Td; | |
private: | |
_Fd __f_; | |
_Td __bound_args_; | |
typedef typename __make_tuple_indices<sizeof...(_BoundArgs)>::type __indices; | |
public: | |
# 2143 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Gp, class ..._BA, | |
class = typename enable_if | |
< | |
is_constructible<_Fd, _Gp>::value && | |
!is_same<typename remove_reference<_Gp>::type, | |
__bind>::value | |
>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __bind(_Gp&& __f, _BA&& ...__bound_args) | |
: __f_(std::__1::forward<_Gp>(__f)), | |
__bound_args_(std::__1::forward<_BA>(__bound_args)...) {} | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type | |
operator()(_Args&& ...__args) | |
{ | |
return __apply_functor(__f_, __bound_args_, __indices(), | |
tuple<_Args&&...>(std::__1::forward<_Args>(__args)...)); | |
} | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename __bind_return<const _Fd, const _Td, tuple<_Args&&...> >::type | |
operator()(_Args&& ...__args) const | |
{ | |
return __apply_functor(__f_, __bound_args_, __indices(), | |
tuple<_Args&&...>(std::__1::forward<_Args>(__args)...)); | |
} | |
}; | |
template<class _Fp, class ..._BoundArgs> | |
struct __is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {}; | |
template<class _Rp, class _Fp, class ..._BoundArgs> | |
class __bind_r | |
: public __bind<_Fp, _BoundArgs...> | |
{ | |
typedef __bind<_Fp, _BoundArgs...> base; | |
typedef typename base::_Fd _Fd; | |
typedef typename base::_Td _Td; | |
public: | |
typedef _Rp result_type; | |
# 2213 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
template <class _Gp, class ..._BA, | |
class = typename enable_if | |
< | |
is_constructible<_Fd, _Gp>::value && | |
!is_same<typename remove_reference<_Gp>::type, | |
__bind_r>::value | |
>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args) | |
: base(std::__1::forward<_Gp>(__f), | |
std::__1::forward<_BA>(__bound_args)...) {} | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_convertible<typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type, | |
result_type>::value || is_void<_Rp>::value, | |
result_type | |
>::type | |
operator()(_Args&& ...__args) | |
{ | |
typedef __invoke_void_return_wrapper<_Rp> _Invoker; | |
return _Invoker::__call(static_cast<base&>(*this), std::__1::forward<_Args>(__args)...); | |
} | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
typename enable_if | |
< | |
is_convertible<typename __bind_return<const _Fd, const _Td, tuple<_Args&&...> >::type, | |
result_type>::value || is_void<_Rp>::value, | |
result_type | |
>::type | |
operator()(_Args&& ...__args) const | |
{ | |
typedef __invoke_void_return_wrapper<_Rp> _Invoker; | |
return _Invoker::__call(static_cast<base const&>(*this), std::__1::forward<_Args>(__args)...); | |
} | |
}; | |
template<class _Rp, class _Fp, class ..._BoundArgs> | |
struct __is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {}; | |
template<class _Fp, class ..._BoundArgs> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__bind<_Fp, _BoundArgs...> | |
bind(_Fp&& __f, _BoundArgs&&... __bound_args) | |
{ | |
typedef __bind<_Fp, _BoundArgs...> type; | |
return type(std::__1::forward<_Fp>(__f), std::__1::forward<_BoundArgs>(__bound_args)...); | |
} | |
template<class _Rp, class _Fp, class ..._BoundArgs> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__bind_r<_Rp, _Fp, _BoundArgs...> | |
bind(_Fp&& __f, _BoundArgs&&... __bound_args) | |
{ | |
typedef __bind_r<_Rp, _Fp, _BoundArgs...> type; | |
return type(std::__1::forward<_Fp>(__f), std::__1::forward<_BoundArgs>(__bound_args)...); | |
} | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<bool> | |
: public unary_function<bool, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(bool __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<char> | |
: public unary_function<char, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(char __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<signed char> | |
: public unary_function<signed char, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(signed char __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<unsigned char> | |
: public unary_function<unsigned char, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(unsigned char __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<char16_t> | |
: public unary_function<char16_t, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(char16_t __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<char32_t> | |
: public unary_function<char32_t, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(char32_t __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<wchar_t> | |
: public unary_function<wchar_t, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(wchar_t __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<short> | |
: public unary_function<short, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(short __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<unsigned short> | |
: public unary_function<unsigned short, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(unsigned short __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<int> | |
: public unary_function<int, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(int __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<unsigned int> | |
: public unary_function<unsigned int, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(unsigned int __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<long> | |
: public unary_function<long, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(long __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<unsigned long> | |
: public unary_function<unsigned long, size_t> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(unsigned long __v) const noexcept {return static_cast<size_t>(__v);} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<long long> | |
: public __scalar_hash<long long> | |
{ | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<unsigned long long> | |
: public __scalar_hash<unsigned long long> | |
{ | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<float> | |
: public __scalar_hash<float> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(float __v) const noexcept | |
{ | |
if (__v == 0) | |
return 0; | |
return __scalar_hash<float>::operator()(__v); | |
} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<double> | |
: public __scalar_hash<double> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(double __v) const noexcept | |
{ | |
if (__v == 0) | |
return 0; | |
return __scalar_hash<double>::operator()(__v); | |
} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) hash<long double> | |
: public __scalar_hash<long double> | |
{ | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_t operator()(long double __v) const noexcept | |
{ | |
if (__v == 0) | |
return 0; | |
# 2456 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
union | |
{ | |
long double __t; | |
struct | |
{ | |
size_t __a; | |
size_t __b; | |
} __s; | |
} __u; | |
__u.__s.__a = 0; | |
__u.__s.__b = 0; | |
__u.__t = __v; | |
return __u.__s.__a ^ __u.__s.__b; | |
} | |
}; | |
# 2502 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional" 3 | |
} } | |
# 447 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 2 3 | |
# 452 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
namespace std {inline namespace __1 { | |
template <class _Key, class _CP, class _Compare, | |
bool = is_empty<_Compare>::value && !__libcpp_is_final<_Compare>::value | |
> | |
class __map_value_compare | |
: private _Compare | |
{ | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_value_compare() | |
noexcept(is_nothrow_default_constructible<_Compare>::value) | |
: _Compare() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_value_compare(_Compare c) | |
noexcept(is_nothrow_copy_constructible<_Compare>::value) | |
: _Compare(c) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Compare& key_comp() const noexcept {return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _CP& __x, const _CP& __y) const | |
{return static_cast<const _Compare&>(*this)(__x.__cc.first, __y.__cc.first);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _CP& __x, const _Key& __y) const | |
{return static_cast<const _Compare&>(*this)(__x.__cc.first, __y);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Key& __x, const _CP& __y) const | |
{return static_cast<const _Compare&>(*this)(__x, __y.__cc.first);} | |
void swap(__map_value_compare&__y) | |
noexcept(__is_nothrow_swappable<_Compare>::value) | |
{ | |
using std::__1::swap; | |
swap(static_cast<const _Compare&>(*this), static_cast<const _Compare&>(__y)); | |
} | |
# 502 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
}; | |
template <class _Key, class _CP, class _Compare> | |
class __map_value_compare<_Key, _CP, _Compare, false> | |
{ | |
_Compare comp; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_value_compare() | |
noexcept(is_nothrow_default_constructible<_Compare>::value) | |
: comp() {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_value_compare(_Compare c) | |
noexcept(is_nothrow_copy_constructible<_Compare>::value) | |
: comp(c) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const _Compare& key_comp() const noexcept {return comp;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _CP& __x, const _CP& __y) const | |
{return comp(__x.__cc.first, __y.__cc.first);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _CP& __x, const _Key& __y) const | |
{return comp(__x.__cc.first, __y);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const _Key& __x, const _CP& __y) const | |
{return comp(__x, __y.__cc.first);} | |
void swap(__map_value_compare&__y) | |
noexcept(__is_nothrow_swappable<_Compare>::value) | |
{ | |
using std::__1::swap; | |
swap(comp, __y.comp); | |
} | |
# 550 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
}; | |
template <class _Key, class _CP, class _Compare, bool __b> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(__map_value_compare<_Key, _CP, _Compare, __b>& __x, | |
__map_value_compare<_Key, _CP, _Compare, __b>& __y) | |
noexcept(noexcept(__x.swap(__y))) | |
{ | |
__x.swap(__y); | |
} | |
template <class _Allocator> | |
class __map_node_destructor | |
{ | |
typedef _Allocator allocator_type; | |
typedef allocator_traits<allocator_type> __alloc_traits; | |
typedef typename __alloc_traits::value_type::value_type value_type; | |
public: | |
typedef typename __alloc_traits::pointer pointer; | |
private: | |
typedef typename value_type::value_type::first_type first_type; | |
typedef typename value_type::value_type::second_type second_type; | |
allocator_type& __na_; | |
__map_node_destructor& operator=(const __map_node_destructor&); | |
public: | |
bool __first_constructed; | |
bool __second_constructed; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit __map_node_destructor(allocator_type& __na) noexcept | |
: __na_(__na), | |
__first_constructed(false), | |
__second_constructed(false) | |
{} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_node_destructor(__tree_node_destructor<allocator_type>&& __x) noexcept | |
: __na_(__x.__na_), | |
__first_constructed(__x.__value_constructed), | |
__second_constructed(__x.__value_constructed) | |
{ | |
__x.__value_constructed = false; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void operator()(pointer __p) noexcept | |
{ | |
if (__second_constructed) | |
__alloc_traits::destroy(__na_, std::__1::addressof(__p->__value_.__cc.second)); | |
if (__first_constructed) | |
__alloc_traits::destroy(__na_, std::__1::addressof(__p->__value_.__cc.first)); | |
if (__p) | |
__alloc_traits::deallocate(__na_, __p, 1); | |
} | |
}; | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
class map; | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
class multimap; | |
template <class _TreeIterator> class __map_const_iterator; | |
template <class _Key, class _Tp> | |
union __value_type | |
{ | |
typedef _Key key_type; | |
typedef _Tp mapped_type; | |
typedef pair<const key_type, mapped_type> value_type; | |
typedef pair<key_type, mapped_type> __nc_value_type; | |
value_type __cc; | |
__nc_value_type __nc; | |
template <class ..._Args> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__value_type(_Args&& ...__args) | |
: __cc(std::forward<_Args>(__args)...) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__value_type(const __value_type& __v) | |
: __cc(__v.__cc) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__value_type(__value_type& __v) | |
: __cc(__v.__cc) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__value_type(__value_type&& __v) | |
: __nc(std::move(__v.__nc)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__value_type& operator=(const __value_type& __v) | |
{__nc = __v.__cc; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__value_type& operator=(__value_type&& __v) | |
{__nc = std::move(__v.__nc); return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
~__value_type() {__cc.~value_type();} | |
}; | |
# 687 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
template <class _Tp> | |
struct __extract_key_value_types; | |
template <class _Key, class _Tp> | |
struct __extract_key_value_types<__value_type<_Key, _Tp> > | |
{ | |
typedef _Key const __key_type; | |
typedef _Tp __mapped_type; | |
}; | |
template <class _TreeIterator> | |
class __attribute__ ((__type_visibility__("default"))) __map_iterator | |
{ | |
_TreeIterator __i_; | |
typedef typename _TreeIterator::__pointer_traits __pointer_traits; | |
typedef typename _TreeIterator::value_type __value_type; | |
typedef typename __extract_key_value_types<__value_type>::__key_type __key_type; | |
typedef typename __extract_key_value_types<__value_type>::__mapped_type __mapped_type; | |
public: | |
typedef bidirectional_iterator_tag iterator_category; | |
typedef pair<__key_type, __mapped_type> value_type; | |
typedef typename _TreeIterator::difference_type difference_type; | |
typedef value_type& reference; | |
typedef typename __rebind_pointer<typename __pointer_traits::pointer, value_type>::type | |
pointer; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_iterator() noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_iterator(_TreeIterator __i) noexcept : __i_(__i) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reference operator*() const {return __i_->__cc;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pointer operator->() const {return pointer_traits<pointer>::pointer_to(__i_->__cc);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_iterator& operator++() {++__i_; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_iterator operator++(int) | |
{ | |
__map_iterator __t(*this); | |
++(*this); | |
return __t; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_iterator& operator--() {--__i_; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_iterator operator--(int) | |
{ | |
__map_iterator __t(*this); | |
--(*this); | |
return __t; | |
} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const __map_iterator& __x, const __map_iterator& __y) | |
{return __x.__i_ == __y.__i_;} | |
friend | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const __map_iterator& __x, const __map_iterator& __y) | |
{return __x.__i_ != __y.__i_;} | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) map; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multimap; | |
template <class> friend class __attribute__ ((__type_visibility__("default"))) __map_const_iterator; | |
}; | |
template <class _TreeIterator> | |
class __attribute__ ((__type_visibility__("default"))) __map_const_iterator | |
{ | |
_TreeIterator __i_; | |
typedef typename _TreeIterator::__pointer_traits __pointer_traits; | |
typedef typename _TreeIterator::value_type __value_type; | |
typedef typename __extract_key_value_types<__value_type>::__key_type __key_type; | |
typedef typename __extract_key_value_types<__value_type>::__mapped_type __mapped_type; | |
public: | |
typedef bidirectional_iterator_tag iterator_category; | |
typedef pair<__key_type, __mapped_type> value_type; | |
typedef typename _TreeIterator::difference_type difference_type; | |
typedef const value_type& reference; | |
typedef typename __rebind_pointer<typename __pointer_traits::pointer, const value_type>::type | |
pointer; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator() noexcept {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator(_TreeIterator __i) noexcept : __i_(__i) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator(__map_iterator< | |
typename _TreeIterator::__non_const_iterator> __i) noexcept | |
: __i_(__i.__i_) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reference operator*() const {return __i_->__cc;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pointer operator->() const {return pointer_traits<pointer>::pointer_to(__i_->__cc);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator& operator++() {++__i_; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator operator++(int) | |
{ | |
__map_const_iterator __t(*this); | |
++(*this); | |
return __t; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator& operator--() {--__i_; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__map_const_iterator operator--(int) | |
{ | |
__map_const_iterator __t(*this); | |
--(*this); | |
return __t; | |
} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const __map_const_iterator& __x, const __map_const_iterator& __y) | |
{return __x.__i_ == __y.__i_;} | |
friend __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const __map_const_iterator& __x, const __map_const_iterator& __y) | |
{return __x.__i_ != __y.__i_;} | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) map; | |
template <class, class, class, class> friend class __attribute__ ((__type_visibility__("default"))) multimap; | |
template <class, class, class> friend class __attribute__ ((__type_visibility__("default"))) __tree_const_iterator; | |
}; | |
template <class _Key, class _Tp, class _Compare = less<_Key>, | |
class _Allocator = allocator<pair<const _Key, _Tp> > > | |
class __attribute__ ((__type_visibility__("default"))) map | |
{ | |
public: | |
typedef _Key key_type; | |
typedef _Tp mapped_type; | |
typedef pair<const key_type, mapped_type> value_type; | |
typedef pair<key_type, mapped_type> __nc_value_type; | |
typedef _Compare key_compare; | |
typedef _Allocator allocator_type; | |
typedef value_type& reference; | |
typedef const value_type& const_reference; | |
class __attribute__ ((__type_visibility__("default"))) value_compare | |
: public binary_function<value_type, value_type, bool> | |
{ | |
friend class map; | |
protected: | |
key_compare comp; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) value_compare(key_compare c) : comp(c) {} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const value_type& __x, const value_type& __y) const | |
{return comp(__x.first, __y.first);} | |
}; | |
private: | |
typedef std::__1::__value_type<key_type, mapped_type> __value_type; | |
typedef __map_value_compare<key_type, __value_type, key_compare> __vc; | |
typedef typename __rebind_alloc_helper<allocator_traits<allocator_type>, | |
__value_type>::type __allocator_type; | |
typedef __tree<__value_type, __vc, __allocator_type> __base; | |
typedef typename __base::__node_traits __node_traits; | |
typedef allocator_traits<allocator_type> __alloc_traits; | |
__base __tree_; | |
public: | |
typedef typename __alloc_traits::pointer pointer; | |
typedef typename __alloc_traits::const_pointer const_pointer; | |
typedef typename __alloc_traits::size_type size_type; | |
typedef typename __alloc_traits::difference_type difference_type; | |
typedef __map_iterator<typename __base::iterator> iterator; | |
typedef __map_const_iterator<typename __base::const_iterator> const_iterator; | |
typedef std::__1::reverse_iterator<iterator> reverse_iterator; | |
typedef std::__1::reverse_iterator<const_iterator> const_reverse_iterator; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map() | |
noexcept(is_nothrow_default_constructible<allocator_type>::value && is_nothrow_default_constructible<key_compare>::value && is_nothrow_copy_constructible<key_compare>::value) | |
: __tree_(__vc(key_compare())) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit map(const key_compare& __comp) | |
noexcept(is_nothrow_default_constructible<allocator_type>::value && is_nothrow_copy_constructible<key_compare>::value) | |
: __tree_(__vc(__comp)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit map(const key_compare& __comp, const allocator_type& __a) | |
: __tree_(__vc(__comp), __a) {} | |
template <class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(_InputIterator __f, _InputIterator __l, | |
const key_compare& __comp = key_compare()) | |
: __tree_(__vc(__comp)) | |
{ | |
insert(__f, __l); | |
} | |
template <class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(_InputIterator __f, _InputIterator __l, | |
const key_compare& __comp, const allocator_type& __a) | |
: __tree_(__vc(__comp), __a) | |
{ | |
insert(__f, __l); | |
} | |
# 917 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(const map& __m) | |
: __tree_(__m.__tree_) | |
{ | |
insert(__m.begin(), __m.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map& operator=(const map& __m) | |
{ | |
__tree_ = __m.__tree_; | |
# 937 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(map&& __m) | |
noexcept(is_nothrow_move_constructible<__base>::value) | |
: __tree_(std::__1::move(__m.__tree_)) | |
{ | |
} | |
map(map&& __m, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map& operator=(map&& __m) | |
noexcept(is_nothrow_move_assignable<__base>::value) | |
{ | |
__tree_ = std::__1::move(__m.__tree_); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(initializer_list<value_type> __il, const key_compare& __comp = key_compare()) | |
: __tree_(__vc(__comp)) | |
{ | |
insert(__il.begin(), __il.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(initializer_list<value_type> __il, const key_compare& __comp, const allocator_type& __a) | |
: __tree_(__vc(__comp), __a) | |
{ | |
insert(__il.begin(), __il.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map& operator=(initializer_list<value_type> __il) | |
{ | |
__tree_.__assign_unique(__il.begin(), __il.end()); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit map(const allocator_type& __a) | |
: __tree_(__a) | |
{ | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
map(const map& __m, const allocator_type& __a) | |
: __tree_(__m.__tree_.value_comp(), __a) | |
{ | |
insert(__m.begin(), __m.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator begin() noexcept {return __tree_.begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator begin() const noexcept {return __tree_.begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator end() noexcept {return __tree_.end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator end() const noexcept {return __tree_.end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator rbegin() noexcept {return reverse_iterator(end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator rbegin() const noexcept | |
{return const_reverse_iterator(end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator rend() noexcept | |
{return reverse_iterator(begin());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator rend() const noexcept | |
{return const_reverse_iterator(begin());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator cbegin() const noexcept {return begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator cend() const noexcept {return end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator crbegin() const noexcept {return rbegin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator crend() const noexcept {return rend();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool empty() const noexcept {return __tree_.size() == 0;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type size() const noexcept {return __tree_.size();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type max_size() const noexcept {return __tree_.max_size();} | |
mapped_type& operator[](const key_type& __k); | |
mapped_type& operator[](key_type&& __k); | |
mapped_type& at(const key_type& __k); | |
const mapped_type& at(const key_type& __k) const; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
allocator_type get_allocator() const noexcept {return __tree_.__alloc();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
key_compare key_comp() const {return __tree_.value_comp().key_comp();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
value_compare value_comp() const {return value_compare(__tree_.value_comp().key_comp());} | |
template <class ..._Args> | |
pair<iterator, bool> | |
emplace(_Args&& ...__args); | |
template <class ..._Args> | |
iterator | |
emplace_hint(const_iterator __p, _Args&& ...__args); | |
template <class _Pp, | |
class = typename enable_if<is_constructible<value_type, _Pp>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<iterator, bool> insert(_Pp&& __p) | |
{return __tree_.__insert_unique(std::__1::forward<_Pp>(__p));} | |
template <class _Pp, | |
class = typename enable_if<is_constructible<value_type, _Pp>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator insert(const_iterator __pos, _Pp&& __p) | |
{return __tree_.__insert_unique(__pos.__i_, std::__1::forward<_Pp>(__p));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<iterator, bool> | |
insert(const value_type& __v) {return __tree_.__insert_unique(__v);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator | |
insert(const_iterator __p, const value_type& __v) | |
{return __tree_.__insert_unique(__p.__i_, __v);} | |
# 1104 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
template <class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void insert(_InputIterator __f, _InputIterator __l) | |
{ | |
for (const_iterator __e = cend(); __f != __l; ++__f) | |
insert(__e.__i_, *__f); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void insert(initializer_list<value_type> __il) | |
{insert(__il.begin(), __il.end());} | |
# 1234 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator erase(const_iterator __p) {return __tree_.erase(__p.__i_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator erase(iterator __p) {return __tree_.erase(__p.__i_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type erase(const key_type& __k) | |
{return __tree_.__erase_unique(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator erase(const_iterator __f, const_iterator __l) | |
{return __tree_.erase(__f.__i_, __l.__i_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void clear() noexcept {__tree_.clear();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(map& __m) | |
noexcept(__is_nothrow_swappable<__base>::value) | |
{__tree_.swap(__m.__tree_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator find(const key_type& __k) {return __tree_.find(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator find(const key_type& __k) const {return __tree_.find(__k);} | |
# 1267 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type count(const key_type& __k) const | |
{return __tree_.__count_unique(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator lower_bound(const key_type& __k) | |
{return __tree_.lower_bound(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator lower_bound(const key_type& __k) const | |
{return __tree_.lower_bound(__k);} | |
# 1294 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator upper_bound(const key_type& __k) | |
{return __tree_.upper_bound(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator upper_bound(const key_type& __k) const | |
{return __tree_.upper_bound(__k);} | |
# 1311 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<iterator,iterator> equal_range(const key_type& __k) | |
{return __tree_.__equal_range_unique(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<const_iterator,const_iterator> equal_range(const key_type& __k) const | |
{return __tree_.__equal_range_unique(__k);} | |
# 1328 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
private: | |
typedef typename __base::__node __node; | |
typedef typename __base::__node_allocator __node_allocator; | |
typedef typename __base::__node_pointer __node_pointer; | |
typedef typename __base::__node_const_pointer __node_const_pointer; | |
typedef typename __base::__node_base_pointer __node_base_pointer; | |
typedef typename __base::__node_base_const_pointer __node_base_const_pointer; | |
typedef __map_node_destructor<__node_allocator> _Dp; | |
typedef unique_ptr<__node, _Dp> __node_holder; | |
__node_holder __construct_node(); | |
template <class _A0> | |
__node_holder __construct_node(_A0&& __a0); | |
__node_holder __construct_node_with_key(key_type&& __k); | |
template <class _A0, class _A1, class ..._Args> | |
__node_holder __construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args); | |
__node_holder __construct_node_with_key(const key_type& __k); | |
__node_base_pointer& | |
__find_equal_key(__node_base_pointer& __parent, const key_type& __k); | |
__node_base_const_pointer | |
__find_equal_key(__node_base_const_pointer& __parent, const key_type& __k) const; | |
}; | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_base_pointer& | |
map<_Key, _Tp, _Compare, _Allocator>::__find_equal_key(__node_base_pointer& __parent, | |
const key_type& __k) | |
{ | |
__node_pointer __nd = __tree_.__root(); | |
if (__nd != nullptr) | |
{ | |
while (true) | |
{ | |
if (__tree_.value_comp().key_comp()(__k, __nd->__value_.__cc.first)) | |
{ | |
if (__nd->__left_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__left_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__left_; | |
} | |
} | |
else if (__tree_.value_comp().key_comp()(__nd->__value_.__cc.first, __k)) | |
{ | |
if (__nd->__right_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__right_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent->__right_; | |
} | |
} | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent; | |
} | |
} | |
} | |
__parent = static_cast<__node_base_pointer>(__tree_.__end_node()); | |
return __parent->__left_; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_base_const_pointer | |
map<_Key, _Tp, _Compare, _Allocator>::__find_equal_key(__node_base_const_pointer& __parent, | |
const key_type& __k) const | |
{ | |
__node_const_pointer __nd = __tree_.__root(); | |
if (__nd != nullptr) | |
{ | |
while (true) | |
{ | |
if (__tree_.value_comp().key_comp()(__k, __nd->__value_.__cc.first)) | |
{ | |
if (__nd->__left_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__left_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return const_cast<const __node_base_const_pointer&>(__parent->__left_); | |
} | |
} | |
else if (__tree_.value_comp().key_comp()(__nd->__value_.__cc.first, __k)) | |
{ | |
if (__nd->__right_ != nullptr) | |
__nd = static_cast<__node_pointer>(__nd->__right_); | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return const_cast<const __node_base_const_pointer&>(__parent->__right_); | |
} | |
} | |
else | |
{ | |
__parent = static_cast<__node_base_pointer>(__nd); | |
return __parent; | |
} | |
} | |
} | |
__parent = static_cast<__node_base_pointer>(__tree_.__end_node()); | |
return const_cast<const __node_base_const_pointer&>(__parent->__left_); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
map<_Key, _Tp, _Compare, _Allocator>::map(map&& __m, const allocator_type& __a) | |
: __tree_(std::__1::move(__m.__tree_), __a) | |
{ | |
if (__a != __m.get_allocator()) | |
{ | |
const_iterator __e = cend(); | |
while (!__m.empty()) | |
__tree_.__insert_unique(__e.__i_, | |
std::__1::move(__m.__tree_.remove(__m.begin().__i_)->__value_)); | |
} | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
map<_Key, _Tp, _Compare, _Allocator>::__construct_node() | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.first)); | |
__h.get_deleter().__first_constructed = true; | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.second)); | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class _A0> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
map<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0) | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_), std::__1::forward<_A0>(__a0)); | |
__h.get_deleter().__first_constructed = true; | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(key_type&& __k) | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.first), std::__1::move(__k)); | |
__h.get_deleter().__first_constructed = true; | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.second)); | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class _A0, class _A1, class ..._Args> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
map<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args) | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_), | |
std::__1::forward<_A0>(__a0), std::__1::forward<_A1>(__a1), | |
std::__1::forward<_Args>(__args)...); | |
__h.get_deleter().__first_constructed = true; | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(const key_type& __k) | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.first), __k); | |
__h.get_deleter().__first_constructed = true; | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.second)); | |
__h.get_deleter().__second_constructed = true; | |
return std::__1::move(__h); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
_Tp& | |
map<_Key, _Tp, _Compare, _Allocator>::operator[](const key_type& __k) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal_key(__parent, __k); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
if (__child == nullptr) | |
{ | |
__node_holder __h = __construct_node_with_key(__k); | |
__tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
__r = __h.release(); | |
} | |
return __r->__value_.__cc.second; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
_Tp& | |
map<_Key, _Tp, _Compare, _Allocator>::operator[](key_type&& __k) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal_key(__parent, __k); | |
__node_pointer __r = static_cast<__node_pointer>(__child); | |
if (__child == nullptr) | |
{ | |
__node_holder __h = __construct_node_with_key(std::__1::move(__k)); | |
__tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); | |
__r = __h.release(); | |
} | |
return __r->__value_.__cc.second; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
_Tp& | |
map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) | |
{ | |
__node_base_pointer __parent; | |
__node_base_pointer& __child = __find_equal_key(__parent, __k); | |
return static_cast<__node_pointer>(__child)->__value_.__cc.second; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
const _Tp& | |
map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) const | |
{ | |
__node_base_const_pointer __parent; | |
__node_base_const_pointer __child = __find_equal_key(__parent, __k); | |
return static_cast<__node_const_pointer>(__child)->__value_.__cc.second; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class ..._Args> | |
pair<typename map<_Key, _Tp, _Compare, _Allocator>::iterator, bool> | |
map<_Key, _Tp, _Compare, _Allocator>::emplace(_Args&& ...__args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
pair<iterator, bool> __r = __tree_.__node_insert_unique(__h.get()); | |
if (__r.second) | |
__h.release(); | |
return __r; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class ..._Args> | |
typename map<_Key, _Tp, _Compare, _Allocator>::iterator | |
map<_Key, _Tp, _Compare, _Allocator>::emplace_hint(const_iterator __p, | |
_Args&& ...__args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
iterator __r = __tree_.__node_insert_unique(__p.__i_, __h.get()); | |
if (__r.__i_.__ptr_ == __h.get()) | |
__h.release(); | |
return __r; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const map<_Key, _Tp, _Compare, _Allocator>& __x, | |
const map<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return __x.size() == __y.size() && std::__1::equal(__x.begin(), __x.end(), __y.begin()); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator< (const map<_Key, _Tp, _Compare, _Allocator>& __x, | |
const map<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return std::__1::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __x, | |
const map<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return !(__x == __y); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator> (const map<_Key, _Tp, _Compare, _Allocator>& __x, | |
const map<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return __y < __x; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __x, | |
const map<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return !(__x < __y); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __x, | |
const map<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return !(__y < __x); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(map<_Key, _Tp, _Compare, _Allocator>& __x, | |
map<_Key, _Tp, _Compare, _Allocator>& __y) | |
noexcept(noexcept(__x.swap(__y))) | |
{ | |
__x.swap(__y); | |
} | |
template <class _Key, class _Tp, class _Compare = less<_Key>, | |
class _Allocator = allocator<pair<const _Key, _Tp> > > | |
class __attribute__ ((__type_visibility__("default"))) multimap | |
{ | |
public: | |
typedef _Key key_type; | |
typedef _Tp mapped_type; | |
typedef pair<const key_type, mapped_type> value_type; | |
typedef pair<key_type, mapped_type> __nc_value_type; | |
typedef _Compare key_compare; | |
typedef _Allocator allocator_type; | |
typedef value_type& reference; | |
typedef const value_type& const_reference; | |
class __attribute__ ((__type_visibility__("default"))) value_compare | |
: public binary_function<value_type, value_type, bool> | |
{ | |
friend class multimap; | |
protected: | |
key_compare comp; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
value_compare(key_compare c) : comp(c) {} | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator()(const value_type& __x, const value_type& __y) const | |
{return comp(__x.first, __y.first);} | |
}; | |
private: | |
typedef std::__1::__value_type<key_type, mapped_type> __value_type; | |
typedef __map_value_compare<key_type, __value_type, key_compare> __vc; | |
typedef typename __rebind_alloc_helper<allocator_traits<allocator_type>, | |
__value_type>::type __allocator_type; | |
typedef __tree<__value_type, __vc, __allocator_type> __base; | |
typedef typename __base::__node_traits __node_traits; | |
typedef allocator_traits<allocator_type> __alloc_traits; | |
__base __tree_; | |
public: | |
typedef typename __alloc_traits::pointer pointer; | |
typedef typename __alloc_traits::const_pointer const_pointer; | |
typedef typename __alloc_traits::size_type size_type; | |
typedef typename __alloc_traits::difference_type difference_type; | |
typedef __map_iterator<typename __base::iterator> iterator; | |
typedef __map_const_iterator<typename __base::const_iterator> const_iterator; | |
typedef std::__1::reverse_iterator<iterator> reverse_iterator; | |
typedef std::__1::reverse_iterator<const_iterator> const_reverse_iterator; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap() | |
noexcept(is_nothrow_default_constructible<allocator_type>::value && is_nothrow_default_constructible<key_compare>::value && is_nothrow_copy_constructible<key_compare>::value) | |
: __tree_(__vc(key_compare())) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit multimap(const key_compare& __comp) | |
noexcept(is_nothrow_default_constructible<allocator_type>::value && is_nothrow_copy_constructible<key_compare>::value) | |
: __tree_(__vc(__comp)) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit multimap(const key_compare& __comp, const allocator_type& __a) | |
: __tree_(__vc(__comp), __a) {} | |
template <class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(_InputIterator __f, _InputIterator __l, | |
const key_compare& __comp = key_compare()) | |
: __tree_(__vc(__comp)) | |
{ | |
insert(__f, __l); | |
} | |
template <class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(_InputIterator __f, _InputIterator __l, | |
const key_compare& __comp, const allocator_type& __a) | |
: __tree_(__vc(__comp), __a) | |
{ | |
insert(__f, __l); | |
} | |
# 1785 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(const multimap& __m) | |
: __tree_(__m.__tree_.value_comp(), | |
__alloc_traits::select_on_container_copy_construction(__m.__tree_.__alloc())) | |
{ | |
insert(__m.begin(), __m.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap& operator=(const multimap& __m) | |
{ | |
__tree_ = __m.__tree_; | |
# 1806 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(multimap&& __m) | |
noexcept(is_nothrow_move_constructible<__base>::value) | |
: __tree_(std::__1::move(__m.__tree_)) | |
{ | |
} | |
multimap(multimap&& __m, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap& operator=(multimap&& __m) | |
noexcept(is_nothrow_move_assignable<__base>::value) | |
{ | |
__tree_ = std::__1::move(__m.__tree_); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(initializer_list<value_type> __il, const key_compare& __comp = key_compare()) | |
: __tree_(__vc(__comp)) | |
{ | |
insert(__il.begin(), __il.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(initializer_list<value_type> __il, const key_compare& __comp, const allocator_type& __a) | |
: __tree_(__vc(__comp), __a) | |
{ | |
insert(__il.begin(), __il.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap& operator=(initializer_list<value_type> __il) | |
{ | |
__tree_.__assign_multi(__il.begin(), __il.end()); | |
return *this; | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
explicit multimap(const allocator_type& __a) | |
: __tree_(__a) | |
{ | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
multimap(const multimap& __m, const allocator_type& __a) | |
: __tree_(__m.__tree_.value_comp(), __a) | |
{ | |
insert(__m.begin(), __m.end()); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator begin() noexcept {return __tree_.begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator begin() const noexcept {return __tree_.begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator end() noexcept {return __tree_.end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator end() const noexcept {return __tree_.end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator rbegin() noexcept {return reverse_iterator(end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator rbegin() const noexcept | |
{return const_reverse_iterator(end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator rend() noexcept {return reverse_iterator(begin());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator rend() const noexcept | |
{return const_reverse_iterator(begin());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator cbegin() const noexcept {return begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator cend() const noexcept {return end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator crbegin() const noexcept {return rbegin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator crend() const noexcept {return rend();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool empty() const noexcept {return __tree_.size() == 0;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type size() const noexcept {return __tree_.size();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type max_size() const noexcept {return __tree_.max_size();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
allocator_type get_allocator() const noexcept {return __tree_.__alloc();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
key_compare key_comp() const {return __tree_.value_comp().key_comp();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
value_compare value_comp() const | |
{return value_compare(__tree_.value_comp().key_comp());} | |
template <class ..._Args> | |
iterator | |
emplace(_Args&& ...__args); | |
template <class ..._Args> | |
iterator | |
emplace_hint(const_iterator __p, _Args&& ...__args); | |
template <class _Pp, | |
class = typename enable_if<is_constructible<value_type, _Pp>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator insert(_Pp&& __p) | |
{return __tree_.__insert_multi(std::__1::forward<_Pp>(__p));} | |
template <class _Pp, | |
class = typename enable_if<is_constructible<value_type, _Pp>::value>::type> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator insert(const_iterator __pos, _Pp&& __p) | |
{return __tree_.__insert_multi(__pos.__i_, std::__1::forward<_Pp>(__p));} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator insert(const value_type& __v) {return __tree_.__insert_multi(__v);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator insert(const_iterator __p, const value_type& __v) | |
{return __tree_.__insert_multi(__p.__i_, __v);} | |
# 1961 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
template <class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void insert(_InputIterator __f, _InputIterator __l) | |
{ | |
for (const_iterator __e = cend(); __f != __l; ++__f) | |
__tree_.__insert_multi(__e.__i_, *__f); | |
} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void insert(initializer_list<value_type> __il) | |
{insert(__il.begin(), __il.end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator erase(const_iterator __p) {return __tree_.erase(__p.__i_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator erase(iterator __p) {return __tree_.erase(__p.__i_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type erase(const key_type& __k) {return __tree_.__erase_multi(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator erase(const_iterator __f, const_iterator __l) | |
{return __tree_.erase(__f.__i_, __l.__i_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void clear() {__tree_.clear();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void swap(multimap& __m) | |
noexcept(__is_nothrow_swappable<__base>::value) | |
{__tree_.swap(__m.__tree_);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator find(const key_type& __k) {return __tree_.find(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator find(const key_type& __k) const {return __tree_.find(__k);} | |
# 2009 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
size_type count(const key_type& __k) const | |
{return __tree_.__count_multi(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator lower_bound(const key_type& __k) | |
{return __tree_.lower_bound(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator lower_bound(const key_type& __k) const | |
{return __tree_.lower_bound(__k);} | |
# 2036 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator upper_bound(const key_type& __k) | |
{return __tree_.upper_bound(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator upper_bound(const key_type& __k) const | |
{return __tree_.upper_bound(__k);} | |
# 2053 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<iterator,iterator> equal_range(const key_type& __k) | |
{return __tree_.__equal_range_multi(__k);} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
pair<const_iterator,const_iterator> equal_range(const key_type& __k) const | |
{return __tree_.__equal_range_multi(__k);} | |
# 2070 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map" 3 | |
private: | |
typedef typename __base::__node __node; | |
typedef typename __base::__node_allocator __node_allocator; | |
typedef typename __base::__node_pointer __node_pointer; | |
typedef typename __base::__node_const_pointer __node_const_pointer; | |
typedef __map_node_destructor<__node_allocator> _Dp; | |
typedef unique_ptr<__node, _Dp> __node_holder; | |
__node_holder __construct_node(); | |
template <class _A0> | |
__node_holder | |
__construct_node(_A0&& __a0); | |
template <class _A0, class _A1, class ..._Args> | |
__node_holder __construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args); | |
}; | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
multimap<_Key, _Tp, _Compare, _Allocator>::multimap(multimap&& __m, const allocator_type& __a) | |
: __tree_(std::__1::move(__m.__tree_), __a) | |
{ | |
if (__a != __m.get_allocator()) | |
{ | |
const_iterator __e = cend(); | |
while (!__m.empty()) | |
__tree_.__insert_multi(__e.__i_, | |
std::__1::move(__m.__tree_.remove(__m.begin().__i_)->__value_)); | |
} | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
typename multimap<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
multimap<_Key, _Tp, _Compare, _Allocator>::__construct_node() | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.first)); | |
__h.get_deleter().__first_constructed = true; | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_.__cc.second)); | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class _A0> | |
typename multimap<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
multimap<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0) | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_), std::__1::forward<_A0>(__a0)); | |
__h.get_deleter().__first_constructed = true; | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class _A0, class _A1, class ..._Args> | |
typename multimap<_Key, _Tp, _Compare, _Allocator>::__node_holder | |
multimap<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args) | |
{ | |
__node_allocator& __na = __tree_.__node_alloc(); | |
__node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); | |
__node_traits::construct(__na, std::__1::addressof(__h->__value_), | |
std::__1::forward<_A0>(__a0), std::__1::forward<_A1>(__a1), | |
std::__1::forward<_Args>(__args)...); | |
__h.get_deleter().__first_constructed = true; | |
__h.get_deleter().__second_constructed = true; | |
return __h; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class ..._Args> | |
typename multimap<_Key, _Tp, _Compare, _Allocator>::iterator | |
multimap<_Key, _Tp, _Compare, _Allocator>::emplace(_Args&& ...__args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
iterator __r = __tree_.__node_insert_multi(__h.get()); | |
__h.release(); | |
return __r; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
template <class ..._Args> | |
typename multimap<_Key, _Tp, _Compare, _Allocator>::iterator | |
multimap<_Key, _Tp, _Compare, _Allocator>::emplace_hint(const_iterator __p, | |
_Args&& ...__args) | |
{ | |
__node_holder __h = __construct_node(std::__1::forward<_Args>(__args)...); | |
iterator __r = __tree_.__node_insert_multi(__p.__i_, __h.get()); | |
__h.release(); | |
return __r; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
const multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return __x.size() == __y.size() && std::__1::equal(__x.begin(), __x.end(), __y.begin()); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator< (const multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
const multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return std::__1::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
const multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return !(__x == __y); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator> (const multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
const multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return __y < __x; | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
const multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return !(__x < __y); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool | |
operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
const multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
{ | |
return !(__y < __x); | |
} | |
template <class _Key, class _Tp, class _Compare, class _Allocator> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
void | |
swap(multimap<_Key, _Tp, _Compare, _Allocator>& __x, | |
multimap<_Key, _Tp, _Compare, _Allocator>& __y) | |
noexcept(noexcept(__x.swap(__y))) | |
{ | |
__x.swap(__y); | |
} | |
} } | |
# 15 "/tmp/fish-20200728-69439-14nyq6w/fish-3.1.2/src/function.cpp" 2 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 1 3 | |
# 437 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdio" 1 3 | |
# 104 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdio" 3 | |
# 116 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstdio" 3 | |
namespace std {inline namespace __1 { | |
using ::FILE; | |
using ::fpos_t; | |
using ::size_t; | |
using ::fclose; | |
using ::fflush; | |
using ::setbuf; | |
using ::setvbuf; | |
using ::fprintf; | |
using ::fscanf; | |
using ::snprintf; | |
using ::sprintf; | |
using ::sscanf; | |
using ::vfprintf; | |
using ::vfscanf; | |
using ::vsscanf; | |
using ::vsnprintf; | |
using ::vsprintf; | |
using ::fgetc; | |
using ::fgets; | |
using ::fputc; | |
using ::fputs; | |
using ::getc; | |
using ::putc; | |
using ::ungetc; | |
using ::fread; | |
using ::fwrite; | |
using ::fgetpos; | |
using ::fseek; | |
using ::fsetpos; | |
using ::ftell; | |
using ::rewind; | |
using ::clearerr; | |
using ::feof; | |
using ::ferror; | |
using ::perror; | |
using ::fopen; | |
using ::freopen; | |
using ::remove; | |
using ::rename; | |
using ::tmpfile; | |
using ::tmpnam; | |
using ::getchar; | |
using ::gets; | |
using ::scanf; | |
using ::vscanf; | |
using ::printf; | |
using ::putchar; | |
using ::puts; | |
using ::vprintf; | |
} } | |
# 438 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 2 3 | |
# 451 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 1 3 | |
# 21 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/assert.h" 1 3 4 | |
# 75 "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/assert.h" 3 4 | |
extern "C" { | |
void __assert_rtn(const char *, const char *, int, const char *) __attribute__((noreturn)); | |
} | |
# 22 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 2 3 | |
# 25 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cassert" 3 | |
# 452 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 2 3 | |
# 1 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__undef_min_max" 1 3 | |
# 455 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 2 3 | |
# 460 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 3 | |
namespace std {inline namespace __1 { | |
template <class _StateT> | |
class __attribute__ ((__type_visibility__("default"))) fpos | |
{ | |
private: | |
_StateT __st_; | |
streamoff __off_; | |
public: | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) fpos(streamoff __off = streamoff()) : __st_(), __off_(__off) {} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) operator streamoff() const {return __off_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) _StateT state() const {return __st_;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) void state(_StateT __st) {__st_ = __st;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) fpos& operator+=(streamoff __off) {__off_ += __off; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) fpos operator+ (streamoff __off) const {fpos __t(*this); __t += __off; return __t;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) fpos& operator-=(streamoff __off) {__off_ -= __off; return *this;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) fpos operator- (streamoff __off) const {fpos __t(*this); __t -= __off; return __t;} | |
}; | |
template <class _StateT> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
streamoff operator-(const fpos<_StateT>& __x, const fpos<_StateT>& __y) | |
{return streamoff(__x) - streamoff(__y);} | |
template <class _StateT> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator==(const fpos<_StateT>& __x, const fpos<_StateT>& __y) | |
{return streamoff(__x) == streamoff(__y);} | |
template <class _StateT> | |
inline __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y) | |
{return streamoff(__x) != streamoff(__y);} | |
template <class _CharT> | |
struct __attribute__ ((__type_visibility__("default"))) char_traits | |
{ | |
typedef _CharT char_type; | |
typedef int int_type; | |
typedef streamoff off_type; | |
typedef streampos pos_type; | |
typedef mbstate_t state_type; | |
static inline void assign(char_type& __c1, const char_type& __c2) noexcept | |
{__c1 = __c2;} | |
static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept | |
{return __c1 < __c2;} | |
static int compare(const char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static size_t length(const char_type* __s); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static const char_type* find(const char_type* __s, size_t __n, const char_type& __a); | |
static char_type* move(char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* assign(char_type* __s, size_t __n, char_type __a); | |
static inline constexpr int_type not_eof(int_type __c) noexcept | |
{return eq_int_type(__c, eof()) ? ~eof() : __c;} | |
static inline constexpr char_type to_char_type(int_type __c) noexcept | |
{return char_type(__c);} | |
static inline constexpr int_type to_int_type(char_type __c) noexcept | |
{return int_type(__c);} | |
static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr int_type eof() noexcept | |
{return int_type((-1));} | |
}; | |
template <class _CharT> | |
int | |
char_traits<_CharT>::compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
for (; __n; --__n, ++__s1, ++__s2) | |
{ | |
if (lt(*__s1, *__s2)) | |
return -1; | |
if (lt(*__s2, *__s1)) | |
return 1; | |
} | |
return 0; | |
} | |
template <class _CharT> | |
inline | |
size_t | |
char_traits<_CharT>::length(const char_type* __s) | |
{ | |
size_t __len = 0; | |
for (; !eq(*__s, char_type(0)); ++__s) | |
++__len; | |
return __len; | |
} | |
template <class _CharT> | |
inline | |
const _CharT* | |
char_traits<_CharT>::find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
for (; __n; --__n) | |
{ | |
if (eq(*__s, __a)) | |
return __s; | |
++__s; | |
} | |
return 0; | |
} | |
template <class _CharT> | |
_CharT* | |
char_traits<_CharT>::move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
char_type* __r = __s1; | |
if (__s1 < __s2) | |
{ | |
for (; __n; --__n, ++__s1, ++__s2) | |
assign(*__s1, *__s2); | |
} | |
else if (__s2 < __s1) | |
{ | |
__s1 += __n; | |
__s2 += __n; | |
for (; __n; --__n) | |
assign(*--__s1, *--__s2); | |
} | |
return __r; | |
} | |
template <class _CharT> | |
inline | |
_CharT* | |
char_traits<_CharT>::copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
((void)0); | |
char_type* __r = __s1; | |
for (; __n; --__n, ++__s1, ++__s2) | |
assign(*__s1, *__s2); | |
return __r; | |
} | |
template <class _CharT> | |
inline | |
_CharT* | |
char_traits<_CharT>::assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
char_type* __r = __s; | |
for (; __n; --__n, ++__s) | |
assign(*__s, __a); | |
return __r; | |
} | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) char_traits<char> | |
{ | |
typedef char char_type; | |
typedef int int_type; | |
typedef streamoff off_type; | |
typedef streampos pos_type; | |
typedef mbstate_t state_type; | |
static inline void assign(char_type& __c1, const char_type& __c2) noexcept | |
{__c1 = __c2;} | |
static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept | |
{return (unsigned char)__c1 < (unsigned char)__c2;} | |
static inline int compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{return __n == 0 ? 0 : memcmp(__s1, __s2, __n);} | |
static inline size_t length(const char_type* __s) {return strlen(__s);} | |
static inline const char_type* find(const char_type* __s, size_t __n, const char_type& __a) | |
{return __n == 0 ? __null : (const char_type*) memchr(__s, to_int_type(__a), __n);} | |
static inline char_type* move(char_type* __s1, const char_type* __s2, size_t __n) | |
{return __n == 0 ? __s1 : (char_type*) memmove(__s1, __s2, __n);} | |
static inline char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
((void)0); | |
return __n == 0 ? __s1 : (char_type*)memcpy(__s1, __s2, __n); | |
} | |
static inline char_type* assign(char_type* __s, size_t __n, char_type __a) | |
{return __n == 0 ? __s : (char_type*)memset(__s, to_int_type(__a), __n);} | |
static inline constexpr int_type not_eof(int_type __c) noexcept | |
{return eq_int_type(__c, eof()) ? ~eof() : __c;} | |
static inline constexpr char_type to_char_type(int_type __c) noexcept | |
{return char_type(__c);} | |
static inline constexpr int_type to_int_type(char_type __c) noexcept | |
{return int_type((unsigned char)__c);} | |
static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr int_type eof() noexcept | |
{return int_type((-1));} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) char_traits<wchar_t> | |
{ | |
typedef wchar_t char_type; | |
typedef wint_t int_type; | |
typedef streamoff off_type; | |
typedef streampos pos_type; | |
typedef mbstate_t state_type; | |
static inline void assign(char_type& __c1, const char_type& __c2) noexcept | |
{__c1 = __c2;} | |
static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept | |
{return __c1 < __c2;} | |
static inline int compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{return __n == 0 ? 0 : wmemcmp(__s1, __s2, __n);} | |
static inline size_t length(const char_type* __s) | |
{return wcslen(__s);} | |
static inline const char_type* find(const char_type* __s, size_t __n, const char_type& __a) | |
{return __n == 0 ? __null : (const char_type*)wmemchr(__s, __a, __n);} | |
static inline char_type* move(char_type* __s1, const char_type* __s2, size_t __n) | |
{return __n == 0 ? __s1 : (char_type*)wmemmove(__s1, __s2, __n);} | |
static inline char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
((void)0); | |
return __n == 0 ? __s1 : (char_type*)wmemcpy(__s1, __s2, __n); | |
} | |
static inline char_type* assign(char_type* __s, size_t __n, char_type __a) | |
{return __n == 0 ? __s : (char_type*)wmemset(__s, __a, __n);} | |
static inline constexpr int_type not_eof(int_type __c) noexcept | |
{return eq_int_type(__c, eof()) ? ~eof() : __c;} | |
static inline constexpr char_type to_char_type(int_type __c) noexcept | |
{return char_type(__c);} | |
static inline constexpr int_type to_int_type(char_type __c) noexcept | |
{return int_type(__c);} | |
static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr int_type eof() noexcept | |
{return int_type(((__darwin_wint_t)-1));} | |
}; | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) 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 inline void assign(char_type& __c1, const char_type& __c2) noexcept | |
{__c1 = __c2;} | |
static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept | |
{return __c1 < __c2;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static int compare(const char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static size_t length(const char_type* __s); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static const char_type* find(const char_type* __s, size_t __n, const char_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* move(char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* assign(char_type* __s, size_t __n, char_type __a); | |
static inline constexpr int_type not_eof(int_type __c) noexcept | |
{return eq_int_type(__c, eof()) ? ~eof() : __c;} | |
static inline constexpr char_type to_char_type(int_type __c) noexcept | |
{return char_type(__c);} | |
static inline constexpr int_type to_int_type(char_type __c) noexcept | |
{return int_type(__c);} | |
static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr int_type eof() noexcept | |
{return int_type(0xFFFF);} | |
}; | |
inline | |
int | |
char_traits<char16_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
for (; __n; --__n, ++__s1, ++__s2) | |
{ | |
if (lt(*__s1, *__s2)) | |
return -1; | |
if (lt(*__s2, *__s1)) | |
return 1; | |
} | |
return 0; | |
} | |
inline | |
size_t | |
char_traits<char16_t>::length(const char_type* __s) | |
{ | |
size_t __len = 0; | |
for (; !eq(*__s, char_type(0)); ++__s) | |
++__len; | |
return __len; | |
} | |
inline | |
const char16_t* | |
char_traits<char16_t>::find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
for (; __n; --__n) | |
{ | |
if (eq(*__s, __a)) | |
return __s; | |
++__s; | |
} | |
return 0; | |
} | |
inline | |
char16_t* | |
char_traits<char16_t>::move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
char_type* __r = __s1; | |
if (__s1 < __s2) | |
{ | |
for (; __n; --__n, ++__s1, ++__s2) | |
assign(*__s1, *__s2); | |
} | |
else if (__s2 < __s1) | |
{ | |
__s1 += __n; | |
__s2 += __n; | |
for (; __n; --__n) | |
assign(*--__s1, *--__s2); | |
} | |
return __r; | |
} | |
inline | |
char16_t* | |
char_traits<char16_t>::copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
((void)0); | |
char_type* __r = __s1; | |
for (; __n; --__n, ++__s1, ++__s2) | |
assign(*__s1, *__s2); | |
return __r; | |
} | |
inline | |
char16_t* | |
char_traits<char16_t>::assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
char_type* __r = __s; | |
for (; __n; --__n, ++__s) | |
assign(*__s, __a); | |
return __r; | |
} | |
template <> | |
struct __attribute__ ((__type_visibility__("default"))) 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 inline void assign(char_type& __c1, const char_type& __c2) noexcept | |
{__c1 = __c2;} | |
static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept | |
{return __c1 < __c2;} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static int compare(const char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static size_t length(const char_type* __s); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static const char_type* find(const char_type* __s, size_t __n, const char_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* move(char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
static char_type* assign(char_type* __s, size_t __n, char_type __a); | |
static inline constexpr int_type not_eof(int_type __c) noexcept | |
{return eq_int_type(__c, eof()) ? ~eof() : __c;} | |
static inline constexpr char_type to_char_type(int_type __c) noexcept | |
{return char_type(__c);} | |
static inline constexpr int_type to_int_type(char_type __c) noexcept | |
{return int_type(__c);} | |
static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept | |
{return __c1 == __c2;} | |
static inline constexpr int_type eof() noexcept | |
{return int_type(0xFFFFFFFF);} | |
}; | |
inline | |
int | |
char_traits<char32_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
for (; __n; --__n, ++__s1, ++__s2) | |
{ | |
if (lt(*__s1, *__s2)) | |
return -1; | |
if (lt(*__s2, *__s1)) | |
return 1; | |
} | |
return 0; | |
} | |
inline | |
size_t | |
char_traits<char32_t>::length(const char_type* __s) | |
{ | |
size_t __len = 0; | |
for (; !eq(*__s, char_type(0)); ++__s) | |
++__len; | |
return __len; | |
} | |
inline | |
const char32_t* | |
char_traits<char32_t>::find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
for (; __n; --__n) | |
{ | |
if (eq(*__s, __a)) | |
return __s; | |
++__s; | |
} | |
return 0; | |
} | |
inline | |
char32_t* | |
char_traits<char32_t>::move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
char_type* __r = __s1; | |
if (__s1 < __s2) | |
{ | |
for (; __n; --__n, ++__s1, ++__s2) | |
assign(*__s1, *__s2); | |
} | |
else if (__s2 < __s1) | |
{ | |
__s1 += __n; | |
__s2 += __n; | |
for (; __n; --__n) | |
assign(*--__s1, *--__s2); | |
} | |
return __r; | |
} | |
inline | |
char32_t* | |
char_traits<char32_t>::copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
((void)0); | |
char_type* __r = __s1; | |
for (; __n; --__n, ++__s1, ++__s2) | |
assign(*__s1, *__s2); | |
return __r; | |
} | |
inline | |
char32_t* | |
char_traits<char32_t>::assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
char_type* __r = __s; | |
for (; __n; --__n, ++__s) | |
assign(*__s, __a); | |
return __r; | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find(const _CharT *__p, _SizeT __sz, | |
_CharT __c, _SizeT __pos) noexcept | |
{ | |
if (__pos >= __sz) | |
return __npos; | |
const _CharT* __r = _Traits::find(__p + __pos, __sz - __pos, __c); | |
if (__r == 0) | |
return __npos; | |
return static_cast<_SizeT>(__r - __p); | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find(const _CharT *__p, _SizeT __sz, | |
const _CharT* __s, _SizeT __pos, _SizeT __n) noexcept | |
{ | |
if (__pos > __sz || __sz - __pos < __n) | |
return __npos; | |
if (__n == 0) | |
return __pos; | |
const _CharT* __r = | |
std::__1::__search(__p + __pos, __p + __sz, | |
__s, __s + __n, _Traits::eq, | |
random_access_iterator_tag(), random_access_iterator_tag()); | |
if (__r == __p + __sz) | |
return __npos; | |
return static_cast<_SizeT>(__r - __p); | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_rfind(const _CharT *__p, _SizeT __sz, | |
_CharT __c, _SizeT __pos) noexcept | |
{ | |
if (__sz < 1) | |
return __npos; | |
if (__pos < __sz) | |
++__pos; | |
else | |
__pos = __sz; | |
for (const _CharT* __ps = __p + __pos; __ps != __p;) | |
{ | |
if (_Traits::eq(*--__ps, __c)) | |
return static_cast<_SizeT>(__ps - __p); | |
} | |
return __npos; | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_rfind(const _CharT *__p, _SizeT __sz, | |
const _CharT* __s, _SizeT __pos, _SizeT __n) noexcept | |
{ | |
__pos = std::__1::min(__pos, __sz); | |
if (__n < __sz - __pos) | |
__pos += __n; | |
else | |
__pos = __sz; | |
const _CharT* __r = std::__1::__find_end( | |
__p, __p + __pos, __s, __s + __n, _Traits::eq, | |
random_access_iterator_tag(), random_access_iterator_tag()); | |
if (__n > 0 && __r == __p + __pos) | |
return __npos; | |
return static_cast<_SizeT>(__r - __p); | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find_first_of(const _CharT *__p, _SizeT __sz, | |
const _CharT* __s, _SizeT __pos, _SizeT __n) noexcept | |
{ | |
if (__pos >= __sz || __n == 0) | |
return __npos; | |
const _CharT* __r = std::__1::__find_first_of_ce | |
(__p + __pos, __p + __sz, __s, __s + __n, _Traits::eq ); | |
if (__r == __p + __sz) | |
return __npos; | |
return static_cast<_SizeT>(__r - __p); | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find_last_of(const _CharT *__p, _SizeT __sz, | |
const _CharT* __s, _SizeT __pos, _SizeT __n) noexcept | |
{ | |
if (__n != 0) | |
{ | |
if (__pos < __sz) | |
++__pos; | |
else | |
__pos = __sz; | |
for (const _CharT* __ps = __p + __pos; __ps != __p;) | |
{ | |
const _CharT* __r = _Traits::find(__s, __n, *--__ps); | |
if (__r) | |
return static_cast<_SizeT>(__ps - __p); | |
} | |
} | |
return __npos; | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find_first_not_of(const _CharT *__p, _SizeT __sz, | |
const _CharT* __s, _SizeT __pos, _SizeT __n) noexcept | |
{ | |
if (__pos < __sz) | |
{ | |
const _CharT* __pe = __p + __sz; | |
for (const _CharT* __ps = __p + __pos; __ps != __pe; ++__ps) | |
if (_Traits::find(__s, __n, *__ps) == 0) | |
return static_cast<_SizeT>(__ps - __p); | |
} | |
return __npos; | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find_first_not_of(const _CharT *__p, _SizeT __sz, | |
_CharT __c, _SizeT __pos) noexcept | |
{ | |
if (__pos < __sz) | |
{ | |
const _CharT* __pe = __p + __sz; | |
for (const _CharT* __ps = __p + __pos; __ps != __pe; ++__ps) | |
if (!_Traits::eq(*__ps, __c)) | |
return static_cast<_SizeT>(__ps - __p); | |
} | |
return __npos; | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find_last_not_of(const _CharT *__p, _SizeT __sz, | |
const _CharT* __s, _SizeT __pos, _SizeT __n) noexcept | |
{ | |
if (__pos < __sz) | |
++__pos; | |
else | |
__pos = __sz; | |
for (const _CharT* __ps = __p + __pos; __ps != __p;) | |
if (_Traits::find(__s, __n, *--__ps) == 0) | |
return static_cast<_SizeT>(__ps - __p); | |
return __npos; | |
} | |
template<class _CharT, class _SizeT, class _Traits, _SizeT __npos> | |
_SizeT __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
__str_find_last_not_of(const _CharT *__p, _SizeT __sz, | |
_CharT __c, _SizeT __pos) noexcept | |
{ | |
if (__pos < __sz) | |
++__pos; | |
else | |
__pos = __sz; | |
for (const _CharT* __ps = __p + __pos; __ps != __p;) | |
if (!_Traits::eq(*--__ps, __c)) | |
return static_cast<_SizeT>(__ps - __p); | |
return __npos; | |
} | |
template<class _Ptr> | |
size_t __attribute__ ((__visibility__("hidden"), __always_inline__)) __do_string_hash(_Ptr __p, _Ptr __e) | |
{ | |
typedef typename iterator_traits<_Ptr>::value_type value_type; | |
return __murmur2_or_cityhash<size_t>()(__p, (__e-__p)*sizeof(value_type)); | |
} | |
template<class _CharT, class _Traits, class _Allocator> | |
basic_string<_CharT, _Traits, _Allocator> | |
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, | |
const basic_string<_CharT, _Traits, _Allocator>& __y); | |
template<class _CharT, class _Traits, class _Allocator> | |
basic_string<_CharT, _Traits, _Allocator> | |
operator+(const _CharT* __x, const basic_string<_CharT,_Traits,_Allocator>& __y); | |
template<class _CharT, class _Traits, class _Allocator> | |
basic_string<_CharT, _Traits, _Allocator> | |
operator+(_CharT __x, const basic_string<_CharT,_Traits,_Allocator>& __y); | |
template<class _CharT, class _Traits, class _Allocator> | |
basic_string<_CharT, _Traits, _Allocator> | |
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, const _CharT* __y); | |
template<class _CharT, class _Traits, class _Allocator> | |
basic_string<_CharT, _Traits, _Allocator> | |
operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); | |
template <bool> | |
class __attribute__ ((__type_visibility__("default"))) __basic_string_common | |
{ | |
protected: | |
void __throw_length_error() const; | |
void __throw_out_of_range() const; | |
}; | |
template <bool __b> | |
void | |
__basic_string_common<__b>::__throw_length_error() const | |
{ | |
(__builtin_expect(!(!"basic_string length_error"), 0) ? __assert_rtn(__func__, "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string", 1180, "!\"basic_string length_error\"") : (void)0); | |
} | |
template <bool __b> | |
void | |
__basic_string_common<__b>::__throw_out_of_range() const | |
{ | |
(__builtin_expect(!(!"basic_string out_of_range"), 0) ? __assert_rtn(__func__, "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string", 1191, "!\"basic_string out_of_range\"") : (void)0); | |
} | |
extern template class __attribute__ ((__type_visibility__("default"))) __basic_string_common<true>; | |
# 1219 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 3 | |
template<class _CharT, class _Traits, class _Allocator> | |
class __attribute__ ((__type_visibility__("default"))) basic_string | |
: private __basic_string_common<true> | |
{ | |
public: | |
typedef basic_string __self; | |
typedef _Traits traits_type; | |
typedef typename traits_type::char_type value_type; | |
typedef _Allocator allocator_type; | |
typedef allocator_traits<allocator_type> __alloc_traits; | |
typedef typename __alloc_traits::size_type size_type; | |
typedef typename __alloc_traits::difference_type difference_type; | |
typedef value_type& reference; | |
typedef const value_type& const_reference; | |
typedef typename __alloc_traits::pointer pointer; | |
typedef typename __alloc_traits::const_pointer const_pointer; | |
static_assert(is_pod<value_type>::value, "Character type of basic_string must be a POD"); | |
static_assert((is_same<_CharT, value_type>::value), | |
"traits_type::char_type must be the same type as CharT"); | |
static_assert((is_same<typename allocator_type::value_type, value_type>::value), | |
"Allocator::value_type must be same type as value_type"); | |
typedef __wrap_iter<pointer> iterator; | |
typedef __wrap_iter<const_pointer> const_iterator; | |
typedef std::__1::reverse_iterator<iterator> reverse_iterator; | |
typedef std::__1::reverse_iterator<const_iterator> const_reverse_iterator; | |
private: | |
# 1285 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 3 | |
struct __long | |
{ | |
size_type __cap_; | |
size_type __size_; | |
pointer __data_; | |
}; | |
enum {__short_mask = 0x01}; | |
enum {__long_mask = 0x1ul}; | |
enum {__min_cap = (sizeof(__long) - 1)/sizeof(value_type) > 2 ? | |
(sizeof(__long) - 1)/sizeof(value_type) : 2}; | |
struct __short | |
{ | |
union | |
{ | |
unsigned char __size_; | |
value_type __lx; | |
}; | |
value_type __data_[__min_cap]; | |
}; | |
union __ulx{__long __lx; __short __lxx;}; | |
enum {__n_words = sizeof(__ulx) / sizeof(size_type)}; | |
struct __raw | |
{ | |
size_type __words[__n_words]; | |
}; | |
struct __rep | |
{ | |
union | |
{ | |
__long __l; | |
__short __s; | |
__raw __r; | |
}; | |
}; | |
__compressed_pair<__rep, allocator_type> __r_; | |
public: | |
static const size_type npos = -1; | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) basic_string() | |
noexcept(is_nothrow_default_constructible<allocator_type>::value); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) explicit basic_string(const allocator_type& __a) | |
noexcept(is_nothrow_copy_constructible<allocator_type>::value); | |
basic_string(const basic_string& __str); | |
basic_string(const basic_string& __str, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(basic_string&& __str) | |
noexcept(is_nothrow_move_constructible<allocator_type>::value); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(basic_string&& __str, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) basic_string(const value_type* __s); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(const value_type* __s, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(const value_type* __s, size_type __n); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(const value_type* __s, size_type __n, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(size_type __n, value_type __c); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(size_type __n, value_type __c, const allocator_type& __a); | |
basic_string(const basic_string& __str, size_type __pos, size_type __n = npos, | |
const allocator_type& __a = allocator_type()); | |
template<class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(_InputIterator __first, _InputIterator __last); | |
template<class _InputIterator> | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(_InputIterator __first, _InputIterator __last, const allocator_type& __a); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(initializer_list<value_type> __il); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string(initializer_list<value_type> __il, const allocator_type& __a); | |
~basic_string(); | |
basic_string& operator=(const basic_string& __str); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string& operator=(basic_string&& __str) | |
noexcept(__alloc_traits::propagate_on_container_move_assignment::value && is_nothrow_move_assignable<allocator_type>::value); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) basic_string& operator=(const value_type* __s) {return assign(__s);} | |
basic_string& operator=(value_type __c); | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
basic_string& operator=(initializer_list<value_type> __il) {return assign(__il.begin(), __il.size());} | |
# 1420 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string" 3 | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator begin() noexcept | |
{return iterator(__get_pointer());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator begin() const noexcept | |
{return const_iterator(__get_pointer());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
iterator end() noexcept | |
{return iterator(__get_pointer() + size());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator end() const noexcept | |
{return const_iterator(__get_pointer() + size());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator rbegin() noexcept | |
{return reverse_iterator(end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator rbegin() const noexcept | |
{return const_reverse_iterator(end());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
reverse_iterator rend() noexcept | |
{return reverse_iterator(begin());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator rend() const noexcept | |
{return const_reverse_iterator(begin());} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator cbegin() const noexcept | |
{return begin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_iterator cend() const noexcept | |
{return end();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator crbegin() const noexcept | |
{return rbegin();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) | |
const_reverse_iterator crend() const noexcept | |
{return rend();} | |
__attribute__ ((__visibility__("hidden"), __always_inline__)) size_type size() cons |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment